HlopMaster 2.1

Author: FORTRADER.RU, ����, ftyuriy@gmail.com, modified by Evgeniy Trofimov
Profit factor:
0.80
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
10 Views
0 Downloads
0 Favorites
HlopMaster 2.1
#property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com, modified by Evgeniy Trofimov"
#property link      "http://FORTRADER.RU, Price"
//+------------------------------------------------------------------+
extern int pips=250;
extern int profitpips=250;
extern double Lots=0.01;
extern double LimitLot=20.00;
extern int time=0; //1 - âêëþ÷åíî, 0 - âûêëþ÷åíî.
extern int starttime = 7; 
extern int stoptime = 17; 
//+------------------------------------------------------------------+
static datetime LastTime;
static int Slippage=30;
//+------------------------------------------------------------------+
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);
}//timecontrol()
//+------------------------------------------------------------------+
int SL=0;
int TP=0;
int err;
int start() {
   if(LastTime==Time[0]) return(0);
   LastTime=Time[0];   
   if(timecontrol()==1) {
      if(!OrdersExist()) {
         err=OpenNewOrders();
      }else{
         TrailStopOrders();
      }
      if(CountPos(0)==0 && CountPos(1)==0 && ChStopPosLimitSumm()<2){
         _DeleteOrder();
      }
      if(ChStopPosLimitSumm()<1){
         if(GetMaxLot()*2>LimitLot){
            _DeleteOrder();
            CloseAllPozitions();
         } else {
            DopOrder(GetMaxLot()*2);
         }
      }
      err=CloseManager();
   }
   return(0);
}//start()
//+------------------------------------------------------------------+
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),"",0,0,Red);
   if(err<0){
      Print("OrderSend()-  Îøèáêà OP_SELLSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);
      LastTime=Time[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),"",0,0,Red);
   if(err<0){
      Print("OrderSend()-  Îøèáêà OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);
      LastTime=Time[1];
   }
   return(err);
}//OpenNewOrders()
//+------------------------------------------------------------------+
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) {
            err=OrderModify(OrderTicket(),Bid+pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green);
            if(err==false){
               LastTime=Time[1];
               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) {
            err=OrderModify(OrderTicket(),Ask-pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green);
            if(err==false){
               LastTime=Time[1];
               return(-1);
            }
         }//if(OrderType()==OP_SELLSTOP 
      }//if(OrderSelect(i-1,
   }// for( i=1; i<=O
   return(0);
}//TrailStopOrders()
//+------------------------------------------------------------------+
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);}
}//CountPos()
//+------------------------------------------------------------------+
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);
}//ChStopPosLimitSumm()
//+------------------------------------------------------------------+
int _DeleteOrder() {
   //Óäàëåíèå âñåõ îòëîæåííûõ îðäåðîâ
   for(int i=1; i<=OrdersTotal(); i++) {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) {
         if(OrderType()>3 && OrderSymbol()==Symbol()) {
            OrderDelete(OrderTicket()); 
         }//if
      }//if
   }//Next i
   return(0);
}//_DeleteOrder()
//+------------------------------------------------------------------+
int CloseManager() {
   //Çàêðûòèå âñåõ ïîçèöèé è îòëîæåííûõ îðäåðîâ,
   //åñëè â ñäåëêå ñ ìàêñèìàëüíûì ëîòîì âåëè÷èíà
   //ïðîôèòíûõ ïóíêòîâ äîñòèãëà óêàçàííîé ãðàíèöû
   int err;
   double maxlot=GetMaxLot();
   for(int i=1; i<=OrdersTotal(); i++) {
      if(OrderSelect(i-1,SELECT_BY_POS)) {
         if(OrderSymbol()==Symbol()) {
            if(OrderLots()==maxlot) {
               if(OrderType()==OP_SELL && ((OrderOpenPrice()-Ask)>profitpips*Point)) {
                  _DeleteOrder();
                  CloseAllPozitions();
               }//if
               if(OrderType()==OP_BUY && ((Bid-OrderOpenPrice())>profitpips*Point)) {
                  _DeleteOrder();
                  CloseAllPozitions();
               }//if
            }//if(OrderLots()==maxlot)
         }//if(OrderSymbol()==Symbol())
      }//if
   }//Next i
   return(err);
}//CloseManager()
//+------------------------------------------------------------------+
double GetMaxLot() {
   //Ôóíêöèÿ âîçâðàùàåò ðàçìåð ìàêñèìàëüíîãî ëîòà,
   //íàéäåííîãî ñðåäè îòêðûòûõ ïîçèöèé
   int i; double maxlot;
   for(i=1; i<=OrdersTotal(); i++) {
      if(OrderSelect(i-1,SELECT_BY_POS)) {                                   
         if(OrderType()<2 && OrderSymbol()==Symbol()) {
            if(maxlot<OrderLots()) {
               maxlot=OrderLots();
            }
         }
      }
   }   
   return(maxlot);
}//GetMaxLot()
//+------------------------------------------------------------------+
int GetLastTypePos() {
//Ôóíêöèÿ âîçâðàùàåò òèï ïîñëåäíåé îòêðûòîé ïîçèöèè
   int i; datetime dt; int type;
   for( i=1; i<=OrdersTotal(); i++) {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) {                                   
         if(OrderType()<2 && OrderSymbol()==Symbol()) {
            if(dt<OrderOpenTime()){
               dt=OrderOpenTime();
               type=OrderType();
            }
         }
      }//
   }//Next i
   return(type);
}//GetLastTypePos()
//+------------------------------------------------------------------+
int DopOrder(double Lots) {
   //Ôóíêöèÿ âûñòàâëÿåò îòëîæåííûé îðäåð, íà ïðîäàæó, 
   //åñëè ïîñëåäíÿÿ îòêðûòàÿ ñäåëêà - ïîêóïàåò
   //è íàîáîðîò
   int type=GetLastTypePos();
   if(type==OP_SELL){
      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){
         LastTime=Time[1];
         Print("OrderSend()-  Îøèáêà OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());
         return(-1);
      }
   } else if(type==OP_BUY) {
      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){
         LastTime=Time[1];
         Print("OrderSend()-  Îøèáêà OP_SELLSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());
         return(-1);
      }
   }
   return(0);
}//DopOrder()
//+------------------------------------------------------------------+
int CloseAllPozitions() {
   double PriceClose;
   int  total = OrdersTotal();
   for (int i = total-1; i >= 0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol()) {
         if(OrderType()==OP_BUY) {
            PriceClose=Bid;
         } else if(OrderType()==OP_SELL) {
            PriceClose=Ask;
         }
         if(!OrderClose(OrderTicket(),OrderLots(),PriceClose,Slippage)) {
            Print("Ñòàâêà ",OrderTicket()," íå çàêðûâàåòñÿ ïî ïðè÷èíå îøèáêè ¹ ",GetLastError());
            LastTime=Time[1];
         }
      } // Åñëè ñâîé
   } // Next i
   return(0);
}//CloseAllPozitions()
//+------------------------------------------------------------------+
bool OrdersExist() {
   //Ôóíêöèÿ âîçâðàùàåò true, åñëè êîëè÷åñòâî îðäåðîâ íà òåêóùåì èíñòðóìåíòå > 0
   int total = OrdersTotal();
   for (int i = 0; i < total; i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         return(true);
      }
   }
   return(false);
}//OpenLots()
//+------------------------------------------------------------------+

Profitability Reports

NZD/USD Jul 2025 - Sep 2025
1.44
Total Trades 83
Won Trades 47
Lost trades 36
Win Rate 56.63 %
Expected payoff 6.76
Gross Profit 1838.46
Gross Loss -1277.63
Total Net Profit 560.83
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
1.35
Total Trades 165
Won Trades 92
Lost trades 73
Win Rate 55.76 %
Expected payoff 6.92
Gross Profit 4420.48
Gross Loss -3277.90
Total Net Profit 1142.58
-100%
-50%
0%
50%
100%
NZD/USD Jul 2025 - Sep 2025
1.33
Total Trades 79
Won Trades 44
Lost trades 35
Win Rate 55.70 %
Expected payoff 5.48
Gross Profit 1740.39
Gross Loss -1307.55
Total Net Profit 432.84
-100%
-50%
0%
50%
100%
USD/CAD Oct 2024 - Jan 2025
1.30
Total Trades 148
Won Trades 85
Lost trades 63
Win Rate 57.43 %
Expected payoff 1.34
Gross Profit 859.33
Gross Loss -661.39
Total Net Profit 197.94
-100%
-50%
0%
50%
100%
AUD/USD Oct 2024 - Jan 2025
1.22
Total Trades 115
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff 2.20
Gross Profit 1389.25
Gross Loss -1136.03
Total Net Profit 253.22
-100%
-50%
0%
50%
100%
EUR/USD Oct 2025 - Feb 2026
1.18
Total Trades 233
Won Trades 133
Lost trades 100
Win Rate 57.08 %
Expected payoff 5.00
Gross Profit 7633.46
Gross Loss -6468.92
Total Net Profit 1164.54
-100%
-50%
0%
50%
100%
USD/CAD Jul 2025 - Sep 2025
1.11
Total Trades 126
Won Trades 73
Lost trades 53
Win Rate 57.94 %
Expected payoff 0.97
Gross Profit 1209.49
Gross Loss -1087.49
Total Net Profit 122.00
-100%
-50%
0%
50%
100%
GBP/AUD Jan 2025 - Jul 2025
1.03
Total Trades 994
Won Trades 552
Lost trades 442
Win Rate 55.53 %
Expected payoff 0.93
Gross Profit 33126.34
Gross Loss -32206.51
Total Net Profit 919.83
-100%
-50%
0%
50%
100%
USD/JPY Jul 2025 - Sep 2025
1.03
Total Trades 324
Won Trades 190
Lost trades 134
Win Rate 58.64 %
Expected payoff 0.29
Gross Profit 3304.38
Gross Loss -3208.92
Total Net Profit 95.46
-100%
-50%
0%
50%
100%
GBP/USD Jan 2025 - Jul 2025
0.95
Total Trades 562
Won Trades 313
Lost trades 249
Win Rate 55.69 %
Expected payoff -2.10
Gross Profit 22836.17
Gross Loss -24018.27
Total Net Profit -1182.10
-100%
-50%
0%
50%
100%
USD/CHF Jul 2025 - Sep 2025
0.74
Total Trades 117
Won Trades 65
Lost trades 52
Win Rate 55.56 %
Expected payoff -9.40
Gross Profit 3126.03
Gross Loss -4226.20
Total Net Profit -1100.17
-100%
-50%
0%
50%
100%
AUD/USD Oct 2025 - Feb 2026
0.68
Total Trades 184
Won Trades 102
Lost trades 82
Win Rate 55.43 %
Expected payoff -6.73
Gross Profit 2679.74
Gross Loss -3918.87
Total Net Profit -1239.13
-100%
-50%
0%
50%
100%
AUD/USD Jan 2025 - Jul 2025
0.61
Total Trades 177
Won Trades 101
Lost trades 76
Win Rate 57.06 %
Expected payoff -70.98
Gross Profit 19639.24
Gross Loss -32202.47
Total Net Profit -12563.23
-100%
-50%
0%
50%
100%
EUR/USD Jan 2025 - Jul 2025
0.61
Total Trades 132
Won Trades 81
Lost trades 51
Win Rate 61.36 %
Expected payoff -146.25
Gross Profit 29856.64
Gross Loss -49161.66
Total Net Profit -19305.02
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
0.60
Total Trades 19
Won Trades 11
Lost trades 8
Win Rate 57.89 %
Expected payoff -1107.41
Gross Profit 31677.59
Gross Loss -52718.43
Total Net Profit -21040.84
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
0.60
Total Trades 22
Won Trades 12
Lost trades 10
Win Rate 54.55 %
Expected payoff -957.68
Gross Profit 31633.14
Gross Loss -52702.11
Total Net Profit -21068.97
-100%
-50%
0%
50%
100%
GBP/CAD Jan 2025 - Jul 2025
0.56
Total Trades 170
Won Trades 84
Lost trades 86
Win Rate 49.41 %
Expected payoff -43.77
Gross Profit 9304.85
Gross Loss -16746.54
Total Net Profit -7441.69
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
0.54
Total Trades 102
Won Trades 59
Lost trades 43
Win Rate 57.84 %
Expected payoff -10.48
Gross Profit 1250.72
Gross Loss -2319.70
Total Net Profit -1068.98
-100%
-50%
0%
50%
100%
USD/CAD Jan 2025 - Jul 2025
0.54
Total Trades 262
Won Trades 143
Lost trades 119
Win Rate 54.58 %
Expected payoff -12.45
Gross Profit 3779.08
Gross Loss -7040.07
Total Net Profit -3260.99
-100%
-50%
0%
50%
100%
GBP/AUD Jul 2025 - Sep 2025
0.34
Total Trades 115
Won Trades 57
Lost trades 58
Win Rate 49.57 %
Expected payoff -42.47
Gross Profit 2539.53
Gross Loss -7423.30
Total Net Profit -4883.77
-100%
-50%
0%
50%
100%
USD/CAD Jul 2025 - Sep 2025
0.31
Total Trades 106
Won Trades 57
Lost trades 49
Win Rate 53.77 %
Expected payoff -9.07
Gross Profit 437.36
Gross Loss -1399.21
Total Net Profit -961.85
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.29
Total Trades 166
Won Trades 89
Lost trades 77
Win Rate 53.61 %
Expected payoff -29.57
Gross Profit 1970.38
Gross Loss -6879.28
Total Net Profit -4908.90
-100%
-50%
0%
50%
100%
GBP/CAD Jul 2025 - Sep 2025
0.08
Total Trades 40
Won Trades 16
Lost trades 24
Win Rate 40.00 %
Expected payoff -122.07
Gross Profit 397.12
Gross Loss -5279.95
Total Net Profit -4882.83
-100%
-50%
0%
50%
100%

Comments