Как проверить торговый сервер на возможное получение ошибки 136 "ERR_OFF_QUOTES" (нет цен)

 
В MT4 есть возможность проверки торгового потока IsTradeContextBusy().  В моем случае есть необходимость проверки "наличия котировок".  В ДЦ WHS пробую торговать фьючерсами, а они торгуются с ежедневными небольшими  перерывами, остановками торговли (строго по времени - прописано в спецификации контрактов). Так вот даже после открытия торгов необходимо, чтобы пришла хотя бы одна новая котировка, чтобы можно было открыть/закрыть ордер. Т.к. у меня работает эксперт, необходима какая-то функция, чтобы проверять "наличие цен", дабы не получить при торговле ошибку 136 "ERR_OFF_QUOTES" (нет цен).
Поэтому вопрос: "Как проверить торговый сервер на возможное получение ошибки 136 "ERR_OFF_QUOTES" (нет цен) ?"
//-----
Да-а-а. Дела-а-а. Посмотрел похожие темы, любезно подобранные Форумом после создания данной темы. Еще раз поврторю: "Дела-а-а". Хотя понравилось то, что модератор Renat нас бесправных трейдеров вроде как понимает.
см. Тема:"ошибка "request failed [Off quotes]" 'ошибка "request failed [Off quotes]"'
"
maloma 15.01.2007 18:30
Так что-же делать? Может введете функцию типа IfQuotesOff()??

Модератор Renat 15.01.2007 19:06
maloma писал (а):
Так что-же делать? Может введете функцию типа IfQuotesOff()??
К сожалению, функцию вводить не будем.

Это определяется только после торгового запроса и выдается точный ответ.
Off quotes можно и на быстром рынке получить и при слишком частых запросах, от времени не всегда зависит.
"
Спасибо тебе, Renat, за понимание. Надеюсь, что ты так же понимаешь, данная ошибка дает неограниченную возможность брокеру нарушать торговый алгоритм МТС эксперта, и эта возможность ограничевается лишь порядочностью брокера.  Что ж будем надеяться на порядочность, особенно в нашем современном мире :)

Тема закрыта. (извините, незнаю как удалить)
 
Делов то - повесь эксперт на график того фьючерса, которым торгуешь, поставь соответствующий период, например 5 минут, и на новом баре торгуй
 
Обычное непонимание из-за того, что трейдер воспринимает только одну сторону процесса - себя любимого.
Рыночные условия, процесс обслуживания, работа брокера - это все не заслуживает внимания.
 
Попробуйте проверить по времени открытия бара на различных инструментах... Второй вариант, правда не уверен, что сработает, функция MarketInfo( string symbol, int type) MarketInfo(Symbol(), MODE_TRADEALLOWED);
 
kharko:
Попробуйте проверить по времени открытия бара на различных
инструментах... Второй вариант, правда не уверен, что сработает,
функция MarketInfo( string symbol, int type) MarketInfo(Symbol(), MODE_TRADEALLOWED);
MODE_TRADEALLOWED не поможет - проверено. Для мульти-экспертов можно сравнивать время открытия минутного бара фьючерса с временем минутного бара какой-нибудь высоковолатильной пары (gbpjpy, например, или просто открыть месячный график и поспотреть, где объём больше):

if (iTime(фьючерс, PERIOD_M1, 0) == iTime(контрольная пара, PERIOD_M1, 0)) {
//в течении последней минуты была котировка по фьючерсу
}
 
notused:

if (iTime(фьючерс, PERIOD_M1, 0) == iTime(контрольная пара, PERIOD_M1, 0)) {
//в течении последней минуты была котировка по фьючерсу
}

Можно, итак.... Тока так ли важно точное совпадение времени прихода последней котировки на различных инструментах...

Речь идет о временном приостановлении торгов по некоторым инструментам. .. Логичнее, сравнивать время прихода последней котировки с некой дельтой времени, допустим 5 минут, и временно исключить из расчета данный инструмент...

Например:

if(TimeLocal()-MarketInfo(Para[i],MODE_TIME) >= DeltaTime)
{
continue;
}

 
у одного ДЦ вообще off-quote (по крайней мере у валютных пар) дают, если не было котировок 3(!) часа. Но я не думаю, что у фьючерсов по 10 раз
перерыв на день. MODE_TRADEALLOWED скажет, началась ли сессия. Например, для акций, в 10 часов утра она возвратит false, а 18:00 - true. Но если сессия начинается в 16:30 (котировки пошли в терминал), а торговля доступна с 16:35, то tradeallowed уже в 16:30 разрешит торговать,  а на самом деле торговоть ещё нельзя. По поводу дельты - согласен,
 нужно лишь уточнить время у ДЦ
 
notused:
..... По поводу дельты - согласен, нужно лишь уточнить время у ДЦ
Не надо подстраиваться под конкретный ДЦ... Условия работы ДЦ могут измениться в любой момент... Приведенный выше пример, по-моему, самый оптимальный...
 
kharko:
notused:
..... По поводу дельты - согласен, нужно лишь уточнить время у ДЦ
Не надо подстраиваться под конкретный ДЦ... Условия работы ДЦ могут измениться в любой момент... Приведенный выше пример, по-моему, самый оптимальный...
Не согласен. Во-первых, TimeLocal - локальное время, а не серверное. Во-вторых, для одного ДЦ 5 минут будет нормально, а другой уже через 1 минуту даст off-quotes. В третьих нет у MarketInfo параметра MODE_TIME. Поэтому универсальности не получится, как не крути
 
notused:
Не согласен. Во-первых, TimeLocal - локальное время, а не серверное. Во-вторых, для одного ДЦ 5 минут будет нормально, а другой уже через 1 минуту даст off-quotes. В третьих нет у MarketInfo параметра MODE_TIME. Поэтому универсальности не получится, как не крути

1. Разницу можно учесть параметром DeltaTime

2. Вам виднее... Выберите нужный DeltaTime ...

3. Посмотрите внимательнее справку для функции MarketInfo ...

 
kharko:
notused:

Не согласен. Во-первых, TimeLocal - локальное время, а не серверное. Во-вторых, для одного ДЦ 5 минут
будет нормально, а другой уже через 1 минуту даст off-quotes. В третьих
нет у MarketInfo параметра MODE_TIME. Поэтому универсальности не получится,
как не крути

1. Разницу можно учесть параметром DeltaTime


2. Вам виднее... Выберите нужный DeltaTime ...


3. Посмотрите внимательнее справку для функции MarketInfo ...

1. Не нужно использовать LocalTime никогда - это плохо - например, перевёл часы на компьютере на месяц назад (разные причины бывают) и думаешь, почему ничего не работает.
2. Ясно, что выберу - с этим же и согласился. Я говорил, что нет универсального метода
3. Согласен, пропустил
Причина обращения: