Как определить разрешена ли торговля?

 
 есть время открытия биржи , время клиринга и время закрытия биржи . как определить в данный момент разрешена торговля или я попал на клиринг ? если я правильно понял нужно использовать SYMBOL_TRADE_MODE_DISABLED . если можно пример.
 
dimka8:
 есть время открытия биржи , время клиринга и время закрытия биржи . как определить в данный момент разрешена торговля или я попал на клиринг ? если я правильно понял нужно использовать SYMBOL_TRADE_MODE_DISABLED . если можно пример.
      if(SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE)!=SYMBOL_TRADE_MODE_DISABLED)
         bool sender=OrderSend(request,result);
 
dimka8:
 есть время открытия биржи , время клиринга и время закрытия биржи . как определить в данный момент разрешена торговля или я попал на клиринг ? если я правильно понял нужно использовать SYMBOL_TRADE_MODE_DISABLED . если можно пример.

Дело в том, что время клирингов часто изменяется.

Поэтому я посоветую вводить время в настройках эксперта.

Я делаю это так:

input string TimeStDay = "14:04:00";         //Время начала дневной сессии
input string TimeStEvn = "19:05:00";         //Время начала вечерней сессии
 
Vladislav Andruschenko:
спасибо . вроде работает ,посмотрим что будет при закрытии биржы
 
dimka8:
спасибо . вроде работает ,посмотрим что будет при закрытии биржы

А ничего не будет.

Потому что SYMBOL_TRADE_MODE_DISABLED - это не время работы биржи.

Это общий признак разрешения торговли по инструменту. 

Время нужно проверять по таймеру, ориентируясь на настройки времени, указанные в начальных настройках советника. 

int OnInit()
{
  //--- Установка таймера
  if ( !EventSetMillisecondTimer( 500) )  //0.5 sec
  {
    MessageBox( "Таймер не установлен!", "Ошибка", MB_OK | MB_ICONHAND );
    return(INIT_FAILED);
  } 
  return(INIT_SUCCEEDED);
}

void OnDeinit( const int reason )
{
//--- удаление таймера
  EventKillTimer();
}

//+------------------------------------------------------------------+
//| Expert timer function                                            |
//+------------------------------------------------------------------+
void OnTimer()
{
  MqlDateTime tick_time;
//---  
  if ( CheckTradingTime( tick_time ) )  //проверка торгового времени
  {
    //Торгуем
  }
}
 
Михаил:

А ничего не будет.

Потому что SYMBOL_TRADE_MODE_DISABLED - это не время работы биржи.

Это общий признак разрешения торговли по инструменту. 

Время нужно проверять по таймеру, ориентируясь на настройки времени, указанные в начальных настройках советника. 


SYMBOL_TRADE_MODE_DISABLED понятно ,что не время торговли . я пытаюсь исходить из того ,что если биржа не работает ,то значит торговля запрещена из советника ,стакана и любым другим способом .  по сути дела не важно знать время работы биржи  ,а проверять разрешена торговля или нет. возможно я ошибаюсь и SYMBOL_TRADE_MODE_DISABLED это для данного инструмента  !!!!! и необходимо проверять время торгов .
 
Михаил:

А ничего не будет.

Потому что SYMBOL_TRADE_MODE_DISABLED - это не время работы биржи.

Это общий признак разрешения торговли по инструменту. 

Время нужно проверять по таймеру, ориентируясь на настройки времени, указанные в начальных настройках советника. 


да , согласен ,что SYMBOL_TRADE_MODE_DISABLED не то решение !!!!
 
ФОРТС: Учимся писать эксперта для торговли фьючерсами
ФОРТС: Учимся писать эксперта для торговли фьючерсами
  • www.mql5.com
Пример советника с использованием времени торговли, стакана и кнопки Старт-стоп (торговля). - - Категория: биржевой трейдинг
 

я проверял вот так , может пригодится, если не установлено то торговля по инструменту вроде как выключена

MarketInfo(Symbol(),MODE_TRADEALLOWED)==1)
 
есть в mql4 возможность заранее определять время начала торговли в понедельник?
 
а чем тебе метод выше не угодил , проверяешь разрешена ли торговля по инструменту - плюс рекомендую проверить есть ли цена Ask или Bid , если всё это есть то можно торговать, да и по сути если торговли еще нет  - не прийдет ни одного тика для того что бы твой советник стартанул
Причина обращения: