Author: FORTRADER.RU, ����, ftyuriy@gmail.com
Profit factor:
0.07
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
2 Views
0 Downloads
0 Favorites
HlopMaster
//+------------------------------------------------------------------+
//|                                                                  |
//|  FOREXSYSTEMS.RU, FXNOW.RU, FORTRADER.RU Þðèé, ftyuriy@gmail.com |
//|                                http://FORTRADER.RU, Price        |
//+------------------------------------------------------------------+
// ÑÎÂÅÒÍÈÊ ÄËß 46 ÂÛÏÓÑÊÀ ÆÓÐÍÀËÀ FORTRADER.RU
// ÑÑÛËÊÀ ÍÀ ÂÛÏÓÑÊ: http://www.fortrader.ru/ftgate.php?id=0&NUM=46
// ÑÑÛËÊÀ ÍÀ ÎÁÑÓÆÄÅÍÈÅ 

#property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com"
#property link      "http://FORTRADER.RU, Price"

extern int pips=25;
extern int profitpips=25;
extern double Lots=0.01;

extern int time=0; //1 - âêëþ÷åíî, 0 - âûêëþ÷åíî.
extern int starttime = 7; 
extern int stoptime = 17; 


//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=1
int timecontrol()
{
   if ( ( (Hour()>=0 && Hour()<=stoptime-1) ||  (Hour()>=starttime && Hour()<=23)) && starttime>stoptime)
      {
      return(1);
      }  
      if ( (Hour()>=starttime && Hour()<=stoptime-1) && starttime<stoptime)
      {
      return(1);
      }  
      
   if(time==0){ return(1);}
     
return(0);
}

int SL=0;
int TP=0;

int err;
int start()
  {
   if(timecontrol()==1)
   {
   if(OrdersTotal()<1){err=OpenNewOrders();}
   if(OrdersTotal()>0){TrailStopOrders();}
   
   if(CountPos(0)==0 && CountPos(1)==0 && ChStopPosLimitSumm()<2){
   _DeleteOrder();
   }

   if(GetMaxLot()==GetMaxLotOrder()){
   ChangeOrder(GetMaxLot()*2);
   }

   if(ChStopPosLimitSumm()<1){
   DopOrder(GetMaxLot()*2);
   }
  
   err=CloseManager();
}
   return(0);
  }

double op,sl,tp;
int OpenNewOrders()
{int err;

   op=Ask-pips*Point;if(SL>0){sl=Ask;}else{sl=0;}if(TP>0){tp=op-TP*Point;}else{tp=0;}
   err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"46 FORTRADER.RU",0,0,Red);
   if(err<0){Print("OrderSend()-  Îøèáêà OP_SELLSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}

   op=Bid+pips*Point;if(SL>0){sl=Bid;}else{sl=0;}if(TP>0){tp=op+TP*Point;}else{tp=0;}
   err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"46 FORTRADER.RU",0,0,Red);
   if(err<0){Print("OrderSend()-  Îøèáêà OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}


return(err);
}

//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=65
int TrailStopOrders()
{int i;bool err;
 for( i=1; i<=OrdersTotal(); i++)
 {
   if(OrderSelect(i-1,SELECT_BY_POS)==true)
   {  
      if( OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && (OrderOpenPrice()-Bid)>pips*Point )
      {                
       Print("ÒÐÅÉËÈÌ");
       err=OrderModify(OrderTicket(),Bid+pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green);
          if(err==false){return(-1);}
       }//if( OrderType()==OP_BUYSTOP
   }//if(OrderSelect(i-1,SEL
   if(OrderSelect(i-1,SELECT_BY_POS)==true)
   {
      if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && (Ask-OrderOpenPrice())>pips*Point)  
      {        
       Print("ÒÐÅÉËÈÌ");
       err=OrderModify(OrderTicket(),Ask-pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green);
       if(err==false){return(-1);}
       }//if(OrderType()==OP_SELLSTOP 
    }//if(OrderSelect(i-1,
 }// for( i=1; i<=O
   return(0);
}


//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66
int CountPos(int type) 
{int i,b,s;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol()){b=b+1;}
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol()){s=s+1;}
       }
    }   
    if(type==0){return(s);}
    if(type==1){return(b);}
}



//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=67
int ChStopPosLimitSumm() 
{int i,z;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP ){z=z+1;}
       }
    }   
return(z);
}

//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=68
int _DeleteOrder()
{
   for( int i=1; i<=OrdersTotal(); i++)          
   {
    if(OrderSelect(i-1,SELECT_BY_POS)==true) 
    {                                       
     if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() )
     {
      OrderDelete(OrderTicket()); 
     }//if
  
    if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() )
     {
      OrderDelete(OrderTicket()); 
     }//if
    }//if
   }
   return(0);
}  

int CloseManager()
{int err;

double maxlot=GetMaxLot();

 for( int i=1; i<=OrdersTotal(); i++)          
   {
    if(OrderSelect(i-1,SELECT_BY_POS)==true) 
    {                                       
     if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderLots()==maxlot && ((OrderOpenPrice()-Ask)>profitpips*Point  ) )
     {_DeleteOrder();CloseAllPos(0);CloseAllPos(1);
   //   err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
      if(err<0){Print("OrderClose()-  Îøèáêà çàêðûòèÿ OP_SELL.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);}
     }//if
  
    if(OrderType()==OP_BUY&& OrderSymbol()==Symbol() && OrderLots()==maxlot && ((Bid-OrderOpenPrice())>profitpips*Point ) )
     {_DeleteOrder();CloseAllPos(0);CloseAllPos(1);
    // err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
     if(err<0){Print("OrderClose()-  Îøèáêà çàêðûòèÿ OP_BUY.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
     }//if
    }//if
   }
   return(err);
}


//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=69
double GetMaxLot() 
{int i;double maxlot;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if((OrderType()==OP_BUY ||OrderType()==OP_SELL)  && OrderSymbol()==Symbol() && maxlot<OrderLots()){maxlot=OrderLots();}
       }
    }   
return(maxlot);
}

//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=70
double GetMaxLotOrder() 
{int i;double maxlot;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if((OrderType()==OP_BUYSTOP ||OrderType()==OP_SELLSTOP)  && OrderSymbol()==Symbol() && maxlot<OrderLots()){maxlot=OrderLots();}
       }
    }   
return(maxlot);
}

int ChangeOrder(double Lots)
{_DeleteOrder();/*
int type=GetLastTypePos();
   if(type==1){
     op=Bid+pips*Point;if(SL>0){sl=Bid;}else{sl=0;}if(TP>0){tp=op+TP*Point;}else{tp=0;}
     err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red);
     if(err<0){Print("OrderSend()-  Îøèáêà OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
   if(type==0){
      op=Ask-pips*Point;if(SL>0){sl=Ask;}else{sl=0;}if(TP>0){tp=op-TP*Point;}else{tp=0;}
      err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELLSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }*/

}

//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=71
int GetLastTypePos()
{
   int i;datetime dt;int type;
      for( i=1; i<=OrdersTotal(); i++)         
      {
         if(OrderSelect(i-1,SELECT_BY_POS)==true) 
          {                                   
              if((OrderType()==OP_BUY ||OrderType()==OP_SELL)  && OrderSymbol()==Symbol() && dt<OrderOpenTime()){dt=OrderOpenTime();type=OrderType();}
          }
       }   
   return(type);
}

int DopOrder(double Lots)
{
int type=GetLastTypePos();
   if(type==1){
     op=Bid+pips*Point;if(SL>0){sl=Bid;}else{sl=0;}if(TP>0){tp=op+TP*Point;}else{tp=0;}
     err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red);
     if(err<0){Print("OrderSend()-  Îøèáêà OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
   if(type==0){
      op=Ask-pips*Point;if(SL>0){sl=Ask;}else{sl=0;}if(TP>0){tp=op-TP*Point;}else{tp=0;}
      err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELLSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
return(0);
}

//îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=72
int CloseAllPos(int type)
{  int buy=1; int sell=1;
int i,b=0;int ordertiket;
 
 if(type==1)
   {
   while(buy==1)
     {
        buy=0;
        for( i=0;i<OrdersTotal();i++)
         {
           if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() ){buy=1; OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);}
           }else{buy=0;}
         }  
         if(buy==0){return(0);}
      } 
   }
   
   if(type==0)
   {
      while(sell==1)
     {
        sell=0;
        for( i=0;i<OrdersTotal();i++)
         {
           if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() ){sell=1;OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); }
           }else{sell=0;}
         }  
         
        if(sell==0){return(0);}
      } 
     }
   return(0);
   }
   
//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=73
double   SummProfit()
{
   int i;double profit;
      for( i=1; i<=OrdersTotal(); i++)         
      {
         if(OrderSelect(i-1,SELECT_BY_POS)==true) 
          {                                   
              if((OrderType()==OP_BUY ||OrderType()==OP_SELL)  && OrderSymbol()==Symbol()){profit=profit+OrderProfit();}
          }
       }   
   return(profit);
}

Profitability Reports

NZD/USD Oct 2024 - Jan 2025
0.07
Total Trades 13
Won Trades 4
Lost trades 9
Win Rate 30.77 %
Expected payoff -70.46
Gross Profit 70.60
Gross Loss -986.52
Total Net Profit -915.92
-100%
-50%
0%
50%
100%

Comments