Здраствуйте,написал советник, который должен закрывать отложеные ордера в конце дня,как ето реализовать

 

Вот пример кода

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

//+------------------------------------------------------------------+

extern double Lots       = 0.1;

extern int    BarCount   = 10;

extern int    HourStart  = 11;

extern int    HourStop   = 23;

extern int    StopLoss   = 0;

extern int    TakeProfit = 0;

extern int    Magic      = 1488;

extern int    Indent     = 10;

extern int    PipStop    = 10;

extern int    Slippage   = 3;

//+------------------------------------------------------------------+

double minprice =  999999, mp,

       maxprice = -999999,

       SL, TP;

int ticket;

int OnInit()

{



   



   return(INIT_SUCCEEDED);

}

//+------------------------------------------------------------------+



//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{



   

}

//+------------------------------------------------------------------+



//+------------------------------------------------------------------+

void OnTick()

{

   GetMinPrice();

   GetMaxPrice();

   

     

   if(TimeHour(TimeCurrent())==HourStart)

   {

      if(BuyStopCount()==0 && BuyCount()==0)

      {

         SL=NormalizeDouble(maxprice-StopLoss*Point,_Digits);

         TP=NormalizeDouble(maxprice+TakeProfit*Point,_Digits);

         ticket=OrderSend(Symbol(), OP_BUYSTOP, Lots, maxprice, Slippage, 0, 0, "", Magic, 0, clrAliceBlue);

         

         if(ticket<0)

            Print("Error BUYSTOP"); 

      }

      if(SellStopCount()==0 && SellCount()==0)

      {   

         SL=NormalizeDouble(minprice+StopLoss*Point,_Digits);

         TP=NormalizeDouble(minprice-TakeProfit*Point,_Digits);

         ticket=OrderSend(Symbol(), OP_SELLSTOP, Lots, minprice, Slippage, 0, 0, "", Magic, 0, clrRed);

      

         if(ticket<0)

            Print("Error SELLSTOP");

      }

   }

   

   Comment("MinPrice: " + DoubleToStr(minprice,_Digits) + "\n"+

           "MaxPrice: " + DoubleToStr(maxprice,_Digits)); 

           

   

}  





//+------------------------------------------------------------------+

int BuyCount()

{

   int count=0;

   

   for(int i=OrdersTotal()-1;i>=0;i--)

   {

     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true &&

        OrderSymbol()==Symbol() && 

        OrderMagicNumber()==Magic &&

        OrderType()==OP_BUY) 

        

     {

         count++;

     }

   }

   return(count);

   if (TimeHour(TimeCurrent())==HourStop)

   {

   if (OrdersTotal()>0)

      {

     for(int i=OrdersTotal()-1; i>=0; i--)

     if(OrderClose(OrderTicket(), OrderLots(),NormalizeDouble(Bid,_Digits),Slippage))

        Print("Buy Close OK!");

     else

        Print("Buy Close Error !"); 

      } 

   }

}

//+------------------------------------------------------------------+

int BuyStopCount()

{

   int count=0;

   

   for(int i=OrdersTotal()-1;i>=0;i--)

   {

     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true &&

        OrderSymbol()==Symbol() &&  

        OrderMagicNumber()==Magic &&

        OrderType()==OP_BUYSTOP) 

        

     {

         count++;

     }

   }

   return(count);

   

   if (TimeHour(TimeCurrent())==HourStop)

   {

      if (OrdersTotal()>0)

      {

         OrderDelete(OrderTicket());

         return(0);

      }

   }

}

//+------------------------------------------------------------------+

int SellStopCount()

{

   int count=0;

   

   for(int i=OrdersTotal()-1;i>=0;i--)

   {

     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true &&

        OrderSymbol()==Symbol() && 

        OrderMagicNumber()==Magic &&

        OrderType()==OP_SELLSTOP)

        

     {

         count++;

     }

   }

   return(count);

   if (TimeHour(TimeCurrent())==HourStop)

   {

      if (OrdersTotal()>0)

      {

         OrderDelete(OrderTicket());

         return(0);

      }

   } 

}

//+------------------------------------------------------------------+

int SellCount()

{

   int count=0;

   

   for(int i=OrdersTotal()-1;i>=0;i--)

   {

     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true &&

        OrderSymbol()==Symbol() && 

        OrderMagicNumber()==Magic &&

        OrderType()==OP_SELL) 

        

     {

         count++;

     }

   }

   return(count);

   if (TimeHour(TimeCurrent())==HourStop)

   {

      if (OrdersTotal()>0)

      {

         for(int i=OrdersTotal()-1; i>=0; i--)  

         if(OrderClose(OrderTicket(), OrderLots(),NormalizeDouble(Ask,_Digits),Slippage))

            Print("Sell Close OK!");

         else

            Print("Sell Close Error !");  

      }

   }

}

//+------------------------------------------------------------------+



void GetMinPrice()

{

        

   for(int i=0; i<BarCount; i++)

   {

      mp = iLow(Symbol(), PERIOD_CURRENT, i);

      if(mp < minprice)

         minprice = mp;

   }



   return;

}

//+------------------------------------------------------------------+

void GetMaxPrice()

{

   for(int i=0; i<BarCount; i++)

   {

      mp = iHigh(Symbol(), PERIOD_CURRENT, i);

      if(mp > maxprice)

         maxprice = mp;

   }

   

   return;

}
Automated Trading and Strategy Testing
Automated Trading and Strategy Testing
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
void OnTick() 
{
if (Hour()==23 && Minute==58) DeletPendingOreders();
}

void DeletPendingOreders()
{

for (i=OrdersTotal()-1;i>=0;i--)
{
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
 if (OrderType() != OP_BUY || OrderType() != OP_SELL) 
OrderDelete(OrderTicket()); 
}

}

Вот как то так
 
Dmitiry Ananiev:

if (OrderType() != OP_BUY && OrderType() != OP_SELL)
 
Andrei Fandeev:

:)
if (OrderType() > 1)
 
Taras Slobodyanik:
:)
Согласен ))
Но это уже оптимизация кода. А я указал на ошибку.
 
Andrei Fandeev:
Согласен ))
Но это уже оптимизация кода. А я указал на ошибку.


а как ето реализовать в моем коде?

 
AshlyAdams:


а как ето реализовать в моем коде?


Код Вам дали. Нужно всего лишь вставить в свой. Что еще нужно то? В рот уже положили. Разжевать и проглотить тоже за Вас?
 
Ihor Herasko:

Код Вам дали. Нужно всего лишь вставить в свой. Что еще нужно то? В рот уже положили. Разжевать и проглотить тоже за Вас?

Дело в том чтоя вставил етот код,но он всеровно не удаляет ети ордера в конце дня,а мне надо чтоб он в конце дня удалял(в 23.00) и на следующий день открывал новый(в 10.00)
 
AshlyAdams:

Дело в том чтоя вставил етот код,но он всеровно не удаляет ети ордера в конце дня,а мне надо чтоб он в конце дня удалял(в 23.00) и на следующий день открывал новый(в 10.00)
Иногда по пятницам работа прекращается в 22:00, но и это не спасёт. Надо закрывать\удалять ордера чуть раньше.
 
Alexey Viktorov:
Иногда по пятницам работа прекращается в 22:00, но и это не спасёт. Надо закрывать\удалять ордера чуть раньше.

не помогло
 
Alexey Viktorov:
Иногда по пятницам работа прекращается в 22:00, но и это не спасёт. Надо закрывать\удалять ордера чуть раньше.

те ордеры,которые сработали закрываются в 23,а те которые не сработали остаются