Parcourir la Source

Ticket # 1483 ++

Add entry condition 2 module
AhtashamShahzad3 il y a 2 ans
Parent
commit
0cfc758f63
2 fichiers modifiés avec 218 ajouts et 6 suppressions
  1. BIN
      BOS_CHOCH.ex5
  2. 218 6
      BOS_CHOCH.mq5

BIN
BOS_CHOCH.ex5


+ 218 - 6
BOS_CHOCH.mq5

@@ -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
   }