|
|
@@ -299,16 +299,33 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
|
|
299
|
299
|
{
|
|
300
|
300
|
|
|
301
|
301
|
|
|
302
|
|
-
|
|
303
|
|
-//Print("bullish found at index ",j);
|
|
304
|
|
-
|
|
305
|
302
|
ind = Store_bos_last_index +1; // reversal candle index
|
|
306
|
303
|
reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
|
|
|
304
|
+ bool addtional_condition = false;
|
|
|
305
|
+
|
|
|
306
|
+ for(int j=Store_bos_last_index-1; j>i+2; j--)
|
|
|
307
|
+ {
|
|
|
308
|
+ if(checkCandle(j) == "Bearish" && checkCandle(j-1) == "Bearish")
|
|
|
309
|
+ {
|
|
|
310
|
+ if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1) && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
|
|
|
311
|
+ {
|
|
|
312
|
+ addtional_condition = true;
|
|
|
313
|
+ }
|
|
|
314
|
+ }
|
|
|
315
|
+
|
|
|
316
|
+ if(checkCandle(j) == "Bullish" && checkCandle(j-1) == "Bullish")
|
|
|
317
|
+ {
|
|
|
318
|
+ if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1) && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
|
|
|
319
|
+ {
|
|
|
320
|
+ addtional_condition = true;
|
|
|
321
|
+ }
|
|
|
322
|
+ }
|
|
|
323
|
+ }
|
|
307
|
324
|
|
|
308
|
325
|
|
|
309
|
326
|
Print("condition satisfied in downtrend buy trade : ",check_values_less_than_choch_high(ind,i));
|
|
310
|
327
|
|
|
311
|
|
- if(check_values_less_than_choch_high(ind,i) == true)
|
|
|
328
|
+ if(check_values_less_than_choch_high(ind,i) == true && addtional_condition == false)
|
|
312
|
329
|
{
|
|
313
|
330
|
if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
|
|
314
|
331
|
{
|
|
|
@@ -358,9 +375,9 @@ void Entry_Action_2_down(int Store_bos_last_index, int i,int diff)
|
|
358
|
375
|
|
|
359
|
376
|
Print("condition satisfied in downtrend buy trade : ",check_values_less_than_choch_high1(ind,i));
|
|
360
|
377
|
|
|
361
|
|
- if(check_values_less_than_choch_high(ind,i) == true)
|
|
|
378
|
+//if(check_values_less_than_choch_high(ind,i) == true)
|
|
362
|
379
|
{
|
|
363
|
|
- if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
380
|
+ // if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
|
|
364
|
381
|
{
|
|
365
|
382
|
signal = "buy";
|
|
366
|
383
|
time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
|
@@ -400,12 +417,31 @@ void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
|
|
400
|
417
|
ind = Store_bos_last_index +1; // reversal candle index
|
|
401
|
418
|
reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
|
|
402
|
419
|
|
|
|
420
|
+ bool addtional_condition = false;
|
|
403
|
421
|
|
|
|
422
|
+ for(int j=Store_bos_last_index-1; j>i+2; j--)
|
|
|
423
|
+ {
|
|
|
424
|
+ if(checkCandle(j) == "Bearish" && checkCandle(j-1) == "Bearish")
|
|
|
425
|
+ {
|
|
|
426
|
+ if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1) && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
|
|
|
427
|
+ {
|
|
|
428
|
+ addtional_condition = true;
|
|
|
429
|
+ }
|
|
|
430
|
+ }
|
|
|
431
|
+
|
|
|
432
|
+ if(checkCandle(j) == "Bullish" && checkCandle(j-1) == "Bullish")
|
|
|
433
|
+ {
|
|
|
434
|
+ if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1) && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
|
|
|
435
|
+ {
|
|
|
436
|
+ addtional_condition = true;
|
|
|
437
|
+ }
|
|
|
438
|
+ }
|
|
|
439
|
+ }
|
|
404
|
440
|
|
|
405
|
441
|
|
|
406
|
442
|
Print("condition satisfied in uptrend sell trade : ",check_values_less_than_choch_low(ind,i));
|
|
407
|
443
|
|
|
408
|
|
- if(check_values_less_than_choch_low(ind,i) == true)
|
|
|
444
|
+ if(check_values_less_than_choch_low(ind,i) == true && addtional_condition == false)
|
|
409
|
445
|
{
|
|
410
|
446
|
if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
|
|
411
|
447
|
{
|
|
|
@@ -454,9 +490,9 @@ void Entry_Action_2_up(int Store_bos_last_index, int i,int diff)
|
|
454
|
490
|
|
|
455
|
491
|
Print("condition satisfied in uptrend sell trade : ",check_values_less_than_choch_low(ind,i));
|
|
456
|
492
|
|
|
457
|
|
- if(check_values_less_than_choch_low1(ind,i) == true)
|
|
|
493
|
+// if(check_values_less_than_choch_low1(ind,i) == true)
|
|
458
|
494
|
{
|
|
459
|
|
- if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
495
|
+ // if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
|
|
460
|
496
|
{
|
|
461
|
497
|
signal = "sell";
|
|
462
|
498
|
time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
|
@@ -608,20 +644,12 @@ void choch(int i)
|
|
608
|
644
|
HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index); // save high and low of the chock prev index to compare
|
|
609
|
645
|
LOW = iLow(Symbol(),PERIOD_CURRENT,chock_index);
|
|
610
|
646
|
|
|
611
|
|
- Print("from where you start ",chock_index);
|
|
612
|
|
-
|
|
613
|
647
|
|
|
614
|
648
|
if(object_find("target line") > 0)
|
|
615
|
649
|
{
|
|
616
|
650
|
ObjectDelete(0,"target line");
|
|
617
|
651
|
}
|
|
618
|
652
|
|
|
619
|
|
- //if(!ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
|
|
620
|
|
- // {
|
|
621
|
|
- // Print("time at which error accur ",iTime(Symbol(),PERIOD_CURRENT,i));
|
|
622
|
|
- // Print("object error ",GetLastError());
|
|
623
|
|
- // }
|
|
624
|
|
-
|
|
625
|
653
|
if(ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
|
|
626
|
654
|
{
|
|
627
|
655
|
Print("object created from uptrend to downtrend ");
|
|
|
@@ -643,7 +671,6 @@ void choch(int i)
|
|
643
|
671
|
choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
644
|
672
|
|
|
645
|
673
|
int chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
|
|
646
|
|
- Print("from where you end ",chock_index1);
|
|
647
|
674
|
|
|
648
|
675
|
bool condition_not_match = false;
|
|
649
|
676
|
for(int p=chock_index - 2 ; p > chock_index1; p--)
|
|
|
@@ -659,7 +686,7 @@ void choch(int i)
|
|
659
|
686
|
HIGH = 0.0;
|
|
660
|
687
|
LOW = 0.0;
|
|
661
|
688
|
tp_date_time_sell = 0.0;
|
|
662
|
|
- Print("TArget line deleted");
|
|
|
689
|
+ Print("Target line deleted in choch");
|
|
663
|
690
|
condition_not_match = false;
|
|
664
|
691
|
|
|
665
|
692
|
if(object_find("target line") > 0)
|
|
|
@@ -696,41 +723,49 @@ void choch(int i)
|
|
696
|
723
|
if(TimeToStruct(time_of_candle,edate))
|
|
697
|
724
|
{
|
|
698
|
725
|
edate.hour = 0;
|
|
699
|
|
- edate.min = edate.min + 2;
|
|
|
726
|
+ edate.min = edate.min + 1;
|
|
700
|
727
|
edate.sec = 0;
|
|
701
|
728
|
}
|
|
|
729
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
730
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
702
|
731
|
break;
|
|
703
|
732
|
case PERIOD_M5:
|
|
704
|
733
|
current_time_frame_string = "5 minutes";
|
|
705
|
734
|
if(TimeToStruct(time_of_candle,edate))
|
|
706
|
735
|
{
|
|
707
|
736
|
edate.hour = 0;
|
|
708
|
|
- edate.min = edate.min + 10;
|
|
|
737
|
+ edate.min = edate.min + 5;
|
|
709
|
738
|
edate.sec = 0;
|
|
710
|
739
|
}
|
|
|
740
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
741
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
711
|
742
|
break;
|
|
712
|
743
|
case PERIOD_M15:
|
|
713
|
744
|
current_time_frame_string = "15 minutes";
|
|
714
|
745
|
if(TimeToStruct(time_of_candle,edate))
|
|
715
|
746
|
{
|
|
716
|
747
|
edate.hour = 0;
|
|
717
|
|
- edate.min = edate.min + 30;
|
|
|
748
|
+ edate.min = edate.min + 15;
|
|
718
|
749
|
edate.sec = 0;
|
|
719
|
750
|
}
|
|
|
751
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
752
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
720
|
753
|
break;
|
|
721
|
754
|
case PERIOD_M30:
|
|
722
|
755
|
current_time_frame_string = "30 minutes";
|
|
723
|
756
|
if(TimeToStruct(time_of_candle,edate))
|
|
724
|
757
|
{
|
|
725
|
758
|
edate.hour = 0;
|
|
726
|
|
- edate.min = edate.min + 60;
|
|
|
759
|
+ edate.min = edate.min + 30;
|
|
727
|
760
|
edate.sec = 0;
|
|
728
|
761
|
}
|
|
|
762
|
+
|
|
|
763
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
764
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
|
765
|
+
|
|
729
|
766
|
break;
|
|
730
|
767
|
case PERIOD_H1:
|
|
731
|
768
|
current_time_frame_string = "1 hour";
|
|
732
|
|
-
|
|
733
|
|
-
|
|
734
|
769
|
if(TimeToStruct(time_of_candle,edate))
|
|
735
|
770
|
{
|
|
736
|
771
|
edate.hour = edate.hour + 1;
|
|
|
@@ -739,15 +774,21 @@ void choch(int i)
|
|
739
|
774
|
}
|
|
740
|
775
|
|
|
741
|
776
|
time_to_place_trade = StructToTime(edate);
|
|
742
|
|
-
|
|
743
|
|
- // Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
|
|
744
|
777
|
store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
745
|
778
|
|
|
746
|
|
- //Print("choch_index_time ",choch_index_time);
|
|
747
|
|
- //Print("reversal_bar_time ",reversal_bar_time);
|
|
748
|
|
- //Print("time_of_candle",time_of_candle);
|
|
749
|
|
- //Print("time_to_place_trade",time_to_place_trade);
|
|
750
|
|
- //Print("signal is ",signal);
|
|
|
779
|
+ break;
|
|
|
780
|
+
|
|
|
781
|
+ case PERIOD_H4:
|
|
|
782
|
+ current_time_frame_string = "4 hour";
|
|
|
783
|
+ if(TimeToStruct(time_of_candle,edate))
|
|
|
784
|
+ {
|
|
|
785
|
+ edate.hour = edate.hour + 4;
|
|
|
786
|
+ edate.min = 0;
|
|
|
787
|
+ edate.sec = 0;
|
|
|
788
|
+ }
|
|
|
789
|
+
|
|
|
790
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
791
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
751
|
792
|
|
|
752
|
793
|
break;
|
|
753
|
794
|
|
|
|
@@ -756,8 +797,6 @@ void choch(int i)
|
|
756
|
797
|
break;
|
|
757
|
798
|
}
|
|
758
|
799
|
|
|
759
|
|
-
|
|
760
|
|
- //signal = "";
|
|
761
|
800
|
}
|
|
762
|
801
|
|
|
763
|
802
|
signal = "";
|
|
|
@@ -789,73 +828,7 @@ void choch(int i)
|
|
789
|
828
|
|
|
790
|
829
|
trend = "downtrend";
|
|
791
|
830
|
|
|
792
|
|
- // choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
793
|
|
- // -----------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
794
|
|
- // chock_index = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
|
|
795
|
|
- // chock_index++;
|
|
796
|
|
- //
|
|
797
|
|
- // HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index); // save high and low of the chock prev index to compare
|
|
798
|
|
- // LOW = iLow(Symbol(),PERIOD_CURRENT,chock_index);
|
|
799
|
|
- //
|
|
800
|
|
- // Print("from where you start ",chock_index);
|
|
801
|
|
- //
|
|
802
|
|
- //
|
|
803
|
|
- // if(object_find("target line") > 0)
|
|
804
|
|
- // {
|
|
805
|
|
- // ObjectDelete(0,"target line");
|
|
806
|
|
- // }
|
|
807
|
|
- //
|
|
808
|
|
- // if(!ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
|
|
809
|
|
- // {
|
|
810
|
|
- // Print("object error ",GetLastError());
|
|
811
|
|
- // }
|
|
812
|
|
- // ObjectSetInteger(0,"target line",OBJPROP_RAY_RIGHT,true);
|
|
813
|
|
- // ObjectSetInteger(0,"target line",OBJPROP_COLOR,clrGreen);
|
|
814
|
|
- //
|
|
815
|
|
- // if(object_find("target line1") > 0)
|
|
816
|
|
- // {
|
|
817
|
|
- // ObjectDelete(0,"target line1");
|
|
818
|
|
- // }
|
|
819
|
|
- //
|
|
820
|
|
- // ObjectCreate(0,"target line1",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iLow(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iLow(Symbol(),PERIOD_CURRENT,chock_index));
|
|
821
|
|
- // ObjectSetInteger(0,"target line1",OBJPROP_RAY_RIGHT,true);
|
|
822
|
|
- // ObjectSetInteger(0,"target line1",OBJPROP_COLOR,clrGreen);
|
|
823
|
|
- //
|
|
824
|
|
- //
|
|
825
|
|
- // choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
826
|
|
- //
|
|
827
|
|
- // chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
|
|
828
|
|
- // Print("from where you end ",chock_index1);
|
|
829
|
|
- //
|
|
830
|
|
- // condition_not_match = false;
|
|
831
|
|
- // for(int p=chock_index - 1 ; p >=chock_index1; p--)
|
|
832
|
|
- // {
|
|
833
|
|
- // if(iLow(Symbol(),PERIOD_CURRENT,p) < HIGH)
|
|
834
|
|
- // {
|
|
835
|
|
- // condition_not_match = true;
|
|
836
|
|
- // }
|
|
837
|
|
- // }
|
|
838
|
|
- //
|
|
839
|
|
- // if(condition_not_match == true)
|
|
840
|
|
- // {
|
|
841
|
|
- // Print("TArget line deleted");
|
|
842
|
|
- // HIGH = 0.0;
|
|
843
|
|
- // LOW = 0.0;
|
|
844
|
|
- // condition_not_match = false;
|
|
845
|
|
- //
|
|
846
|
|
- // if(object_find("target line") > 0)
|
|
847
|
|
- // {
|
|
848
|
|
- // ObjectDelete(0,"target line");
|
|
849
|
|
- // }
|
|
850
|
|
- //
|
|
851
|
|
- // if(object_find("target line1") > 0)
|
|
852
|
|
- // {
|
|
853
|
|
- // ObjectDelete(0,"target line1");
|
|
854
|
|
- // }
|
|
855
|
|
- //
|
|
856
|
|
- // }
|
|
857
|
831
|
|
|
858
|
|
- //-------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
859
|
832
|
if(signal == "sell")
|
|
860
|
833
|
{
|
|
861
|
834
|
MqlDateTime edate;
|
|
|
@@ -876,6 +849,8 @@ void choch(int i)
|
|
876
|
849
|
edate.min = edate.min + 2;
|
|
877
|
850
|
edate.sec = 0;
|
|
878
|
851
|
}
|
|
|
852
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
853
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
879
|
854
|
break;
|
|
880
|
855
|
case PERIOD_M5:
|
|
881
|
856
|
current_time_frame_string = "5 minutes";
|
|
|
@@ -885,6 +860,8 @@ void choch(int i)
|
|
885
|
860
|
edate.min = edate.min + 10;
|
|
886
|
861
|
edate.sec = 0;
|
|
887
|
862
|
}
|
|
|
863
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
864
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
888
|
865
|
break;
|
|
889
|
866
|
case PERIOD_M15:
|
|
890
|
867
|
current_time_frame_string = "15 minutes";
|
|
|
@@ -894,6 +871,8 @@ void choch(int i)
|
|
894
|
871
|
edate.min = edate.min + 30;
|
|
895
|
872
|
edate.sec = 0;
|
|
896
|
873
|
}
|
|
|
874
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
875
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
897
|
876
|
break;
|
|
898
|
877
|
case PERIOD_M30:
|
|
899
|
878
|
current_time_frame_string = "30 minutes";
|
|
|
@@ -903,29 +882,34 @@ void choch(int i)
|
|
903
|
882
|
edate.min = edate.min + 60;
|
|
904
|
883
|
edate.sec = 0;
|
|
905
|
884
|
}
|
|
|
885
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
886
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
906
|
887
|
break;
|
|
907
|
888
|
case PERIOD_H1:
|
|
908
|
889
|
current_time_frame_string = "1 hour";
|
|
|
890
|
+ if(TimeToStruct(time_of_candle,edate))
|
|
|
891
|
+ {
|
|
|
892
|
+ edate.hour = edate.hour + 2;
|
|
|
893
|
+ edate.min = 0;
|
|
|
894
|
+ edate.sec = 0;
|
|
|
895
|
+ }
|
|
|
896
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
897
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
909
|
898
|
|
|
|
899
|
+ break;
|
|
910
|
900
|
|
|
|
901
|
+ case PERIOD_H4:
|
|
|
902
|
+ current_time_frame_string = "4 hour";
|
|
911
|
903
|
if(TimeToStruct(time_of_candle,edate))
|
|
912
|
904
|
{
|
|
913
|
|
- edate.hour = edate.hour + 2;
|
|
|
905
|
+ edate.hour = edate.hour + 8;
|
|
914
|
906
|
edate.min = 0;
|
|
915
|
907
|
edate.sec = 0;
|
|
916
|
908
|
}
|
|
917
|
909
|
|
|
918
|
910
|
time_to_place_trade = StructToTime(edate);
|
|
919
|
|
-
|
|
920
|
|
- Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
|
|
921
|
911
|
store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
922
|
912
|
|
|
923
|
|
- //Print("choch_index_time ",choch_index_time);
|
|
924
|
|
- //Print("reversal_bar_time ",reversal_bar_time);
|
|
925
|
|
- //Print("time_of_candle",time_of_candle);
|
|
926
|
|
- //Print("time_to_place_trade",time_to_place_trade);
|
|
927
|
|
- //Print("signal is ",signal);
|
|
928
|
|
-
|
|
929
|
913
|
break;
|
|
930
|
914
|
|
|
931
|
915
|
default:
|
|
|
@@ -933,8 +917,6 @@ void choch(int i)
|
|
933
|
917
|
break;
|
|
934
|
918
|
}
|
|
935
|
919
|
|
|
936
|
|
-
|
|
937
|
|
- //signal = "";
|
|
938
|
920
|
}
|
|
939
|
921
|
|
|
940
|
922
|
signal = "";
|
|
|
@@ -996,9 +978,6 @@ void choch(int i)
|
|
996
|
978
|
HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index); // save high and low of the chock prev index to compare
|
|
997
|
979
|
LOW = iLow(Symbol(),PERIOD_CURRENT,chock_index);
|
|
998
|
980
|
|
|
999
|
|
- Print("from where you start ",chock_index);
|
|
1000
|
|
-
|
|
1001
|
|
-
|
|
1002
|
981
|
|
|
1003
|
982
|
if(object_find("target line") > 0)
|
|
1004
|
983
|
{
|
|
|
@@ -1006,12 +985,6 @@ void choch(int i)
|
|
1006
|
985
|
}
|
|
1007
|
986
|
|
|
1008
|
987
|
|
|
1009
|
|
- //if(!ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
|
|
1010
|
|
- // {
|
|
1011
|
|
- // Print("time at which error accur in downtrend to uptrend ",iTime(Symbol(),PERIOD_CURRENT,i));
|
|
1012
|
|
- // Print("object error ",GetLastError());
|
|
1013
|
|
- // }
|
|
1014
|
|
-
|
|
1015
|
988
|
if(ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
|
|
1016
|
989
|
{
|
|
1017
|
990
|
Print("object created from downtrend to uptrend ");
|
|
|
@@ -1032,22 +1005,13 @@ void choch(int i)
|
|
1032
|
1005
|
|
|
1033
|
1006
|
choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
1034
|
1007
|
int chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
|
|
1035
|
|
- Print("from where you end ",chock_index1);
|
|
1036
|
1008
|
|
|
1037
|
1009
|
bool condition_not_match = false;
|
|
1038
|
|
- Print("time of chock_index - 2 is", iTime(Symbol(),PERIOD_CURRENT,chock_index-2));
|
|
1039
|
|
- Print("time of current candle is ",iTime(Symbol(),PERIOD_CURRENT,1));
|
|
1040
|
1010
|
|
|
1041
|
1011
|
for(int p=chock_index - 2 ; p > chock_index1; p--)
|
|
1042
|
1012
|
{
|
|
1043
|
|
- // Print("index is ",p," time is ", iTime(Symbol(),PERIOD_CURRENT,p));
|
|
1044
|
|
- // Print("high is ", iHigh(Symbol(),PERIOD_CURRENT,chock_index)," low is ",LOW);
|
|
1045
|
|
-
|
|
1046
|
1013
|
if(iHigh(Symbol(),PERIOD_CURRENT,p) > LOW)
|
|
1047
|
1014
|
{
|
|
1048
|
|
- Print("here the condition is get false ");
|
|
1049
|
|
- Print("high is ", iHigh(Symbol(),PERIOD_CURRENT,p)," low is ",LOW);
|
|
1050
|
|
- Print("index is ",p," time is ", iTime(Symbol(),PERIOD_CURRENT,p));
|
|
1051
|
1015
|
condition_not_match = true;
|
|
1052
|
1016
|
}
|
|
1053
|
1017
|
}
|
|
|
@@ -1094,41 +1058,47 @@ void choch(int i)
|
|
1094
|
1058
|
if(TimeToStruct(time_of_candle,edate))
|
|
1095
|
1059
|
{
|
|
1096
|
1060
|
edate.hour = 0;
|
|
1097
|
|
- edate.min = edate.min + 2;
|
|
|
1061
|
+ edate.min = edate.min + 1;
|
|
1098
|
1062
|
edate.sec = 0;
|
|
1099
|
1063
|
}
|
|
|
1064
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1065
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
1100
|
1066
|
break;
|
|
1101
|
1067
|
case PERIOD_M5:
|
|
1102
|
1068
|
current_time_frame_string = "5 minutes";
|
|
1103
|
1069
|
if(TimeToStruct(time_of_candle,edate))
|
|
1104
|
1070
|
{
|
|
1105
|
1071
|
edate.hour = 0;
|
|
1106
|
|
- edate.min = edate.min + 10;
|
|
|
1072
|
+ edate.min = edate.min + 5;
|
|
1107
|
1073
|
edate.sec = 0;
|
|
1108
|
1074
|
}
|
|
|
1075
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1076
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
1109
|
1077
|
break;
|
|
1110
|
1078
|
case PERIOD_M15:
|
|
1111
|
1079
|
current_time_frame_string = "15 minutes";
|
|
1112
|
1080
|
if(TimeToStruct(time_of_candle,edate))
|
|
1113
|
1081
|
{
|
|
1114
|
1082
|
edate.hour = 0;
|
|
1115
|
|
- edate.min = edate.min + 30;
|
|
|
1083
|
+ edate.min = edate.min + 15;
|
|
1116
|
1084
|
edate.sec = 0;
|
|
1117
|
1085
|
}
|
|
|
1086
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1087
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
1118
|
1088
|
break;
|
|
1119
|
1089
|
case PERIOD_M30:
|
|
1120
|
1090
|
current_time_frame_string = "30 minutes";
|
|
1121
|
1091
|
if(TimeToStruct(time_of_candle,edate))
|
|
1122
|
1092
|
{
|
|
1123
|
1093
|
edate.hour = 0;
|
|
1124
|
|
- edate.min = edate.min + 60;
|
|
|
1094
|
+ edate.min = edate.min + 30;
|
|
1125
|
1095
|
edate.sec = 0;
|
|
1126
|
1096
|
}
|
|
|
1097
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1098
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
1127
|
1099
|
break;
|
|
1128
|
1100
|
case PERIOD_H1:
|
|
1129
|
1101
|
current_time_frame_string = "1 hour";
|
|
1130
|
|
-
|
|
1131
|
|
-
|
|
1132
|
1102
|
if(TimeToStruct(time_of_candle,edate))
|
|
1133
|
1103
|
{
|
|
1134
|
1104
|
edate.hour = edate.hour + 1;
|
|
|
@@ -1137,16 +1107,20 @@ void choch(int i)
|
|
1137
|
1107
|
}
|
|
1138
|
1108
|
|
|
1139
|
1109
|
time_to_place_trade = StructToTime(edate);
|
|
1140
|
|
-
|
|
1141
|
|
- Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
|
|
1142
|
1110
|
store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
|
1111
|
+ break;
|
|
1143
|
1112
|
|
|
1144
|
|
- //Print("choch_index_time ",choch_index_time);
|
|
1145
|
|
- //Print("reversal_bar_time ",reversal_bar_time);
|
|
1146
|
|
- //Print("time_of_candle",time_of_candle);
|
|
1147
|
|
- //Print("time_to_place_trade",time_to_place_trade);
|
|
1148
|
|
- //Print("signal is ",signal);
|
|
|
1113
|
+ case PERIOD_H4:
|
|
|
1114
|
+ current_time_frame_string = "4 hour";
|
|
|
1115
|
+ if(TimeToStruct(time_of_candle,edate))
|
|
|
1116
|
+ {
|
|
|
1117
|
+ edate.hour = edate.hour + 4;
|
|
|
1118
|
+ edate.min = 0;
|
|
|
1119
|
+ edate.sec = 0;
|
|
|
1120
|
+ }
|
|
1149
|
1121
|
|
|
|
1122
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1123
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
|
|
1150
|
1124
|
break;
|
|
1151
|
1125
|
|
|
1152
|
1126
|
default:
|
|
|
@@ -1162,13 +1136,6 @@ void choch(int i)
|
|
1162
|
1136
|
Entry_Action_2_down(Store_bos_last_index,i,diff);
|
|
1163
|
1137
|
a = 2;
|
|
1164
|
1138
|
|
|
1165
|
|
-
|
|
1166
|
|
-
|
|
1167
|
|
-
|
|
1168
|
|
-
|
|
1169
|
|
-
|
|
1170
|
|
-
|
|
1171
|
|
-
|
|
1172
|
1139
|
high = iHigh(Symbol(),PERIOD_CURRENT,i);
|
|
1173
|
1140
|
|
|
1174
|
1141
|
high_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
|
@@ -1187,69 +1154,6 @@ void choch(int i)
|
|
1187
|
1154
|
|
|
1188
|
1155
|
trend = "uptrend";
|
|
1189
|
1156
|
|
|
1190
|
|
- // choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
1191
|
|
- //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
1192
|
|
- // chock_index = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
|
|
1193
|
|
- // chock_index++;
|
|
1194
|
|
- //
|
|
1195
|
|
- // HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index); // save high and low of the chock prev index to compare
|
|
1196
|
|
- // LOW = iLow(Symbol(),PERIOD_CURRENT,chock_index);
|
|
1197
|
|
- //
|
|
1198
|
|
- // Print("from where you start ",chock_index);
|
|
1199
|
|
- //
|
|
1200
|
|
- //
|
|
1201
|
|
- //
|
|
1202
|
|
- // if(object_find("target line") > 0)
|
|
1203
|
|
- // {
|
|
1204
|
|
- // ObjectDelete(0,"target line");
|
|
1205
|
|
- // }
|
|
1206
|
|
- //
|
|
1207
|
|
- // ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index));
|
|
1208
|
|
- // ObjectSetInteger(0,"target line",OBJPROP_RAY_RIGHT,true);
|
|
1209
|
|
- // ObjectSetInteger(0,"target line",OBJPROP_COLOR,clrGreen);
|
|
1210
|
|
- //
|
|
1211
|
|
- // if(object_find("target line1") > 0)
|
|
1212
|
|
- // {
|
|
1213
|
|
- // ObjectDelete(0,"target line1");
|
|
1214
|
|
- // }
|
|
1215
|
|
- //
|
|
1216
|
|
- // ObjectCreate(0,"target line1",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iLow(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iLow(Symbol(),PERIOD_CURRENT,chock_index));
|
|
1217
|
|
- // ObjectSetInteger(0,"target line1",OBJPROP_RAY_RIGHT,true);
|
|
1218
|
|
- // ObjectSetInteger(0,"target line1",OBJPROP_COLOR,clrGreen);
|
|
1219
|
|
- //
|
|
1220
|
|
- // choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
1221
|
|
- // chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
|
|
1222
|
|
- // Print("from where you end ",chock_index1);
|
|
1223
|
|
- //
|
|
1224
|
|
- // condition_not_match = false;
|
|
1225
|
|
- // for(int p=chock_index - 1 ; p >=chock_index1; p--)
|
|
1226
|
|
- // {
|
|
1227
|
|
- // if(iHigh(Symbol(),PERIOD_CURRENT,p) > LOW)
|
|
1228
|
|
- // {
|
|
1229
|
|
- // condition_not_match = true;
|
|
1230
|
|
- // }
|
|
1231
|
|
- // }
|
|
1232
|
|
- //
|
|
1233
|
|
- // if(condition_not_match == true)
|
|
1234
|
|
- // {
|
|
1235
|
|
- // HIGH = 0.0;
|
|
1236
|
|
- // LOW = 0.0;
|
|
1237
|
|
- // Print("line target deleted :");
|
|
1238
|
|
- // condition_not_match = false;
|
|
1239
|
|
- //
|
|
1240
|
|
- // if(object_find("target line") > 0)
|
|
1241
|
|
- // {
|
|
1242
|
|
- // ObjectDelete(0,"target line");
|
|
1243
|
|
- // }
|
|
1244
|
|
- //
|
|
1245
|
|
- // if(object_find("target line1") > 0)
|
|
1246
|
|
- // {
|
|
1247
|
|
- // ObjectDelete(0,"target line1");
|
|
1248
|
|
- // }
|
|
1249
|
|
- //
|
|
1250
|
|
- // }
|
|
1251
|
|
-
|
|
1252
|
|
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
1253
|
1157
|
if(signal == "buy")
|
|
1254
|
1158
|
{
|
|
1255
|
1159
|
MqlDateTime edate;
|
|
|
@@ -1270,6 +1174,8 @@ void choch(int i)
|
|
1270
|
1174
|
edate.min = edate.min + 2;
|
|
1271
|
1175
|
edate.sec = 0;
|
|
1272
|
1176
|
}
|
|
|
1177
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1178
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
1273
|
1179
|
break;
|
|
1274
|
1180
|
case PERIOD_M5:
|
|
1275
|
1181
|
current_time_frame_string = "5 minutes";
|
|
|
@@ -1279,6 +1185,8 @@ void choch(int i)
|
|
1279
|
1185
|
edate.min = edate.min + 10;
|
|
1280
|
1186
|
edate.sec = 0;
|
|
1281
|
1187
|
}
|
|
|
1188
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1189
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
1282
|
1190
|
break;
|
|
1283
|
1191
|
case PERIOD_M15:
|
|
1284
|
1192
|
current_time_frame_string = "15 minutes";
|
|
|
@@ -1288,6 +1196,8 @@ void choch(int i)
|
|
1288
|
1196
|
edate.min = edate.min + 30;
|
|
1289
|
1197
|
edate.sec = 0;
|
|
1290
|
1198
|
}
|
|
|
1199
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1200
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
1291
|
1201
|
break;
|
|
1292
|
1202
|
case PERIOD_M30:
|
|
1293
|
1203
|
current_time_frame_string = "30 minutes";
|
|
|
@@ -1297,29 +1207,31 @@ void choch(int i)
|
|
1297
|
1207
|
edate.min = edate.min + 60;
|
|
1298
|
1208
|
edate.sec = 0;
|
|
1299
|
1209
|
}
|
|
|
1210
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1211
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
1300
|
1212
|
break;
|
|
1301
|
1213
|
case PERIOD_H1:
|
|
1302
|
1214
|
current_time_frame_string = "1 hour";
|
|
1303
|
|
-
|
|
1304
|
|
-
|
|
1305
|
1215
|
if(TimeToStruct(time_of_candle,edate))
|
|
1306
|
1216
|
{
|
|
1307
|
1217
|
edate.hour = edate.hour + 2;
|
|
1308
|
1218
|
edate.min = 0;
|
|
1309
|
1219
|
edate.sec = 0;
|
|
1310
|
1220
|
}
|
|
1311
|
|
-
|
|
1312
|
1221
|
time_to_place_trade = StructToTime(edate);
|
|
1313
|
|
-
|
|
1314
|
|
- Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
|
|
1315
|
1222
|
store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
|
1223
|
+ break;
|
|
1316
|
1224
|
|
|
1317
|
|
- //Print("choch_index_time ",choch_index_time);
|
|
1318
|
|
- //Print("reversal_bar_time ",reversal_bar_time);
|
|
1319
|
|
- //Print("time_of_candle",time_of_candle);
|
|
1320
|
|
- //Print("time_to_place_trade",time_to_place_trade);
|
|
1321
|
|
- //Print("signal is ",signal);
|
|
1322
|
|
-
|
|
|
1225
|
+ case PERIOD_H4:
|
|
|
1226
|
+ current_time_frame_string = "4 hour";
|
|
|
1227
|
+ if(TimeToStruct(time_of_candle,edate))
|
|
|
1228
|
+ {
|
|
|
1229
|
+ edate.hour = edate.hour + 8;
|
|
|
1230
|
+ edate.min = 0;
|
|
|
1231
|
+ edate.sec = 0;
|
|
|
1232
|
+ }
|
|
|
1233
|
+ time_to_place_trade = StructToTime(edate);
|
|
|
1234
|
+ store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
|
|
1323
|
1235
|
break;
|
|
1324
|
1236
|
|
|
1325
|
1237
|
default:
|
|
|
@@ -2103,70 +2015,6 @@ void OnTick()
|
|
2103
|
2015
|
if(NewBar() == true)
|
|
2104
|
2016
|
{
|
|
2105
|
2017
|
|
|
2106
|
|
- int dx = iBarShift(Symbol(), PERIOD_CURRENT,choch_index_time, false);
|
|
2107
|
|
-//
|
|
2108
|
|
-// double HI = iHigh(Symbol(),PERIOD_CURRENT,dx+1); // save high and low of the chock prev index to compare
|
|
2109
|
|
-// double LO = iLow(Symbol(),PERIOD_CURRENT,dx+1);
|
|
2110
|
|
-// if(trend == "downtrend")
|
|
2111
|
|
-// {
|
|
2112
|
|
-// for(int p=dx-1; p >= 1; p--)
|
|
2113
|
|
-// {
|
|
2114
|
|
-// if(iHigh(Symbol(),PERIOD_CURRENT,p) > LO)
|
|
2115
|
|
-// {
|
|
2116
|
|
-// tp_date_time_sell = 0.0;
|
|
2117
|
|
-// Print("high is ",iHigh(Symbol(),PERIOD_CURRENT,p), "and index of high is ",p);
|
|
2118
|
|
-// Print("TArget line deleted in on tick "," at index p", " and time period is ",iTime(Symbol(),PERIOD_CURRENT,p));
|
|
2119
|
|
-//
|
|
2120
|
|
-//
|
|
2121
|
|
-// if(object_find("target line") > 0)
|
|
2122
|
|
-// {
|
|
2123
|
|
-// ObjectDelete(0,"target line");
|
|
2124
|
|
-// }
|
|
2125
|
|
-//
|
|
2126
|
|
-// if(object_find("target line1") > 0)
|
|
2127
|
|
-// {
|
|
2128
|
|
-// ObjectDelete(0,"target line1");
|
|
2129
|
|
-// }
|
|
2130
|
|
-// break;
|
|
2131
|
|
-// }
|
|
2132
|
|
-// }
|
|
2133
|
|
-// }
|
|
2134
|
|
-//
|
|
2135
|
|
-// if(trend == "uptrend")
|
|
2136
|
|
-// {
|
|
2137
|
|
-// for(int p=dx-1; p >= 1; p--)
|
|
2138
|
|
-// {
|
|
2139
|
|
-// if(iLow(Symbol(),PERIOD_CURRENT,p) < HI)
|
|
2140
|
|
-// {
|
|
2141
|
|
-// Print("low is ",LO, "and index of low is ",p);
|
|
2142
|
|
-// Print("Target line deleted in on tick "," at index p", " and time period is ",iTime(Symbol(),PERIOD_CURRENT,p));
|
|
2143
|
|
-//
|
|
2144
|
|
-// tp_date_time_buy = 0.0;
|
|
2145
|
|
-//
|
|
2146
|
|
-// if(object_find("target line") > 0)
|
|
2147
|
|
-// {
|
|
2148
|
|
-// ObjectDelete(0,"target line");
|
|
2149
|
|
-// }
|
|
2150
|
|
-//
|
|
2151
|
|
-// if(object_find("target line1") > 0)
|
|
2152
|
|
-// {
|
|
2153
|
|
-// ObjectDelete(0,"target line1");
|
|
2154
|
|
-// }
|
|
2155
|
|
-// break;
|
|
2156
|
|
-//
|
|
2157
|
|
-// }
|
|
2158
|
|
-// }
|
|
2159
|
|
-//
|
|
2160
|
|
-// }
|
|
2161
|
|
-
|
|
2162
|
|
-
|
|
2163
|
|
-
|
|
2164
|
|
-
|
|
2165
|
|
-
|
|
2166
|
|
-
|
|
2167
|
|
-
|
|
2168
|
|
-
|
|
2169
|
|
-
|
|
2170
|
2018
|
Entry_strategy(1);
|
|
2171
|
2019
|
|
|
2172
|
2020
|
// for entry condition candel 1
|
|
|
@@ -2183,24 +2031,37 @@ void OnTick()
|
|
2183
|
2031
|
int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
|
|
2184
|
2032
|
int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
|
|
2185
|
2033
|
|
|
|
2034
|
+
|
|
2186
|
2035
|
double reversalMax = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) < iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ? iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
|
|
|
2036
|
+ // bool snd_con = false;
|
|
|
2037
|
+ for(int i=close_index-1; i>=1; i--) // second condition of updation
|
|
|
2038
|
+ {
|
|
|
2039
|
+ if(iClose(Symbol(),PERIOD_CURRENT,i) < reversalMax)
|
|
|
2040
|
+ {
|
|
|
2041
|
+ remove_value_from_structure();
|
|
|
2042
|
+ }
|
|
|
2043
|
+ }
|
|
2187
|
2044
|
|
|
2188
|
|
- if(reversalMax > iLow(Symbol(),PERIOD_CURRENT,1)
|
|
2189
|
|
- && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_buy != 0.0)
|
|
|
2045
|
+ // if(iOpen(Symbol(),PERIOD_CURRENT,1) > iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
|
|
2190
|
2046
|
{
|
|
2191
|
|
- Print("<<<<<<<<<<<< Entry 1 >>>>>>>>>");
|
|
2192
|
|
- placeBuyTrade();
|
|
2193
|
|
- remove_value_from_structure();
|
|
2194
|
|
- od_1[m].choch_index_date_time = 0;
|
|
2195
|
|
- od_1[m].Signal == "";
|
|
2196
|
|
- od_1[m].reversal_index_date_time = 0;
|
|
2197
|
|
- od_1[m].choch_index_date_time = 0;
|
|
2198
|
2047
|
|
|
2199
|
|
- signal = "";
|
|
2200
|
|
- Print("buy trade placed -------------------------------------------------------------");
|
|
2201
|
|
- Print("time at which trade is placed : ",TimeCurrent());
|
|
|
2048
|
+ if(reversalMax > iLow(Symbol(),PERIOD_CURRENT,1)
|
|
|
2049
|
+ && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_buy != 0.0)
|
|
|
2050
|
+ {
|
|
|
2051
|
+ Print("<<<<<<<<<<<< Entry 1 >>>>>>>>>");
|
|
|
2052
|
+ placeBuyTrade();
|
|
|
2053
|
+ remove_value_from_structure();
|
|
|
2054
|
+ od_1[m].choch_index_date_time = 0;
|
|
|
2055
|
+ od_1[m].Signal == "";
|
|
|
2056
|
+ od_1[m].reversal_index_date_time = 0;
|
|
|
2057
|
+ od_1[m].choch_index_date_time = 0;
|
|
|
2058
|
+
|
|
|
2059
|
+ signal = "";
|
|
|
2060
|
+ Print("buy trade placed -------------------------------------------------------------");
|
|
|
2061
|
+ Print("time at which trade is placed : ",TimeCurrent());
|
|
2202
|
2062
|
|
|
2203
|
2063
|
|
|
|
2064
|
+ }
|
|
2204
|
2065
|
}
|
|
2205
|
2066
|
|
|
2206
|
2067
|
|
|
|
@@ -2215,21 +2076,37 @@ void OnTick()
|
|
2215
|
2076
|
|
|
2216
|
2077
|
|
|
2217
|
2078
|
double reversalMin = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) > iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ? iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
|
|
2218
|
|
-
|
|
2219
|
|
- if(reversalMin < iHigh(Symbol(),PERIOD_CURRENT,1)
|
|
2220
|
|
- && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell != 0.0)
|
|
|
2079
|
+ // double reversalMin = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) > iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ? iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
|
|
|
2080
|
+ // bool snd_con = false;
|
|
|
2081
|
+ //
|
|
|
2082
|
+ for(int i=close_index-1; i>=1; i--) // second condition of updation
|
|
2221
|
2083
|
{
|
|
2222
|
|
- placeSellTrade();
|
|
2223
|
|
- remove_value_from_structure();
|
|
2224
|
|
- od_1[m].choch_index_date_time = 0;
|
|
2225
|
|
- od_1[m].Signal == "";
|
|
2226
|
|
- od_1[m].reversal_index_date_time = 0;
|
|
2227
|
|
- od_1[m].choch_index_date_time = 0;
|
|
2228
|
|
- signal = "";
|
|
2229
|
|
- Print("sell trade placed -------------------------------------------------------------");
|
|
2230
|
|
- Print("time at which trade is placed : ",TimeCurrent());
|
|
|
2084
|
+ if(iClose(Symbol(),PERIOD_CURRENT,i) > reversalMin)
|
|
|
2085
|
+ {
|
|
|
2086
|
+ remove_value_from_structure();
|
|
|
2087
|
+ //snd_con = true;
|
|
|
2088
|
+ }
|
|
|
2089
|
+ }
|
|
|
2090
|
+ //
|
|
|
2091
|
+ // if(iOpen(Symbol(),PERIOD_CURRENT,1) < iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
|
|
|
2092
|
+ {
|
|
|
2093
|
+
|
|
|
2094
|
+
|
|
|
2095
|
+ if(reversalMin < iHigh(Symbol(),PERIOD_CURRENT,1)
|
|
|
2096
|
+ && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell != 0.0)
|
|
|
2097
|
+ {
|
|
|
2098
|
+ placeSellTrade();
|
|
|
2099
|
+ remove_value_from_structure();
|
|
|
2100
|
+ od_1[m].choch_index_date_time = 0;
|
|
|
2101
|
+ od_1[m].Signal == "";
|
|
|
2102
|
+ od_1[m].reversal_index_date_time = 0;
|
|
|
2103
|
+ od_1[m].choch_index_date_time = 0;
|
|
|
2104
|
+ signal = "";
|
|
|
2105
|
+ Print("sell trade placed -------------------------------------------------------------");
|
|
|
2106
|
+ Print("time at which trade is placed : ",TimeCurrent());
|
|
2231
|
2107
|
|
|
2232
|
2108
|
|
|
|
2109
|
+ }
|
|
2233
|
2110
|
}
|
|
2234
|
2111
|
|
|
2235
|
2112
|
}
|
|
|
@@ -2242,9 +2119,10 @@ void OnTick()
|
|
2242
|
2119
|
{
|
|
2243
|
2120
|
if(trend == "uptrend")
|
|
2244
|
2121
|
{
|
|
2245
|
|
- for(int p=dx-1; p >= 1; p--)
|
|
|
2122
|
+ double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
|
|
|
2123
|
+ for(int p=ib-2; p >= 1; p--)
|
|
2246
|
2124
|
{
|
|
2247
|
|
- double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
|
|
|
2125
|
+
|
|
2248
|
2126
|
Print("low of the last choch index is",iLow(Symbol(),PERIOD_CURRENT,ib));
|
|
2249
|
2127
|
if(iHigh(Symbol(),PERIOD_CURRENT,p) > iLow(Symbol(),PERIOD_CURRENT,ib))
|
|
2250
|
2128
|
{
|
|
|
@@ -2275,28 +2153,42 @@ void OnTick()
|
|
2275
|
2153
|
int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
|
|
2276
|
2154
|
int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
|
|
2277
|
2155
|
|
|
2278
|
|
- if(value_close_high(close_index) == true)
|
|
|
2156
|
+ //bool snd_con = false;
|
|
|
2157
|
+ //double reversalMax = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) < iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ? iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
|
|
|
2158
|
+
|
|
|
2159
|
+ //for(int i=close_index-1; i>=1; i--) // second condition of updation
|
|
|
2160
|
+ // {
|
|
|
2161
|
+ // if(iClose(Symbol(),PERIOD_CURRENT,i) < reversalMax)
|
|
|
2162
|
+ // {
|
|
|
2163
|
+ // snd_con = true;
|
|
|
2164
|
+ // }
|
|
|
2165
|
+ // }
|
|
|
2166
|
+
|
|
|
2167
|
+ if(iOpen(Symbol(),PERIOD_CURRENT,1) > iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
|
|
2279
|
2168
|
{
|
|
2280
|
|
- if(iClose(Symbol(),PERIOD_CURRENT,close_index) > iLow(Symbol(),PERIOD_CURRENT,1)
|
|
2281
|
|
- && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_buy != 0.0)
|
|
|
2169
|
+
|
|
|
2170
|
+ if(value_close_high(close_index) == true)
|
|
2282
|
2171
|
{
|
|
2283
|
|
- Print("<<<<<<<<<<<< Entry 2 >>>>>>>>>");
|
|
2284
|
|
- placeBuyTrade();
|
|
2285
|
|
- remove_value_from_structure();
|
|
2286
|
|
- od_1[m].choch_index_date_time = 0;
|
|
2287
|
|
- od_1[m].Signal == "";
|
|
2288
|
|
- od_1[m].reversal_index_date_time = 0;
|
|
2289
|
|
- od_1[m].choch_index_date_time = 0;
|
|
|
2172
|
+ if(iClose(Symbol(),PERIOD_CURRENT,close_index) > iLow(Symbol(),PERIOD_CURRENT,1)
|
|
|
2173
|
+ && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_buy != 0.0)
|
|
|
2174
|
+ {
|
|
|
2175
|
+ Print("<<<<<<<<<<<< Entry 2 >>>>>>>>>");
|
|
|
2176
|
+ placeBuyTrade();
|
|
|
2177
|
+ remove_value_from_structure();
|
|
|
2178
|
+ od_1[m].choch_index_date_time = 0;
|
|
|
2179
|
+ od_1[m].Signal == "";
|
|
|
2180
|
+ od_1[m].reversal_index_date_time = 0;
|
|
|
2181
|
+ od_1[m].choch_index_date_time = 0;
|
|
2290
|
2182
|
|
|
2291
|
|
- signal = "";
|
|
2292
|
|
- Print("buy trade placed -------------------------------------------------------------");
|
|
2293
|
|
- Print("time at which trade is placed : ",TimeCurrent());
|
|
|
2183
|
+ signal = "";
|
|
|
2184
|
+ Print("buy trade placed -------------------------------------------------------------");
|
|
|
2185
|
+ Print("time at which trade is placed : ",TimeCurrent());
|
|
2294
|
2186
|
|
|
2295
|
2187
|
|
|
|
2188
|
+ }
|
|
2296
|
2189
|
}
|
|
2297
|
|
- }
|
|
2298
|
|
-
|
|
2299
|
2190
|
|
|
|
2191
|
+ }
|
|
2300
|
2192
|
}
|
|
2301
|
2193
|
|
|
2302
|
2194
|
if(od_1[m].EntryCon == 2 && TimeCurrent() > od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "sell" && od_1[m].Time_of_candle_For_trade != 0 /*&& HIGH != 0 && LOW != 0*/)
|
|
|
@@ -2304,14 +2196,14 @@ void OnTick()
|
|
2304
|
2196
|
|
|
2305
|
2197
|
if(trend == "downtrend")
|
|
2306
|
2198
|
{
|
|
2307
|
|
-
|
|
2308
|
|
- for(int p=dx-1; p >= 1; p--)
|
|
|
2199
|
+ double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_sell,false);
|
|
|
2200
|
+ for(int p=ib-2; p >= 1; p--)
|
|
2309
|
2201
|
{
|
|
2310
|
|
- double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
|
|
|
2202
|
+
|
|
2311
|
2203
|
Print("high of the last choch index is",iHigh(Symbol(),PERIOD_CURRENT,ib));
|
|
2312
|
2204
|
if(iLow(Symbol(),PERIOD_CURRENT,p) < iHigh(Symbol(),PERIOD_CURRENT,ib))
|
|
2313
|
2205
|
{
|
|
2314
|
|
- // Print("low is ",LO, "and index of low is ",p);
|
|
|
2206
|
+ // Print("low is ",LO, "and index of low is ",p);
|
|
2315
|
2207
|
Print("Target line deleted in on entry 2 "," at index p", " and time period is ",iTime(Symbol(),PERIOD_CURRENT,p));
|
|
2316
|
2208
|
|
|
2317
|
2209
|
tp_date_time_sell = 0.0;
|
|
|
@@ -2335,22 +2227,37 @@ void OnTick()
|
|
2335
|
2227
|
int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
|
|
2336
|
2228
|
int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
|
|
2337
|
2229
|
|
|
2338
|
|
- if(value_close_low(close_index) == true)
|
|
|
2230
|
+ // double reversalMin = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) > iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ? iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
|
|
|
2231
|
+ // bool snd_con = false;
|
|
|
2232
|
+ //
|
|
|
2233
|
+ // for(int i=close_index-1; i>=1; i--) // second condition of updation
|
|
|
2234
|
+ // {
|
|
|
2235
|
+ // if(iClose(Symbol(),PERIOD_CURRENT,i) > reversalMin)
|
|
|
2236
|
+ // {
|
|
|
2237
|
+ // snd_con = true;
|
|
|
2238
|
+ // }
|
|
|
2239
|
+ // }
|
|
|
2240
|
+
|
|
|
2241
|
+ if(iOpen(Symbol(),PERIOD_CURRENT,1) < iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
|
|
2339
|
2242
|
{
|
|
2340
|
|
- if(iClose(Symbol(),PERIOD_CURRENT,close_index) < iHigh(Symbol(),PERIOD_CURRENT,1)
|
|
2341
|
|
- && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell!= 0.0)
|
|
|
2243
|
+
|
|
|
2244
|
+ if(value_close_low(close_index) == true)
|
|
2342
|
2245
|
{
|
|
2343
|
|
- placeSellTrade();
|
|
2344
|
|
- remove_value_from_structure();
|
|
2345
|
|
- od_1[m].choch_index_date_time = 0;
|
|
2346
|
|
- od_1[m].Signal == "";
|
|
2347
|
|
- od_1[m].reversal_index_date_time = 0;
|
|
2348
|
|
- od_1[m].choch_index_date_time = 0;
|
|
2349
|
|
- signal = "";
|
|
2350
|
|
- Print("sell trade placed -------------------------------------------------------------");
|
|
2351
|
|
- Print("time at which trade is placed : ",TimeCurrent());
|
|
|
2246
|
+ if(iClose(Symbol(),PERIOD_CURRENT,close_index) < iHigh(Symbol(),PERIOD_CURRENT,1)
|
|
|
2247
|
+ && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell != 0.0)
|
|
|
2248
|
+ {
|
|
|
2249
|
+ placeSellTrade();
|
|
|
2250
|
+ remove_value_from_structure();
|
|
|
2251
|
+ od_1[m].choch_index_date_time = 0;
|
|
|
2252
|
+ od_1[m].Signal == "";
|
|
|
2253
|
+ od_1[m].reversal_index_date_time = 0;
|
|
|
2254
|
+ od_1[m].choch_index_date_time = 0;
|
|
|
2255
|
+ signal = "";
|
|
|
2256
|
+ Print("sell trade placed -------------------------------------------------------------");
|
|
|
2257
|
+ Print("time at which trade is placed : ",TimeCurrent());
|
|
2352
|
2258
|
|
|
2353
|
2259
|
|
|
|
2260
|
+ }
|
|
2354
|
2261
|
}
|
|
2355
|
2262
|
}
|
|
2356
|
2263
|
|
|
|
@@ -2420,3 +2327,9 @@ string checkCandle(int v) // to check the candle is bullish or bearish
|
|
2420
|
2327
|
//+------------------------------------------------------------------+
|
|
2421
|
2328
|
|
|
2422
|
2329
|
//+------------------------------------------------------------------+
|
|
|
2330
|
+
|
|
|
2331
|
+//+------------------------------------------------------------------+
|
|
|
2332
|
+
|
|
|
2333
|
+//+------------------------------------------------------------------+
|
|
|
2334
|
+
|
|
|
2335
|
+//+------------------------------------------------------------------+
|