fractalsusdjpy_190

Author: Copyright � 2005, PavMiGor
Profit factor:
0.41
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
1 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 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