Советник должен открыт каждый час по один ордер. В сутки 24 ордеров.
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 принудительно поставил равным одному для проверки. Если это какео то условие, то его надо посчитать заранее и присвоить соответствущее значение.
Обратите внимание на выделенные переменные. mag лучше использовать, чтоб советник не трогал чужие ордера.
varH1BiasDirection принудительно поставил равным одному для проверки. Если это какео то условие, то его надо посчитать заранее и присвоить соответствущее значение.
5 часов равно 5-ти в течении всего часа// пример
подозреваю что не будет работать
нужно держать в уме предыдущее время
а также инициализировать эту же самую переменную, чтобы при часе равном нулю все работало нормально
то есть если включить советник в это время
например, int prevHour=-1;
также, запоминать предыдущее время желательно только в случае успешного открытия ордера
int prevHour=-1; //====== if(d.hour!=prevHour) {...} prevHour=d.hour;
помогите исправить советник
ДЕКОМПИЛЯЦИЯ ЗАПРЕЩЕНА!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Советник должен открыт каждый час по один ордер. В сутки 24 ордеров.
int start(){