|
|
@@ -34,7 +34,7 @@ struct tradeOrder
|
|
|
|
|
|
tradeOrder od_1[orderNum];
|
|
|
|
|
|
-
|
|
|
+input string Entry_condition_1 = "1"; // from here to start -------------------------------------------------------------
|
|
|
sinput string str = "<><><><><><> Set Object Name <><><><><><>";
|
|
|
input string object_name = "line";
|
|
|
|
|
|
@@ -325,6 +325,56 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+//| |
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+void Entry_Action_2_down(int Store_bos_last_index, int i,int diff)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ind = Store_bos_last_index +1; // reversal candle index
|
|
|
+ reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Print("condition satisfied in downtrend buy trade : ",check_values_less_than_choch_high1(ind,i));
|
|
|
+
|
|
|
+ if(check_values_less_than_choch_high(ind,i) == true)
|
|
|
+ {
|
|
|
+ if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
+ {
|
|
|
+ signal = "buy";
|
|
|
+ time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
|
+ // Print("Place buy order -----------------------------------------------------------------------: ");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ObjectCreate(0,"line14"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iHigh(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iHigh(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+ ObjectCreate(0,"line15"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iLow(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iLow(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+
|
|
|
+ ObjectSetInteger(0,"line14"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
+ ObjectSetInteger(0,"line15"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
+
|
|
|
+ ObjectCreate(0,"line16"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iClose(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iClose(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+ ObjectCreate(0,"line17"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iOpen(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iOpen(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+
|
|
|
+ ObjectSetInteger(0,"line16"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
+ ObjectSetInteger(0,"line17"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
+
|
|
|
+ diff = 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
//+------------------------------------------------------------------+
|
|
|
//| |
|
|
|
//+------------------------------------------------------------------+
|
|
|
@@ -380,6 +430,56 @@ void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+//| |
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+void Entry_Action_2_up(int Store_bos_last_index, int i,int diff)
|
|
|
+ {
|
|
|
+
|
|
|
+ ind = Store_bos_last_index +1; // reversal candle index
|
|
|
+ reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Print("condition satisfied in uptrend sell trade : ",check_values_less_than_choch_low(ind,i));
|
|
|
+
|
|
|
+ if(check_values_less_than_choch_low1(ind,i) == true)
|
|
|
+ {
|
|
|
+ if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
+ {
|
|
|
+ signal = "sell";
|
|
|
+ time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
|
+ // Print("Place sell order -----------------------------------------------------------------------: ");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ObjectCreate(0,"line10"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iHigh(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iHigh(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+ ObjectCreate(0,"line11"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iLow(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iLow(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+
|
|
|
+ ObjectSetInteger(0,"line10"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
+ ObjectSetInteger(0,"line11"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
+
|
|
|
+ ObjectCreate(0,"line12"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iClose(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iClose(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+ ObjectCreate(0,"line13"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iOpen(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iOpen(Symbol(),PERIOD_CURRENT,ind));
|
|
|
+
|
|
|
+ ObjectSetInteger(0,"line12"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
+ ObjectSetInteger(0,"line13"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
//+------------------------------------------------------------------+
|
|
|
//| |
|
|
|
//+------------------------------------------------------------------+
|
|
|
@@ -408,7 +508,20 @@ bool check_values_less_than_choch_high(int diff,int i) // downtrend
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+//| |
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+bool check_values_less_than_choch_high1(int ind,int i) // downtrend
|
|
|
+ {
|
|
|
+ for(int k=ind; k>i; k--)
|
|
|
+ {
|
|
|
+ if(iHigh(Symbol(),PERIOD_CURRENT,k) > iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
//+------------------------------------------------------------------+
|
|
|
//| |
|
|
|
//+------------------------------------------------------------------+
|
|
|
@@ -435,6 +548,21 @@ bool check_values_less_than_choch_low(int diff,int i) // uptrend
|
|
|
|
|
|
}
|
|
|
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+//| |
|
|
|
+//+------------------------------------------------------------------+
|
|
|
+bool check_values_less_than_choch_low1(int ind,int i) // uptrend
|
|
|
+ {
|
|
|
+ for(int k=ind; k>i; k--)
|
|
|
+ {
|
|
|
+
|
|
|
+ if(iLow(Symbol(),PERIOD_CURRENT,k) < iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
//| |
|
|
|
@@ -460,7 +588,9 @@ void choch(int i)
|
|
|
Store_bos_last_index = iBarShift(Symbol(), PERIOD_CURRENT, store_last_bos_index_time, false);
|
|
|
int diff1 = Store_bos_last_index - (i);
|
|
|
|
|
|
- Entry_Action_1_up(Store_bos_last_index,i,diff1);
|
|
|
+ // Entry_Action_1_up(Store_bos_last_index,i,diff1);
|
|
|
+
|
|
|
+ Entry_Action_2_up(Store_bos_last_index,i,diff1);
|
|
|
|
|
|
low = iLow(Symbol(),PERIOD_CURRENT,i);
|
|
|
|
|
|
@@ -562,7 +692,7 @@ void choch(int i)
|
|
|
|
|
|
if(TimeToStruct(time_of_candle,edate))
|
|
|
{
|
|
|
- edate.hour = edate.hour + 2;
|
|
|
+ edate.hour = edate.hour + 1;
|
|
|
edate.min = 0;
|
|
|
edate.sec = 0;
|
|
|
}
|
|
|
@@ -617,7 +747,9 @@ void choch(int i)
|
|
|
Store_bos_last_index = iBarShift(Symbol(), PERIOD_CURRENT, store_last_bos_index_time, false);
|
|
|
int diff = Store_bos_last_index - (i);
|
|
|
|
|
|
- Entry_Action_1_down(Store_bos_last_index,i,diff);
|
|
|
+ //Entry_Action_1_down(Store_bos_last_index,i,diff);
|
|
|
+
|
|
|
+ Entry_Action_2_down(Store_bos_last_index,i,diff);
|
|
|
|
|
|
high = iHigh(Symbol(),PERIOD_CURRENT,i);
|
|
|
|
|
|
@@ -719,7 +851,7 @@ void choch(int i)
|
|
|
|
|
|
if(TimeToStruct(time_of_candle,edate))
|
|
|
{
|
|
|
- edate.hour = edate.hour + 2;
|
|
|
+ edate.hour = edate.hour + 1;
|
|
|
edate.min = 0;
|
|
|
edate.sec = 0;
|
|
|
}
|
|
|
@@ -1414,6 +1546,7 @@ void OnTick()
|
|
|
{
|
|
|
|
|
|
Entry_strategy(1);
|
|
|
+
|
|
|
for(int m=0; m < orderNum; m++)
|
|
|
{
|
|
|
if(od_1[m].choch_index_date_time != 0)
|
|
|
@@ -1493,6 +1626,85 @@ void OnTick()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // for(int m=0; m < orderNum; m++)
|
|
|
+ // {
|
|
|
+ // if(od_1[m].choch_index_date_time != 0)
|
|
|
+ // {
|
|
|
+ //
|
|
|
+ // //Print("current time is ",TimeCurrent());
|
|
|
+ // //Print("time is ",od_1[m].Time_of_candle_For_trade);
|
|
|
+ // //Print("signal is ",od_1[m].Signal);
|
|
|
+ //
|
|
|
+ //
|
|
|
+ // if(TimeCurrent() >= od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "buy" && od_1[m].Time_of_candle_For_trade != 0)
|
|
|
+ // {
|
|
|
+ // // Print("time is greater and signal is buy ",TimeCurrent());
|
|
|
+ //
|
|
|
+ // int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
|
|
|
+ // int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
|
|
|
+ //
|
|
|
+ // // Print("reversal_index_date_time ",od_1[m].reversal_index_date_time);
|
|
|
+ // // Print("choch_index_date_time ",od_1[m].choch_index_date_time);
|
|
|
+ // //
|
|
|
+ // // Print(" high is ",iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx));
|
|
|
+ // // Print("low of current candle ",iLow(Symbol(),PERIOD_CURRENT,0));
|
|
|
+ // // Print("close of chock is ",iClose(Symbol(),PERIOD_CURRENT,close_index));
|
|
|
+ // // Print("close of current candle is ",iClose(Symbol(),PERIOD_CURRENT,0));
|
|
|
+ //
|
|
|
+ // if(iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx) > iLow(Symbol(),PERIOD_CURRENT,1)
|
|
|
+ // && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1))
|
|
|
+ // {
|
|
|
+ // placeBuyTrade();
|
|
|
+ // remove_value_from_structure();
|
|
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
+ // od_1[m].Signal == "";
|
|
|
+ // od_1[m].reversal_index_date_time = 0;
|
|
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
+ //
|
|
|
+ // signal = "";
|
|
|
+ // Print("buy trade placed -------------------------------------------------------------");
|
|
|
+ // Print("time at which trade is placed : ",TimeCurrent());
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // if(TimeCurrent() >= od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "sell" && od_1[m].Time_of_candle_For_trade != 0)
|
|
|
+ // {
|
|
|
+ //
|
|
|
+ // // Print("time is greater and signal is sell ",TimeCurrent());
|
|
|
+ //
|
|
|
+ // int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
|
|
|
+ // int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
|
|
|
+ //
|
|
|
+ // // Print("reversal_index_date_time ",od_1[m].reversal_index_date_time);
|
|
|
+ // // Print("choch_index_date_time ",od_1[m].choch_index_date_time);
|
|
|
+ // //
|
|
|
+ // // Print(" high is ",iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx));
|
|
|
+ // // Print("low of current candle ",iLow(Symbol(),PERIOD_CURRENT,0));
|
|
|
+ // // Print("close of chock is ",iClose(Symbol(),PERIOD_CURRENT,close_index));
|
|
|
+ // // Print("close of current candle is ",iClose(Symbol(),PERIOD_CURRENT,0));
|
|
|
+ //
|
|
|
+ // if(iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx) < iLow(Symbol(),PERIOD_CURRENT,1)
|
|
|
+ // && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1))
|
|
|
+ // {
|
|
|
+ // placeSellTrade();
|
|
|
+ // remove_value_from_structure();
|
|
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
+ // od_1[m].Signal == "";
|
|
|
+ // od_1[m].reversal_index_date_time = 0;
|
|
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
+ // signal = "";
|
|
|
+ // Print("sell trade placed -------------------------------------------------------------");
|
|
|
+ // Print("time at which trade is placed : ",TimeCurrent());
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
}
|