Посмотрите, где ошибка

 
//+------------------------------------------------------------------+
//|                                                         Exp2.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
 
extern double TakeProfit = 150;            
extern double StopLoss = 100;              
extern double lev= 100;  
extern double TR= 20;
extern double Lots = 0.1;                       
extern double HouerOpen = 10;       
extern double MinutesOpen = 18;
extern double SecondsOpen = 30;
 
double HourCl = 12;
double MinutesCl = 0;
double SecondsCl = 1;
 
 
bool  UseCurrSymbol = False;        // Использовать только один инструмент
int   Slippage      = 5;            // Проскальзывание цены
color clCloseBuy    = Blue;         // Цвет закрытия покупки
color clCloseSell   = Red;          // Цвет закрытия продажи
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
double pBid, pAsk;
double Vcp1, MyInd, MySL;
int Os, total, OI, ticket, ho, mo, OP, cnt, sred, so, mcl, scl, hcl, cnt1;  
mo=Minute(); 
so=Seconds(); 
ho=Hour(); 
 
mcl=Minute(); 
scl=Seconds(); 
hcl=Hour(); 
 
//--------------------------------------------------------------------------------------------------   
//                      Блок выставления ордеров
//
//--------------------------------------------------------------------------------------------------   
   if(mo==MinutesOpen && so>=SecondsOpen )
   
   
  // if(ho==HouerOpen )
     {
   //----   
     if(OrderTotal(OP_BUYSTOP)==0)
       {
       OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+lev*Point,3,(Ask+lev*Point)-StopLoss*Point,Ask+(TakeProfit+lev)*Point,"Покупка",222,0,Green);
       }
   //----
     if(OrderTotal(OP_SELLSTOP)==0)
       {
       OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-lev*Point,3,(Bid-lev*Point)+StopLoss*Point,Bid-(TakeProfit+lev)*Point,"Продажа",222,0,Green);
       }
   //----
     }
   }   
//----
   return(0);
  
//+------------------------------------------------------------------+ 
int OrderTotal(int type)
  {
  int order=0;
  for(int pos=OrdersTotal()-1; pos>=0; pos--)
    {
    if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
      {
      if(OrderSymbol()==Symbol() && OrderType()==type)
        {
        order++;             
        }
      }
    else
      Print("Ошибка ", GetLastError());
    }
  return(order);
    }
  
  //================================================================================+
  //        Блок удаления и закрытия ордеров
  //================================================================================+
  
  
if (OrdersTotal()>0) 
// закрываем открытые позиции и удаляем ордера
      
 
           if (Hour()==10 && Minute()==19 && OrderMagicNumber()==222)
            {
               if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
               {
                  OrderDelete(OrderTicket());
               }
               if (OrderType()==OP_BUY)
               {
                  OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
               }
               if (OrderType()==OP_SELL)
               {
                  OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
               }
            }

Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?

Нужно чтоб в заданное время закрывал ордер и удалял отложенный

Спасибо

 
Прежде, чем удалять или закрывать ордер, его нужно выбрать:
   for(cnt=0;cnt<OrdersTotal();cnt++) 
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
 
      ............................................
   }
 
Analitik:
Прежде, чем удалять или закрывать ордер, его нужно выбрать:
   for(cnt=0;cnt<OrdersTotal();cnt++) 
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
 
      ............................................
   }

Выдает ошибку: 'cnt' - variable  not define. Хотя она описана...
 
maxtor:

Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?


Нужно чтоб в заданное время закрывал ордер и удалял отложенный


Спасибо


 пробуйте:)

//+------------------------------------------------------------------+
//|                                                         Exp2.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
 
extern int TakeProfit = 150;            
extern int StopLoss = 100;              
extern int lev= 100;  
extern int TR= 20;
extern double Lots = 0.1;                       
extern int HouerOpen = 10;       
extern int MinutesOpen = 18;
extern int HourClose = 12;
extern int MinutesClose = 0;
//----
 
int pos;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//---- 
 
 
//+------------------------------------------------------------------+
//|Блок выставления ордеров                                          |
//+------------------------------------------------------------------+
   if(TimeHour(TimeCurrent())==HouerOpen && TimeMinute(TimeCurrent())==MinutesOpen)//здесь может не сработать при отсутствии
                                                                                   //цены в это время
     {
   //----   
     if(OrderTotal(OP_BUYSTOP)==0)
       {
       OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+lev*Point,3,
                                         (Ask+lev*Point)-StopLoss*Point,
                                          Ask+(TakeProfit+lev)*Point,"Покупка",222,0,Blue);
       }
   //----
     if(OrderTotal(OP_SELLSTOP)==0)
       {
       OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-lev*Point,3,
                                          (Bid-lev*Point)+StopLoss*Point,
                                           Bid-(TakeProfit+lev)*Point,"Продажа",222,0,Red);
       }
   //----
     }
//+------------------------------------------------------------------+
//|удаление всех ордеров по данному инструменту                      |
//+------------------------------------------------------------------+
   if(TimeHour(TimeCurrent())==HourClose && TimeMinute(TimeCurrent())==MinutesClose)//и здесь тоже может не сработать
     {
     for(pos=OrdersTotal()-1; pos>=0; pos--)
       {
       if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
         {
         if(OrderSymbol()==Symbol())
           {
         //----
            if(OrderType()==OP_BUY)
              {
              OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Blue); 
              } 
         //----
            if(OrderType()==OP_SELL)
              {
              OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Red); 
              }
         //----
            if(OrderType()==OP_BUYSTOP)
              {
              OrderDelete(OrderTicket(),Blue); 
              }
         //----
            if(OrderType()==OP_SELLSTOP)
              {
              OrderDelete(OrderTicket(),Red);
              }
         //----
           }               
         }
       else
         Print("Ошибка ", GetLastError());
       }
     }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+ 
int OrderTotal(int type)
  {
  int order=0;
  for(int pos=OrdersTotal()-1; pos>=0; pos--)
    {
    if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
      {
      if(OrderSymbol()==Symbol() && OrderType()==type)
        {
        order++;             
        }
      }
    else
      Print("Ошибка ", GetLastError());
    }
  return(order);
    }
 
conys:
maxtor:

Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?


Нужно чтоб в заданное время закрывал ордер и удалял отложенный


Спасибо


пробуйте:)

 


Спасибо, конечно. Все красиво, удаляет и закрывает ордера хорошо. Только ставит ордера не всегда. Вот в первом варианте на этой странице, ставятся ордера четко. Нельзя ли взять блок выставления ордеров с первого варианта. У меня не выходит - то переменная отсутствует, то скобка неправильная. Не программист, одним словом. .. :)
 
maxtor:
conys:

maxtor:

Посмотрите, в блоке закрытия и удаления ордеров, где ошибка?



Нужно чтоб в заданное время закрывал ордер и удалял отложенный



Спасибо


 пробуйте:)

 


Спасибо, конечно. Все красиво, удаляет и закрывает ордера хорошо. Только ставит ордера не всегда. Вот в первом варианте на этой странице, ставятся ордера четко. Нельзя ли взять блок выставления ордеров с первого варианта. У меня не выходит - то переменная отсутствует, то скобка неправильная. Не программист, одним словом. .. :)


А вы где делали эксперемент, в тестере? Или уже пытались выйти в реалку? У меня на тестере не пропущенно не одной сделки,



но это на тестере. На демо а темболее в реале в точно указанное время не будет например связи или цены или ещё чегонебудь и ордера не выставяться. Надо указывать не точное время а какойто промежуток времени. Например так:

   if(TimeHour(TimeCurrent())>=HouerOpen && TimeMinute(TimeCurrent())>=MinutesOpen && 
      TimeHour(TimeCurrent())<=HouerOpen+1 && TimeMinute(TimeCurrent())<=MinutesOpen+10)//для открытия
 
 
 
   if(TimeHour(TimeCurrent())>=HourClose && TimeMinute(TimeCurrent())>=MinutesClose && 
      TimeHour(TimeCurrent())<=HourClose+1 && TimeMinute(TimeCurrent())<=MinutesClose+10)//для закрытия
Ну и это ещё не всё, много ещё что надо для реальной торговли, хотя в таком виде уже можно пробовать "дёргаться" на рынке.
Причина обращения: