Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что в MQL5 появилась обработка событий?
Bezhan
33
Bezhan 2015.04.19 18:03 

 Советник должен открыт каждый час по один ордер. В сутки 24 ордеров.  

int start(){
//+------------------------------------------------++------------------------------------------------+
//+------------------------------------------------++------------------------------------------------+
double Lots   =0.1;
datetime Time_Stamp;

int varH1BiasDirection,OrderSetFlag,Pending_Order_Distance;
double Price_Buy=NormalizeDouble(Ask,Digits)+(Pending_Order_Distance*Point);
double Price_Sell=NormalizeDouble(Bid,Digits)-(Pending_Order_Distance*Point);

if(varH1BiasDirection == 1 && Time_Stamp != Hour())
{
   if(OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,0,0,0,0,Green)>0)
   {
      OrderSetFlag = 1; Time_Stamp = Hour();
   }
   
   if(OrderSend(Symbol(),OP_SELL,Lots,Bid,4,0,0,0,0,0,Red)>0)
   {
      OrderSetFlag = 1; Time_Stamp = Hour();
   }
}

return(0);}
Vladimir Karputov
Модератор
42437
Vladimir Karputov 2015.04.19 18:04  
Код в сообщение форума лучше вставлять так: Правильно вставляем код на форуме
Victor Nikolaev
Модератор
14364
Victor Nikolaev 2015.04.20 05:43  
bezhan.ganj:

 Советник должен открыт каждый час по один ордер. В сутки 24 ордеров.  

Похоже Вы из советника все выкинули. Пока используются для анализа не инициализированные переменные
Dmitiry Ananiev
6507
Dmitiry Ananiev 2015.04.24 13:32  
input int mag=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//+------------------------------------------------++------------------------------------------------+
//+------------------------------------------------++------------------------------------------------+
   double Lots=0.1;

   int varH1BiasDirection=1,Pending_Order_Distance;
   double Price_Buy=NormalizeDouble(Ask,Digits)+(Pending_Order_Distance*Point);
   double Price_Sell=NormalizeDouble(Bid,Digits)-(Pending_Order_Distance*Point);

   bool BUY,SELL;
   CheckOpenHour(BUY,SELL,mag);

   if(varH1BiasDirection==1 && !BUY)
      int ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,0,0,0,0,Green);

   if(varH1BiasDirection==1 && !SELL)
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,4,0,0,0,0,0,Red);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

void CheckOpenHour(bool &BUY,bool &SELL,int _mag)
  {

   BUY=SELL=false;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==_mag)
        {
         datetime opentime=OrderOpenTime();
         MqlDateTime d;
         TimeToStruct(opentime,d);

         if(d.year==Year() && d.mon==Month() && d.day==Day() && d.hour==Hour())
           {
            if(OrderType() ==OP_BUY) BUY = true;
            if(OrderType() ==OP_SELL) SELL = true;
           }

        }
     }
  }
//+------------------------------------------------------------------+

Обратите внимание на выделенные переменные. mag лучше использовать, чтоб советник не трогал чужие ордера. 

varH1BiasDirection принудительно поставил равным одному для проверки. Если это какео то условие, то его надо посчитать заранее и присвоить соответствущее значение.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий