Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зачем продавать продукты в MetaTrader AppStore? Узнай из статьи!
EugenioKP1983
166
EugenioKP1983 2016.08.14 17:11 

Всем Привет.

Поставил перед собой задачу а решить не могу.

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


Вот такая конструкция . Если в течении конкретного часа пришол сигнал то нужно проверить нет ли ордера открытого в такомже интервале и если нет то открыть только 1 для Шел или 1 для Бай

Соответственно если есть топроигнорить.

int BuyCount_H0 () /*Ôóíêöèÿ âû÷èñëÿþùàÿ è ïåðåäàþùàÿ îáùåå êîëëè÷åñòâî îðäåðîâ*/
 {
   int countBC =0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==true && OrderMagicNumber() == Magic && OrderType() == OP_BUY) && OrderOpenTime() >= TimeMinute(TimeCurrent())==22*00*00 && OrderOpenTime<= TimeMinute(TimeCurrent()) == 22*00*59; 
     {
      countBC++;
     }
 
    }
   return(countBC);
}

Для обработки вот этого диапазона

if(TimeMinute(TimeCurrent()) <=22*00*05&&TimeMinute(TimeCurrent()) >=22*00*59 ) // 22
  {
  //--  
   H21_SIG_BAY_1 = GlobalVariableGet(GV_H21_SIG_BAY_1);//Var na Buy             //Prinima. peremennie s qasa nixhe
   H21_SIG_SELL_1 = GlobalVariableGet(GV_H21_SIG_SELL_1);//Var na Sell
   H21_PROF_FACTOR_BAY_1 = GlobalVariableGet(GV_H21_PROF_FACTOR_BAY_1);//VAR TP BUY
   H21_PROF_FACTOR_SELL_1 = GlobalVariableGet(GV_H21_PROF_FACTOR_SELL_1);//VAR TP SEL
//-------------------------------------------------------------------------------------   
   H21_SIG_BAY_2 = GlobalVariableGet(GV_H21_SIG_SELL_2);//Var na Buy             //Prinima. peremennie s qasa nixhe
   H21_SIG_SELL_2 = GlobalVariableGet(GV_H21_SIG_SELL_2);//Var na Sell
   H21_PROF_FACTOR_BAY_2 = GlobalVariableGet(GV_H21_PROF_FACTOR_BAY_2);//VAR TP BUY
   H21_PROF_FACTOR_SELL_2 = GlobalVariableGet(GV_H21_PROF_FACTOR_SELL_2);//VAR TP SEL

//-- 
 
 
 
 
//-------------------------------------------------------------------------------------   
   if(H21_SIG_BAY_1>0.00000||H21_SIG_BAY_2>0.00000)//USLOVIE DL^YA BUY
   {
   Alert(H21_PROF_FACTOR_BAY_1,H21_PROF_FACTOR_BAY_2);
   
   }
//-------------------------------------------------------------------------------------
   if(H21_SIG_SELL_1>0.0000||H21_SIG_SELL_2>0.0000)//SIGNAL NA SELL
   
   {
   
   Alert(H21_PROF_FACTOR_SELL_1,H21_PROF_FACTOR_SELL_2);
   
   }
//-------------------------------------------------------------------------------------
  }

EugenioKP1983
166
EugenioKP1983 2016.08.14 17:40  
int BuyCount_H21 () /*Ôóíêöèÿ âû÷èñëÿþùàÿ è ïåðåäàþùàÿ îáùåå êîëëè÷åñòâî îðäåðîâ*/
 {
   int countBC =0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==true && OrderMagicNumber() == Magic && OrderType() == OP_BUY && OrderOpenTime() >= 21*00*00 && OrderOpenTime ()<=  21*00*59); 
     {
      countBC++;
     }
 
    }
   return(countBC);
}


Попробавал так но получаю ошибку


empty controlled statement found

LRA
321
LRA 2016.08.14 17:51  

EugenioKP1983:  Попробавал так но получаю ошибку

 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==true && ............. && OrderOpenTime ()<=  21*00*59);

Следует убрать пустой оператор (т.е. ";") в конце этой длинной строки - вот и все!!!
EugenioKP1983
166
EugenioKP1983 2016.08.14 18:58  
LRA:
Следует убрать пустой оператор (т.е. ";") в конце этой длинной строки - вот и все!!!

Спасибо, я  обычно на какой-то запятой палюсь.
LRA
321
LRA 2016.08.15 06:46  
И еще можно в OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==true  убрать  ==true т.е. оставить OrderSelect(i,SELECT_BY_POS,MODE_TRADES) будет короче и лучше
EugenioKP1983
166
EugenioKP1983 2016.08.16 21:51  
LRA:
И еще можно в OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==true  убрать  ==true т.е. оставить OrderSelect(i,SELECT_BY_POS,MODE_TRADES) будет короче и лучше

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