fractalsusdjpy_190

Author: Copyright � 2005, PavMiGor
Profit factor:
0.56
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
8 Views
0 Downloads
0 Favorites
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.*/

Profitability Reports

USD/CAD Jul 2025 - Sep 2025
0.10
Total Trades 71
Won Trades 6
Lost trades 65
Win Rate 8.45 %
Expected payoff -2.57
Gross Profit 19.37
Gross Loss -202.04
Total Net Profit -182.67
-100%
-50%
0%
50%
100%
NZD/USD Jul 2025 - Sep 2025
0.82
Total Trades 77
Won Trades 25
Lost trades 52
Win Rate 32.47 %
Expected payoff -0.48
Gross Profit 173.00
Gross Loss -210.00
Total Net Profit -37.00
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
0.82
Total Trades 72
Won Trades 16
Lost trades 56
Win Rate 22.22 %
Expected payoff -0.56
Gross Profit 187.90
Gross Loss -227.90
Total Net Profit -40.00
-100%
-50%
0%
50%
100%
GBP/CAD Jul 2025 - Sep 2025
0.03
Total Trades 58
Won Trades 1
Lost trades 57
Win Rate 1.72 %
Expected payoff -4.15
Gross Profit 7.50
Gross Loss -248.05
Total Net Profit -240.55
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
1.51
Total Trades 86
Won Trades 33
Lost trades 53
Win Rate 38.37 %
Expected payoff 1.29
Gross Profit 326.80
Gross Loss -215.80
Total Net Profit 111.00
-100%
-50%
0%
50%
100%
AUD/USD Jul 2025 - Sep 2025
0.52
Total Trades 76
Won Trades 21
Lost trades 55
Win Rate 27.63 %
Expected payoff -1.39
Gross Profit 114.40
Gross Loss -219.70
Total Net Profit -105.30
-100%
-50%
0%
50%
100%
USD/CAD Oct 2024 - Jan 2025
0.54
Total Trades 61
Won Trades 18
Lost trades 43
Win Rate 29.51 %
Expected payoff -0.93
Gross Profit 66.08
Gross Loss -122.65
Total Net Profit -56.57
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
0.36
Total Trades 50
Won Trades 7
Lost trades 43
Win Rate 14.00 %
Expected payoff -2.24
Gross Profit 62.90
Gross Loss -174.90
Total Net Profit -112.00
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.11
Total Trades 39
Won Trades 1
Lost trades 38
Win Rate 2.56 %
Expected payoff -3.79
Gross Profit 18.80
Gross Loss -166.70
Total Net Profit -147.90
-100%
-50%
0%
50%
100%
AUD/USD Oct 2024 - Jan 2025
0.61
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%

Comments