HlopMaster 2.1

Author: FORTRADER.RU, ����, ftyuriy@gmail.com, modified by Evgeniy Trofimov
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
0 Views
0 Downloads
0 Favorites

Profitability Reports

AUD/USD Oct 2024 - Jan 2025
122.00 %
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%
GBP/USD Oct 2024 - Jan 2025
29.00 %
Total Trades 166
Won Trades 89
Lost trades 77
Win Rate 0.54 %
Expected payoff -29.57
Gross Profit 1970.38
Gross Loss -6879.28
Total Net Profit -4908.90
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
54.00 %
Total Trades 102
Won Trades 59
Lost trades 43
Win Rate 0.58 %
Expected payoff -10.48
Gross Profit 1250.72
Gross Loss -2319.70
Total Net Profit -1068.98
-100%
-50%
0%
50%
100%
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()
//+------------------------------------------------------------------+

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 ---