Проблема открытия ордеров типов ORDER_TYPE_BUY_STOP и ORDER_TYPE_SELL_STOP в "открывашке" и именно на боевом сервере, на тестовом все нормально
есть предположение что проблема происходит при тестированию в нерабочее время
int flags=sym.OrderMode(); // На демке в ОТКРЫВАШКЕ возвращает 63 , Боевой сервер возвращает 59
// соответственно проверка
res=((flags&SYMBOL_ORDER_STOP)!=0); // на боевом возвращает false на тестовом true
и функция на боевом сервере честно пишет Print(__FUNCTION__+": Invalid order type");
У числа 59 третий бит (SYMBOL_ORDER_STOP) взведен, так что должен быть true.
Скорее всего, "утро вечера мудренее".
У числа 59 третий бит (SYMBOL_ORDER_STOP) взведен, так что должен быть true.
Скорее всего, "утро вечера мудренее".
Доброе утро, спасибо большое за попытку помочь!
Утро наступило , но sym.m_order_mode с утра по прежнему int flags=sym.OrderMode(); получает 59 , а проверка res=((flags&SYMBOL_ORDER_STOP)!=0); так же возвращает false
При этом на тестовом сервере с утра все по прежнему int flags=sym.OrderMode(); получает 63 , а проверка res=((flags&SYMBOL_ORDER_STOP)!=0); так же возвращает true
Раньше я такие вопросы отправлял в servic desk , но похоже службу заваливали очень сильно .
Посмотрите пожалуйста картинки, так намного наглядней и понятней.
Вопрос так и остался открыт , совершенно не ясно почему sell_stop buy_stop в тестере не отрабатывают , при этом в тестере с рынка или limit ордера прекрасным образом выполняются.
У числа 59 третий бит (SYMBOL_ORDER_STOP) взведен, так что должен быть true.
Скорее всего, "утро вечера мудренее".
Похоже проблема кроется в настройке сервера , возможно проблема кроется на закрытом рынке , а я тестирую в тот момент когда рынок закрыт, функция ведь зачитывает настройки с сервера.
SYMBOL_ORDER_STOP | Разрешены стоп-ордера (Buy Stop и Sell Stop) | |
SYMBOL_ORDER_STOP_LIMIT | Разрешены стоп-лимит ордера (Buy Stop Limit и Sell Stop Limit) |
После 10 часов проведу эксперимент.
Получается не третий бит а второй.
0010 битовое значение двойки
SYMBOL_ORDER_LIMIT | 2 | Разрешены лимитные ордера (Buy Limit и Sell Limit) |
Утро наступило , но sym.m_order_mode с утра по прежнему int flags=sym.OrderMode(); получает 59 , а проверка res=((flags&SYMBOL_ORDER_STOP)!=0); так же возвращает false
Я ошибся, третий бит у 59 не взведен.
Вы умеете написать так, что не сразу поймешь... В Тестере используются текущие настройки символа. Если там 59 во время закрытия рынка, то Тестер будет брать эти настройки, пока 59 не сменится чем-то другим после открытия рынка. Обойти данную особенность Тестера возможно через кастомный вариант.
Я ошибся, третий бит у 59 не взведен.
Вы умеете написать так, что не сразу поймешь... В Тестере используются текущие настройки символа. Если там 59 во время закрытия рынка, то Тестер будет брать эти настройки, пока 59 не сменится чем-то другим после открытия рынка. Обойти данную особенность Тестера возможно через кастомный вариант.
Спасибо, подскажите пожалуйста каким образом обойти через кастомный вариант?
и почему бит третий? постом выше описал что константа SYMBOL_ORDER_STOP значение 2 , а это в битовом значении 0010 , т е второй бит.
Нумерацию битов беру с права налево, как это принято . Вы вероятно берете с лева направо?
0010 значение 2
4321
Спасибо, подскажите пожалуйста каким образом обойти через кастомный вариант?
и почему бит третий? постом выше описал что константа SYMBOL_ORDER_STOP значение 2 , а это в битовом значении 0010 , т е второй бит.
Выше смотрели значение другой константы.
Кастомный символ.
Выше смотрели значение другой константы.
кастомный символ!? , спасибо попробую.
Можете пояснить, значение выше это какое, или где смотреть ? какой константы.
Можете пояснить, значение выше это какое, или где смотреть ? какой константы.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Yuriy Zaytsev, 2019.05.31 08:33
Получается не третий бит а второй.
0010 битовое значение двойки
SYMBOL_ORDER_LIMIT | 2 | Разрешены лимитные ордера (Buy Limit и Sell Limit) |
2 | Разрешены лимитные ордера (Buy Limit и Sell Limit) | |
SYMBOL_ORDER_STOP | 4 | Разрешены стоп-ордера (Buy Stop и Sell Stop) |
Да , ошибся , Вы правы 3-й бит
Спасибо.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Проблема на БИРЖЕВОМ РЫНКЕ рынке ( MQL5 )
Смотрю библиотеку trade.mqh функцию bool CTrade::OrderTypeCheck(const string symbol)
после исполнения кода
int flags=sym.OrderMode(); // На демке в ОТКРЫВАШКЕ возвращает 63 , Боевой сервер возвращает 59
// соответственно проверка
res=((flags&SYMBOL_ORDER_STOP)!=0); // на боевом возвращает false на тестовом true
и функция на боевом сервере честно пишет Print(__FUNCTION__+": Invalid order type");
Первое что приходит в голову - на боевом не разрешены STOP ордера , но при этом и на боевом и на тестовом сервере легко выставляю руками ордера типа ORDER_TYPE_BUY_STOP и ORDER_TYPE_SELL_STOP
Подскажите пожалуйста в чем может быть причина ?
на всякий случай кусочек кода