20_200 expert_v2

Author: Smirnov Pavel
Profit factor:
0.44
Price Data Components
Series array that contains open time of each bar
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt Closes Orders by itself
1 Views
0 Downloads
0 Favorites
20_200 expert_v2
//+------------------------------------------------------------------+
//|                                            20/200 expert v2.mq4  |
//|                                                    1H   EUR/USD  |
//|                                                    Smirnov Pavel |
//|                                                 www.autoforex.ru |
//+------------------------------------------------------------------+

#property copyright "Smirnov Pavel"
#property link      "www.autoforex.ru"

extern int TakeProfit = 20; // Óðîâåíü òåéêïðîôèò â ïóíêòàõ
extern int StopLoss = 200; // óðîâåíü ñòîïëîññ â ïóíêòàõ
extern int TradeTime=18;
extern int t1=7;
extern int t2=2;
extern int delta=7;
extern double lot = 0.1;
extern int Orders=1;
extern int MaxOpenTime=10000;

int ticket,total,cnt;
bool cantrade=true;
double closeprice;
double tmp;

int OpenLong(double volume=0.1)
{
  int slippage=10;
  string comment="20/200 expert v2 (Long)";
  color arrow_color=Red;
  int magic=0;

  ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLoss*Point,
                      Ask+TakeProfit*Point,comment,magic,0,arrow_color);
  if(ticket>0)
  {
    if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
    {
      return(0);
    }
    else
      {
        Print("OpenLong(),OrderSelect() - âûäàë îøèáêó : ",GetLastError()); 
        return(-1);
      }   
  }
  else 
  {
    Print("Error opening Buy order : ",GetLastError()); 
    return(-1);
  }
}
  
int OpenShort(double volume=0.1)
{
  int slippage=10;
  string comment="20/200 expert v2 (Short)";
  color arrow_color=Red;
  int magic=0;  
  
  ticket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,Bid+StopLoss*Point,
                      Bid-TakeProfit*Point,comment,magic,0,arrow_color);
  if(ticket>0)
  {
    if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
      {
        return(0);
      }
    else
      {
        Print("OpenShort(),OrderSelect() - âûäàë îøèáêó : ",GetLastError()); 
        return(-1);
      }    
  }
  else 
  {
    Print("Error opening Sell order : ",GetLastError()); 
    return(-1);
  }
}

int init()
{
  return(0);
}

int deinit()
{   
  return(0);
}

int start()
{
  if((TimeHour(TimeCurrent())>TradeTime)) cantrade=true;  
  // ïðîâåðÿåì åñòü ëè îòêðûòûå îðäåðà ...
  total=OrdersTotal();
  if(total<Orders)
  {
    // ... åñëè íåò íè îäíîãî îòêðûòîãî îðäåðà, òî èäåì äàëüøå
    // ïðîâåðÿåì íàñòàëî ëè âðåìÿ äëÿ òîðãîâëè
    if((TimeHour(TimeCurrent())==TradeTime)&&(cantrade))
    {
      // ... åñëè íàñòàëî âðåìÿ, òî
      if ((Open[t1]-Open[t2])>delta*Point) //Åñëè öåíà èçìåíèëàñü íà âåëè÷èíó delta
      {
        //óñëîâèå âûïîëíåíî çíà÷èò âõîäèì â êîðîòêóþ ïîçèöèþ:
        // ïðîâåðÿåì åñòü ëè ñâîáîäíûå äåíüãè äëÿ îòêðûòèÿ êîðîòêîé ïîçèöèè
        if(AccountFreeMarginCheck(Symbol(),OP_SELL,lot)<=0 || GetLastError()==134)
        {
          Print("Not enough money");
          return(0);
        }
        OpenShort(lot);
        cantrade=false; //çàïðåùàåì òîðãîâàòü ïîâòîðíî äî ñëåäóþùåãî áàðà
        return(0);
      }
      if ((Open[t2]-Open[t1])>delta*Point) //Åñëè öåíà èçìåíèëàñü íà âåëè÷èíó delta
      {
        // óñëîâèå âûïîëíåíî çíà÷èò âõîäèì â äëèííóþ ïîçèöèþ
        // ïðîâåðÿåì åñòü ëè ñâîáîäíûå äåíüãè íà ñ÷åòó
        if(AccountFreeMarginCheck(Symbol(),OP_BUY,lot)<=0 || GetLastError()==134)
        {
          Print("Not enough money");
          return(0);
        }
        OpenLong(lot);
        cantrade=false;
        return(0);
      }
    }
  }
// áëîê ïðîâåðêè âðåìåíè æèçíè ñäåëêè, åñëè Í=0, òî íå ïðîâîäèì ïðîâåðêó.
  if(MaxOpenTime>0)
  {
    for(cnt=0;cnt<total;cnt++)
    {
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         tmp = (TimeCurrent()-OrderOpenTime())/3600.0;
         if ((NormalizeDouble(tmp,8)-MaxOpenTime)>=0)
        {     
          RefreshRates();
          if (OrderType()==OP_BUY)
            closeprice=Bid;
          else  
            closeprice=Ask;          
          if (OrderClose(OrderTicket(),OrderLots(),closeprice,10,Green))
          {
            Print("Ïðèíóäèòåëüíîå çàêðûòèå ñäåëêè - ¹",OrderTicket());
            OrderPrint();
          }
          else 
            Print("OrderSelect() â áëîêå ïðîâåðêè âðåìåíè æèçíè ñäåëêè âåðíóë îøèáêó - ",GetLastError());        
        } 
      }
      else 
        Print("OrderSelect() â áëîêå ïðîâåðêè âðåìåíè æèçíè ñäåëêè âåðíóë îøèáêó - ",GetLastError());
    } 
  }     
  return(0);
}

Profitability Reports

USD/CAD Oct 2024 - Jan 2025
0.50
Total Trades 66
Won Trades 55
Lost trades 11
Win Rate 83.33 %
Expected payoff -1.18
Gross Profit 78.50
Gross Loss -156.10
Total Net Profit -77.60
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
0.27
Total Trades 63
Won Trades 46
Lost trades 17
Win Rate 73.02 %
Expected payoff -3.94
Gross Profit 92.00
Gross Loss -340.00
Total Net Profit -248.00
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.56
Total Trades 66
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -1.33
Gross Profit 112.00
Gross Loss -200.00
Total Net Profit -88.00
-100%
-50%
0%
50%
100%

Comments