fractalsusdjpy_190

Author: Copyright � 2005, PavMiGor
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Indicators Used
FractalsMovement directional index
0 Views
0 Downloads
0 Favorites

Profitability Reports

AUD/USD Oct 2024 - Jan 2025
61.00 %
Total Trades 36
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -1.21
Gross Profit 68.80
Gross Loss -112.30
Total Net Profit -43.50
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
11.00 %
Total Trades 39
Won Trades 1
Lost trades 38
Win Rate 0.03 %
Expected payoff -3.79
Gross Profit 18.80
Gross Loss -166.70
Total Net Profit -147.90
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
36.00 %
Total Trades 50
Won Trades 7
Lost trades 43
Win Rate 0.14 %
Expected payoff -2.24
Gross Profit 62.90
Gross Loss -174.90
Total Net Profit -112.00
-100%
-50%
0%
50%
100%
fractalsusdjpy_190
//+-----------------------------------------------------------------------+
//|                                                          Fractals.mq4 |
//|                                           Copyright © 2005, PavMiGor. |
//|                                                    pavmigor@yandex.ru |
//+-----------------------------------------------------------------------+
#property copyright "Copyright © 2005, PavMiGor"
#property link      "pavmigor@yandex.ru"
//+-----------------------------------------------------------------------+
//| Âíåøíèå ïàðàìåòû                                                      |
//+-----------------------------------------------------------------------+
extern double   Lots=0.1;
extern int      MaxOrders=2, TrailingStop=24, LimitLoss=39, Step=20, PerADX=20;
extern double   MinADX=23;
datetime        TimeUp=0, TimeDown=0;
//+-----------------------------------------------------------------------+
//| Ïîåõàëè                                                               |
//+-----------------------------------------------------------------------+
int start()
   {
    int      i, total, NLong, NShot, Spread, Level, LotPrice, Leverage;
    double   FractalUp, FractalDown, DiPlus, DiMinus, ADX;
    double   StopLoss, TakeProfit, Price, MinLot, Ticket;
    datetime HalfLife, Life;
    Leverage=   100;
    HalfLife=   PerADX*3600;
    Spread=     MarketInfo(Symbol(),MODE_SPREAD);
    MinLot=     MarketInfo(Symbol(),MODE_MINLOT)/100;
    Level=      MarketInfo(Symbol(),MODE_STOPLEVEL);
    LotPrice=   MarketInfo(Symbol(),MODE_LOTSIZE)/Leverage;
    FractalUp=  iFractals(NULL,0,MODE_UPPER,3);
    FractalDown=iFractals(NULL,0,MODE_LOWER,3);
    DiPlus=     iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_PLUSDI,0);
    DiMinus=    iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MINUSDI,0);
    ADX=        iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MAIN,0);
    if(Lots<MinLot || TrailingStop<Level || Step<Level) return(0);
//+-----------------------------------------------------------------------+
//| Êîíòðîëü ïîçèöèé                                                      |
//+-----------------------------------------------------------------------+
    total=OrdersTotal(); NLong=0; NShot=0;
    for(i=0;i<total;i++)
       {
        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol()) NLong++;
        if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) 
          {
           NLong++;
           if(OrderOpenTime()<Time[0])
             {
              if(Bid-OrderOpenPrice()>(TrailingStop+Step)*Point &&
                 OrderStopLoss()<Bid-(TrailingStop+Step)*Point)
                {
                 StopLoss=Bid-TrailingStop*Point;
                 OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Orange);
                 Sleep(10000); return(0);
                 }
              if(OrderTakeProfit()-Bid<=Step*Point)
                {
                 TakeProfit=Bid+2*Step*Point;
                 OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Lime);
                 Sleep(10000); return(0);
                 }
              }
           }
        if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol()) NShot++;
        if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
          {
           NShot++;
           if(OrderOpenTime()<Time[0])
             {                 
              if(OrderOpenPrice()-Ask>(TrailingStop+Step)*Point &&
                 OrderStopLoss()>Ask+(TrailingStop+Step)*Point)
                {
                 StopLoss=Ask+TrailingStop*Point;
                 OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Orange);
                 Sleep(10000); return(0);
                 }
              if(Ask-OrderTakeProfit()<=Step*Point)
                {
                 TakeProfit=Ask-2*Step*Point;
                 OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Lime);
                 Sleep(10000); return(0);
                 }
              }
           }
        }
//+-----------------------------------------------------------------------+
//| Îòêðûòèå ïîçèöèé                                                      |
//+-----------------------------------------------------------------------+
    if(AccountFreeMargin()<LotPrice*Lots*1.5) return(0);
    if(FractalUp==High[3] && DiPlus>=MinADX && ADX>=MinADX &&
       DiPlus>DiMinus && NLong<MaxOrders && TimeUp<Time[0])
      {
       Price=High[3]+Spread*Point; Life=Time[0]+HalfLife;
       StopLoss=MathMin(Low[4],Low[5]); TakeProfit=High[3]+Step*Point;
       if(Price-Ask<Level*Point)
         {
          if(Bid-StopLoss>TakeProfit-Bid) TakeProfit=Bid+(Bid-StopLoss)+Step*Point;
          if(Bid-StopLoss<Level*Point) StopLoss=Bid-Level*Point;
          if(TakeProfit-Bid<(Level+Step)*Point) TakeProfit=Bid+(Level+Step)*Point;
          if(Bid-StopLoss>LimitLoss*Point) StopLoss=Bid-LimitLoss*Point;
          Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit,"FractalUpBuy",0,0,Blue);
          if(Ticket<0) {Sleep(10000); return(0);}
          TimeUp=Time[0]; Sleep(10000); return(0);
          }
       if(Price-Ask>=Level*Point)
         {
          if(Price-StopLoss>TakeProfit-Price) TakeProfit=Price+(Price-StopLoss)+Step*Point;
          if(Price-StopLoss<Level*Point) StopLoss=Price-Level*Point;
          if(TakeProfit-Price<(Level+Step)*Point) TakeProfit=Price+(Level+Step)*Point;
          if(Price-StopLoss>LimitLoss*Point) StopLoss=Price-LimitLoss*Point;
          Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Price,3,StopLoss,TakeProfit,"FractalUpBuyStop",0,Life,Blue);
          if(Ticket<0) {Sleep(10000); return(0);}
          TimeUp=Time[0]; Sleep(10000); return(0);
          }
       }
    if(FractalDown==Low[3] && DiMinus>=MinADX && ADX>=MinADX &&
       DiMinus>DiPlus && NShot<MaxOrders && TimeDown<Time[0])
      {
       Price=Low[3]; Life=Time[0]+HalfLife;
       StopLoss=MathMax(High[4],High[5])+Spread*Point; TakeProfit=Low[3]+(Spread-Step)*Point;
       if(Bid-Price<Level*Point)
         {
          if(StopLoss-Ask>Ask-TakeProfit) TakeProfit=Ask-(StopLoss-Ask)-Step*Point;
          if(StopLoss-Ask<Level*Point) StopLoss=Ask+Level*Point;
          if(Ask-TakeProfit<(Level+Step)*Point) TakeProfit=Ask-(Level-Step)*Point;
          if(StopLoss-Ask>LimitLoss*Point) StopLoss=Ask+LimitLoss*Point;
          Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,TakeProfit,"FractalDownSell",0,0,Red);
          if(Ticket<0) {Sleep(10000); return(0);}
          TimeDown=Time[0]; Sleep(10000); return(0);
          }
       if(Bid-Price>=Level*Point)
         {
          if(StopLoss-Price>Price-TakeProfit) TakeProfit=Price-(StopLoss-Price)-Step*Point;
          if(StopLoss-Price<Level*Point) StopLoss=Price+Level*Point;
          if(Price-TakeProfit<(Level+Step)*Point) TakeProfit=Price-(Level-Step)*Point;
          if(StopLoss-Price>LimitLoss*Point) StopLoss=Price+LimitLoss*Point;
          Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Price,3,StopLoss,TakeProfit,"FractalDownSellStop",0,Life,Red);
          if(Ticket<0) {Sleep(10000); return(0);}
          TimeDown=Time[0]; Sleep(10000); return(0);
          }
       }
    return(0);
    }
/*       /\                     /\      /\          /\                   
        //\\                   //\\    //\\        //\\                  
       ///\\\                 ///\\\  ///\\\      ///\\\                 
      ///  \\\ /\ ///      \\\\\\ \\\/// /// /\  /// /\          /\      
     ///   /////\\\\\      ////// ///\\\ \\\ \/ /// //\\   /\   //\\  ///
    ///\  //////\\\\\\    //////  \\\///  \\\\\\\\\///\\\ //\\ ///\\\/// 
   ///\\\//////  \\\\\\  //////    \\//    \\\\\\\\\  //////\\\\\\ \\//  
  ///  \\///////\\\\\\\\//////      \/      \\\\\\\\\/// \\\//////  \/   
 ///    \////      \\\\\/////                \\\\\\\\//   \\/////        
 \\\      \\\      /// \/ \\\                ////// \/     \////the end.*/

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---