|
|
@@ -34,7 +34,7 @@ struct tradeOrder
|
|
34
|
34
|
|
|
35
|
35
|
tradeOrder od_1[orderNum];
|
|
36
|
36
|
|
|
37
|
|
-
|
|
|
37
|
+input string Entry_condition_1 = "1"; // from here to start -------------------------------------------------------------
|
|
38
|
38
|
sinput string str = "<><><><><><> Set Object Name <><><><><><>";
|
|
39
|
39
|
input string object_name = "line";
|
|
40
|
40
|
|
|
|
@@ -325,6 +325,56 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
|
|
325
|
325
|
|
|
326
|
326
|
}
|
|
327
|
327
|
}
|
|
|
328
|
+
|
|
|
329
|
+
|
|
|
330
|
+
|
|
|
331
|
+//+------------------------------------------------------------------+
|
|
|
332
|
+//| |
|
|
|
333
|
+//+------------------------------------------------------------------+
|
|
|
334
|
+void Entry_Action_2_down(int Store_bos_last_index, int i,int diff)
|
|
|
335
|
+ {
|
|
|
336
|
+
|
|
|
337
|
+
|
|
|
338
|
+
|
|
|
339
|
+ ind = Store_bos_last_index +1; // reversal candle index
|
|
|
340
|
+ reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
|
|
|
341
|
+
|
|
|
342
|
+
|
|
|
343
|
+
|
|
|
344
|
+
|
|
|
345
|
+ Print("condition satisfied in downtrend buy trade : ",check_values_less_than_choch_high1(ind,i));
|
|
|
346
|
+
|
|
|
347
|
+ if(check_values_less_than_choch_high(ind,i) == true)
|
|
|
348
|
+ {
|
|
|
349
|
+ if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
350
|
+ {
|
|
|
351
|
+ signal = "buy";
|
|
|
352
|
+ time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
|
353
|
+ // Print("Place buy order -----------------------------------------------------------------------: ");
|
|
|
354
|
+ }
|
|
|
355
|
+
|
|
|
356
|
+
|
|
|
357
|
+ }
|
|
|
358
|
+
|
|
|
359
|
+
|
|
|
360
|
+
|
|
|
361
|
+ 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));
|
|
|
362
|
+ 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));
|
|
|
363
|
+
|
|
|
364
|
+ ObjectSetInteger(0,"line14"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
365
|
+ ObjectSetInteger(0,"line15"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
366
|
+
|
|
|
367
|
+ 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));
|
|
|
368
|
+ 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));
|
|
|
369
|
+
|
|
|
370
|
+ ObjectSetInteger(0,"line16"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
371
|
+ ObjectSetInteger(0,"line17"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
372
|
+
|
|
|
373
|
+ diff = 0;
|
|
|
374
|
+
|
|
|
375
|
+
|
|
|
376
|
+
|
|
|
377
|
+ }
|
|
328
|
378
|
//+------------------------------------------------------------------+
|
|
329
|
379
|
//| |
|
|
330
|
380
|
//+------------------------------------------------------------------+
|
|
|
@@ -380,6 +430,56 @@ void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
|
|
380
|
430
|
}
|
|
381
|
431
|
|
|
382
|
432
|
|
|
|
433
|
+
|
|
|
434
|
+
|
|
|
435
|
+//+------------------------------------------------------------------+
|
|
|
436
|
+//| |
|
|
|
437
|
+//+------------------------------------------------------------------+
|
|
|
438
|
+void Entry_Action_2_up(int Store_bos_last_index, int i,int diff)
|
|
|
439
|
+ {
|
|
|
440
|
+
|
|
|
441
|
+ ind = Store_bos_last_index +1; // reversal candle index
|
|
|
442
|
+ reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
|
|
|
443
|
+
|
|
|
444
|
+
|
|
|
445
|
+
|
|
|
446
|
+
|
|
|
447
|
+
|
|
|
448
|
+ Print("condition satisfied in uptrend sell trade : ",check_values_less_than_choch_low(ind,i));
|
|
|
449
|
+
|
|
|
450
|
+ if(check_values_less_than_choch_low1(ind,i) == true)
|
|
|
451
|
+ {
|
|
|
452
|
+ if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
453
|
+ {
|
|
|
454
|
+ signal = "sell";
|
|
|
455
|
+ time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
|
|
|
456
|
+ // Print("Place sell order -----------------------------------------------------------------------: ");
|
|
|
457
|
+ }
|
|
|
458
|
+
|
|
|
459
|
+
|
|
|
460
|
+ }
|
|
|
461
|
+
|
|
|
462
|
+
|
|
|
463
|
+
|
|
|
464
|
+ 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));
|
|
|
465
|
+ 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));
|
|
|
466
|
+
|
|
|
467
|
+ ObjectSetInteger(0,"line10"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
468
|
+ ObjectSetInteger(0,"line11"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
|
|
|
469
|
+
|
|
|
470
|
+ 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));
|
|
|
471
|
+ 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));
|
|
|
472
|
+
|
|
|
473
|
+ ObjectSetInteger(0,"line12"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
474
|
+ ObjectSetInteger(0,"line13"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
|
|
|
475
|
+
|
|
|
476
|
+
|
|
|
477
|
+
|
|
|
478
|
+
|
|
|
479
|
+
|
|
|
480
|
+
|
|
|
481
|
+ }
|
|
|
482
|
+
|
|
383
|
483
|
//+------------------------------------------------------------------+
|
|
384
|
484
|
//| |
|
|
385
|
485
|
//+------------------------------------------------------------------+
|
|
|
@@ -408,7 +508,20 @@ bool check_values_less_than_choch_high(int diff,int i) // downtrend
|
|
408
|
508
|
|
|
409
|
509
|
}
|
|
410
|
510
|
|
|
411
|
|
-
|
|
|
511
|
+//+------------------------------------------------------------------+
|
|
|
512
|
+//| |
|
|
|
513
|
+//+------------------------------------------------------------------+
|
|
|
514
|
+bool check_values_less_than_choch_high1(int ind,int i) // downtrend
|
|
|
515
|
+ {
|
|
|
516
|
+ for(int k=ind; k>i; k--)
|
|
|
517
|
+ {
|
|
|
518
|
+ if(iHigh(Symbol(),PERIOD_CURRENT,k) > iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
519
|
+ {
|
|
|
520
|
+ return false;
|
|
|
521
|
+ }
|
|
|
522
|
+ }
|
|
|
523
|
+ return true;
|
|
|
524
|
+ }
|
|
412
|
525
|
//+------------------------------------------------------------------+
|
|
413
|
526
|
//| |
|
|
414
|
527
|
//+------------------------------------------------------------------+
|
|
|
@@ -435,6 +548,21 @@ bool check_values_less_than_choch_low(int diff,int i) // uptrend
|
|
435
|
548
|
|
|
436
|
549
|
}
|
|
437
|
550
|
|
|
|
551
|
+//+------------------------------------------------------------------+
|
|
|
552
|
+//| |
|
|
|
553
|
+//+------------------------------------------------------------------+
|
|
|
554
|
+bool check_values_less_than_choch_low1(int ind,int i) // uptrend
|
|
|
555
|
+ {
|
|
|
556
|
+ for(int k=ind; k>i; k--)
|
|
|
557
|
+ {
|
|
|
558
|
+
|
|
|
559
|
+ if(iLow(Symbol(),PERIOD_CURRENT,k) < iClose(Symbol(),PERIOD_CURRENT,i))
|
|
|
560
|
+ {
|
|
|
561
|
+ return false;
|
|
|
562
|
+ }
|
|
|
563
|
+ }
|
|
|
564
|
+ return true;
|
|
|
565
|
+ }
|
|
438
|
566
|
|
|
439
|
567
|
//+------------------------------------------------------------------+
|
|
440
|
568
|
//| |
|
|
|
@@ -460,7 +588,9 @@ void choch(int i)
|
|
460
|
588
|
Store_bos_last_index = iBarShift(Symbol(), PERIOD_CURRENT, store_last_bos_index_time, false);
|
|
461
|
589
|
int diff1 = Store_bos_last_index - (i);
|
|
462
|
590
|
|
|
463
|
|
- Entry_Action_1_up(Store_bos_last_index,i,diff1);
|
|
|
591
|
+ // Entry_Action_1_up(Store_bos_last_index,i,diff1);
|
|
|
592
|
+
|
|
|
593
|
+ Entry_Action_2_up(Store_bos_last_index,i,diff1);
|
|
464
|
594
|
|
|
465
|
595
|
low = iLow(Symbol(),PERIOD_CURRENT,i);
|
|
466
|
596
|
|
|
|
@@ -562,7 +692,7 @@ void choch(int i)
|
|
562
|
692
|
|
|
563
|
693
|
if(TimeToStruct(time_of_candle,edate))
|
|
564
|
694
|
{
|
|
565
|
|
- edate.hour = edate.hour + 2;
|
|
|
695
|
+ edate.hour = edate.hour + 1;
|
|
566
|
696
|
edate.min = 0;
|
|
567
|
697
|
edate.sec = 0;
|
|
568
|
698
|
}
|
|
|
@@ -617,7 +747,9 @@ void choch(int i)
|
|
617
|
747
|
Store_bos_last_index = iBarShift(Symbol(), PERIOD_CURRENT, store_last_bos_index_time, false);
|
|
618
|
748
|
int diff = Store_bos_last_index - (i);
|
|
619
|
749
|
|
|
620
|
|
- Entry_Action_1_down(Store_bos_last_index,i,diff);
|
|
|
750
|
+ //Entry_Action_1_down(Store_bos_last_index,i,diff);
|
|
|
751
|
+
|
|
|
752
|
+ Entry_Action_2_down(Store_bos_last_index,i,diff);
|
|
621
|
753
|
|
|
622
|
754
|
high = iHigh(Symbol(),PERIOD_CURRENT,i);
|
|
623
|
755
|
|
|
|
@@ -719,7 +851,7 @@ void choch(int i)
|
|
719
|
851
|
|
|
720
|
852
|
if(TimeToStruct(time_of_candle,edate))
|
|
721
|
853
|
{
|
|
722
|
|
- edate.hour = edate.hour + 2;
|
|
|
854
|
+ edate.hour = edate.hour + 1;
|
|
723
|
855
|
edate.min = 0;
|
|
724
|
856
|
edate.sec = 0;
|
|
725
|
857
|
}
|
|
|
@@ -1414,6 +1546,7 @@ void OnTick()
|
|
1414
|
1546
|
{
|
|
1415
|
1547
|
|
|
1416
|
1548
|
Entry_strategy(1);
|
|
|
1549
|
+
|
|
1417
|
1550
|
for(int m=0; m < orderNum; m++)
|
|
1418
|
1551
|
{
|
|
1419
|
1552
|
if(od_1[m].choch_index_date_time != 0)
|
|
|
@@ -1493,6 +1626,85 @@ void OnTick()
|
|
1493
|
1626
|
}
|
|
1494
|
1627
|
}
|
|
1495
|
1628
|
|
|
|
1629
|
+ // for(int m=0; m < orderNum; m++)
|
|
|
1630
|
+ // {
|
|
|
1631
|
+ // if(od_1[m].choch_index_date_time != 0)
|
|
|
1632
|
+ // {
|
|
|
1633
|
+ //
|
|
|
1634
|
+ // //Print("current time is ",TimeCurrent());
|
|
|
1635
|
+ // //Print("time is ",od_1[m].Time_of_candle_For_trade);
|
|
|
1636
|
+ // //Print("signal is ",od_1[m].Signal);
|
|
|
1637
|
+ //
|
|
|
1638
|
+ //
|
|
|
1639
|
+ // if(TimeCurrent() >= od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "buy" && od_1[m].Time_of_candle_For_trade != 0)
|
|
|
1640
|
+ // {
|
|
|
1641
|
+ // // Print("time is greater and signal is buy ",TimeCurrent());
|
|
|
1642
|
+ //
|
|
|
1643
|
+ // int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
|
|
|
1644
|
+ // int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
|
|
|
1645
|
+ //
|
|
|
1646
|
+ // // Print("reversal_index_date_time ",od_1[m].reversal_index_date_time);
|
|
|
1647
|
+ // // Print("choch_index_date_time ",od_1[m].choch_index_date_time);
|
|
|
1648
|
+ // //
|
|
|
1649
|
+ // // Print(" high is ",iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx));
|
|
|
1650
|
+ // // Print("low of current candle ",iLow(Symbol(),PERIOD_CURRENT,0));
|
|
|
1651
|
+ // // Print("close of chock is ",iClose(Symbol(),PERIOD_CURRENT,close_index));
|
|
|
1652
|
+ // // Print("close of current candle is ",iClose(Symbol(),PERIOD_CURRENT,0));
|
|
|
1653
|
+ //
|
|
|
1654
|
+ // if(iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx) > iLow(Symbol(),PERIOD_CURRENT,1)
|
|
|
1655
|
+ // && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1))
|
|
|
1656
|
+ // {
|
|
|
1657
|
+ // placeBuyTrade();
|
|
|
1658
|
+ // remove_value_from_structure();
|
|
|
1659
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
1660
|
+ // od_1[m].Signal == "";
|
|
|
1661
|
+ // od_1[m].reversal_index_date_time = 0;
|
|
|
1662
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
1663
|
+ //
|
|
|
1664
|
+ // signal = "";
|
|
|
1665
|
+ // Print("buy trade placed -------------------------------------------------------------");
|
|
|
1666
|
+ // Print("time at which trade is placed : ",TimeCurrent());
|
|
|
1667
|
+ //
|
|
|
1668
|
+ // }
|
|
|
1669
|
+ //
|
|
|
1670
|
+ //
|
|
|
1671
|
+ // }
|
|
|
1672
|
+ //
|
|
|
1673
|
+ // if(TimeCurrent() >= od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "sell" && od_1[m].Time_of_candle_For_trade != 0)
|
|
|
1674
|
+ // {
|
|
|
1675
|
+ //
|
|
|
1676
|
+ // // Print("time is greater and signal is sell ",TimeCurrent());
|
|
|
1677
|
+ //
|
|
|
1678
|
+ // int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
|
|
|
1679
|
+ // int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
|
|
|
1680
|
+ //
|
|
|
1681
|
+ // // Print("reversal_index_date_time ",od_1[m].reversal_index_date_time);
|
|
|
1682
|
+ // // Print("choch_index_date_time ",od_1[m].choch_index_date_time);
|
|
|
1683
|
+ // //
|
|
|
1684
|
+ // // Print(" high is ",iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx));
|
|
|
1685
|
+ // // Print("low of current candle ",iLow(Symbol(),PERIOD_CURRENT,0));
|
|
|
1686
|
+ // // Print("close of chock is ",iClose(Symbol(),PERIOD_CURRENT,close_index));
|
|
|
1687
|
+ // // Print("close of current candle is ",iClose(Symbol(),PERIOD_CURRENT,0));
|
|
|
1688
|
+ //
|
|
|
1689
|
+ // if(iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx) < iLow(Symbol(),PERIOD_CURRENT,1)
|
|
|
1690
|
+ // && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1))
|
|
|
1691
|
+ // {
|
|
|
1692
|
+ // placeSellTrade();
|
|
|
1693
|
+ // remove_value_from_structure();
|
|
|
1694
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
1695
|
+ // od_1[m].Signal == "";
|
|
|
1696
|
+ // od_1[m].reversal_index_date_time = 0;
|
|
|
1697
|
+ // od_1[m].choch_index_date_time = 0;
|
|
|
1698
|
+ // signal = "";
|
|
|
1699
|
+ // Print("sell trade placed -------------------------------------------------------------");
|
|
|
1700
|
+ // Print("time at which trade is placed : ",TimeCurrent());
|
|
|
1701
|
+ //
|
|
|
1702
|
+ // }
|
|
|
1703
|
+ //
|
|
|
1704
|
+ // }
|
|
|
1705
|
+ // }
|
|
|
1706
|
+ // }
|
|
|
1707
|
+
|
|
1496
|
1708
|
|
|
1497
|
1709
|
}
|
|
1498
|
1710
|
}
|