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);
}



Sample





Analysis



Market Information Used:

Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Checks for the total of open orders
It Closes Orders by itself

Other Features: