Ошибки, баги, вопросы - страница 3283

 
MrBrooklin #:

Здравствуйте, уважаемые разработчики!

Вопрос: когда в MQL5 появится штатная функция MarketClose()?

Можно, конечно, начать "долбить" торговый сервер постоянными запросами на установку отложенного ордера с каким-нибудь огромным отступом от текущей цены, а после его установки, проверять код возврата результата и тут же удалять. Есть ещё более экзотические варианты. Но это не камильфо!!!

И всё-таки, когда?

С уважением, Владимир.

В спецификации на инструмент не пробовали узнать о разрешении торговать?

 
Aleksey Vyazmikin #:

Вот кусочек из моего кода

Вроде как все работает - чего не хватает?

Наверно и обратное действие должно быть Vector To Array,
вопрос то за это направление был.
А за Assign спс, что-то упустил из виду.

 
Aleksey Vyazmikin #:

В спецификации на инструмент не пробовали узнать о разрешении торговать?

Нет, Алексей, не пробовал. Можно чуть подробнее?

С уважением, Владимир.

 
Roman #:

Наверно и обратное действ должно быть Vector To Array
А за Assign спс, что-то упустил из виду.

Пожалуйста. Согласен, хотя бы в одномерным массив нужно. Но и цикл не так и плохо в целом.

 
MrBrooklin #:

Нет, Алексей, не пробовал. Можно чуть подробнее?

С уважением, Владимир.

// --- Операции выполняются только при появлении следующего бара
   TimeM1=iTime(Symbol(),PERIOD_M1,0);
   if(TimeN_M1==0)TimeN_M1=TimeM1;
   if(TimeN_M1==TimeM1)return;
   TimeN_M1=TimeM1;
   if (TimeM1< dt_FromX && TimeM1 > dt_ToX)return;
// --- Операции выполняются только при появлении следующего бара
   TimeD1=iTime(Symbol(),PERIOD_D1,0);
   if(TimeN_M1==0)TimeN_D1=TimeD1;
   if(TimeN_D1!=TimeD1)
   {
// --- Узнаем, когда можно торговать согласно спецификации на инструмент, и если сейчас нельзя то выходим 
   if(TimeToTradeSpecification(Symbol(),0,dt_FromX,dt_ToX)==false)return;       
   }
   TimeN_D1=TimeD1;

//+------------------------------------------------------------------+
//|Определяем время начала и окончания торговой сессии и можно ли торговать сейчас
//+------------------------------------------------------------------+
datetime dt_FromX, dt_ToX;
bool b_resX = false;
bool TimeToTradeSpecification(string s_Symbol,int i_SessionIndex,datetime &dt_From,datetime &dt_To)
{
   int      i_FromHours;
   int      i_FromMinutes;
   
   int      i_ToHours;
   int      i_ToMinutes;
   bool     b_Result = false;
   
   MqlDateTime k_MqlDateTime;
   TimeToStruct(TimeCurrent(),k_MqlDateTime);
   
   int i_DayOfWeek = k_MqlDateTime.day_of_week;    
   
   SymbolInfoSessionTrade(s_Symbol,(ENUM_DAY_OF_WEEK)i_DayOfWeek,i_SessionIndex,dt_From,dt_To);
   
   MqlDateTime k_MqlDateTimeFrom;
   TimeToStruct(dt_From,k_MqlDateTimeFrom);
   i_FromHours   = k_MqlDateTimeFrom.hour;
   i_FromMinutes = k_MqlDateTimeFrom.min;
   
   MqlDateTime k_MqlDateTimeTo;
   TimeToStruct(dt_To,k_MqlDateTimeTo);
   i_ToHours     = k_MqlDateTimeTo.hour;
   i_ToMinutes   = k_MqlDateTimeTo.min;
   //
   k_MqlDateTime.hour = i_FromHours;
   k_MqlDateTime.min  = i_FromMinutes;
   k_MqlDateTime.sec = 0;
   dt_From = StructToTime(k_MqlDateTime);
   //
   k_MqlDateTime.hour = i_ToHours;
   k_MqlDateTime.min  = i_ToMinutes;
   k_MqlDateTime.sec  = 0;
   if (i_ToHours == 0)
   {
      k_MqlDateTime.hour = 23;
      k_MqlDateTime.min  = 59;
      k_MqlDateTime.sec  = 59;
   }
   dt_To = StructToTime(k_MqlDateTime);
   
   //if (TimeCurrent() >= dt_From && TimeCurrent() <= dt_To)
   if (iTime(Symbol(),PERIOD_M1,0) >= dt_From && iTime(Symbol(),PERIOD_M1,0) <= dt_To)
      b_Result = true;   
      
   return(b_Result);
}

Думаю, разберетесь из этой вырезки. Я определяю раз в день условия.

 
Aleksey Vyazmikin #:

Думаю, разберетесь из этой вырезки. Я определяю раз в день условия.

Спасибо за код. Но суть вопроса состояла в том, чтобы не изгаляться разными способами, а просто использовать готовую (штатную) функцию. Примерно так:

if(MarketClose()) // если рынок закрыт
{
  тут вставляем своё условие
}

С уважением, Владимир.

 
MrBrooklin #:

Спасибо за код. Но суть вопроса состояла в том, чтобы не изгаляться разными способами, а просто использовать готовую (штатную) функцию. Примерно так:

С уважением, Владимир.

Это противоречит концепции создателей платформы.

 
 bbHandle= iBands(_Symbol,ENUM_PERIOD_CURRENT,20, PRICE_CLOSE);
Help correct handle for ibands for EA.
help
 
Documentation on MQL5: Technical Indicators / iBands
Documentation on MQL5: Technical Indicators / iBands
  • www.mql5.com
iBands - Technical Indicators - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Aleksey Vyazmikin #:

В спецификации на инструмент не пробовали узнать о разрешении торговать?

А что, открывашка и бкс уже начали заполнять эти поля соответствующим образом?

Причина обращения: