Если бы добавили в МТ4 мультивалютное тестирование и тестирование по реальным тикам, то мне больше ничего и не нужно было бы. Согласны ли вы с таким утверждением? - страница 10

 
Ilya Malev:

Здесь Николай прав, стоплевел это вообще кухонная примочка и на нормальных (market) типах счетов его просто нет

П.С. У меня лично в коде было Н попыток расширения предположительного стоплевела на Н пунктов если возвращается ошибка неправильные стопы

Ну вот и как быть? Прав используя ноль как размер стоплевел при расчёте торгового приказа? Или всё же нужно учитывать, что он плавающий?

Что важнее? Гордо говорить, что те, у кого плавающий - тот кухня, или учесть что он плавает и не получать всегда ошибку?

 
Artyom Trishkin:

Да, я имел в виду размер стоплевел. Нулевой означает плавающий. А не нуль. И что бы там не говорили, но эту особенность нужно учитывать пока такое есть.

а как быть если клиент работает у нормального ДЦ и ему по стратегии какой то ордер нужно поставить близко к рынку?
я не могу резать функционал в угоду кухонь. 
Иного варианта как узнать что стоп левл плавающий в мт4 нет.

 
Nikolay Khrushchev:

а как быть если клиент работает у нормального ДЦ и ему по стратегии какой то ордер нужно поставить близко к рынку?
я не могу резать функционал в угоду кухонь. 
Иного варианта как узнать что стоп левл плавающий в мт4 нет.

Легко и просто. Но нужно заставить клиента дёрнуть разочек пальчиком. И иначе, думаю, никак.

ЗЫ. Кстати, и для валидатора тоже нужно обязательно учитывать изменяющийся стоплевел.

 
Nikolay Khrushchev:

это все учитывается.
не до потери. обратите внимание на конец кода. Если ошибка такая что стоит попытаться еще, он подождет полторы секунды и попробует еще. Всего сделает до 20 попыток, между попытками обязательно обновит цену если речь о рыночном ордере.
Если ошибка такая что долбить дальше бесполезно - не будет.

hint: while(RefreshRates()) ; // вычитать все скопившиеся тики до актуального, чтобы лишний раз не ловить ERR_OFF_QUOTES

можно заменить на for ограничивая число "скопившихся".

в общем код, как и шаблон надо критически пересматривать по современным реалиям. Правки скорее минимальные, но они будут

 
Artyom Trishkin:

Ну вот и как быть? Прав используя ноль как размер стоплевел при расчёте торгового приказа? Или всё же нужно учитывать, что он плавающий?

Что важнее? Гордо говорить, что те, у кого плавающий - тот кухня, или учесть что он плавает и не получать всегда ошибку?

Правильнее считать, что он нулевой и совершать повторные попытки при получении ошибки о стопах, считая его двойным спредом например и прибавляя ещё 1 спред на каждой попытке + дать возможность юзеру жестко предустановить во внешних параметрах его значение  (включая коэффициент к текущему спреду)

Потому что нулевой стоплевел это преимущество, которое рыночные брокеры имеют перед кухонными, и оно не должно нивелироваться чрезмерно "предусмотрительным" кодом программиста
 
Artyom Trishkin:

Легко и просто. Но нужно заставить клиента дёрнуть разочек пальчиком. И иначе, думаю, никак.

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

 
Maxim Kuznetsov:

hint: while(RefreshRates()) ; // вычитать все скопившиеся тики до актуального, чтобы лишний раз не ловить ERR_OFF_QUOTES

можно заменить на for ограничивая число "скопившихся".

в общем код, как и шаблон надо критически пересматривать по современным реалиям. Правки скорее минимальные, но они будут

и как вы поймете актуальность тика?

 
Nikolay Khrushchev:

и как вы поймете актуальность тика?

RefreshRates() вернёт false :-) сие значит что данные не обновлены за отсутствием  - более новых тиков нет, всю скопившуюся очередь мы считали...

кстати в документации написано :-)

 
Ilya Malev:

Правильнее считать, что он нулевой и совершать повторные попытки при получении ошибки о стопах, считая его двойным спредом например и прибавляя ещё 1 спред на каждой попытке + дать возможность юзеру жестко предустановить во внешних параметрах его значение  (включая коэффициент к текущему спреду)

Потому что нулевой стоплевел это преимущество, которое рыночные брокеры имеют перед кухонными, и оно не должно нивелироваться чрезмерно "предусмотрительным" кодом программиста

Один выход - дать юзеру настройку:

enum ENUM_STOPLEVEL_TYPE
  {
   STOPLEVEL_TYPE_NULL,    // Zero stoplevel
   STOPLEVEL_TYPE_FLOAT    // Floating stoplevel
  };   

И по умолчанию ставить плавающий - для валидатора. Ну и соответственно использовать при плавающем стоплевел его размер как двойной спред изначальный с увеличением на 1 при получении ошибки неправильных стопов.

 
Artyom Trishkin:

Один выход - дать юзеру настройку:

И по умолчанию ставить плавающий - для валидатора. Ну и соответственно использовать при плавающем стоплевел его размер как двойной спред изначальный с увеличением на 1 при получении ошибки неправильных стопов.

Кстати валидатор ни разу не ругался. похоже в него вшит только фиксированный.

Maxim Kuznetsov:

RefreshRates() вернёт false :-) сие значит что данные не обновлены за отсутствием  - более новых тиков нет, всю скопившуюся очередь мы считали...

кстати в документации написано :-)

Все что вы говорите верно и хорошо, однако в реалиях я столкнулся с недобросовестностью "брокеров". Ошибку "нет цен" они возвращают просто мешая торговать, как и ряд других ошибок.
Был случай когда пришлось переделывать логику для заказчика, чтобы советник продолжил долбить брокера при вроде бы критичной ошибке. Торговал он у красных.
не все так однозначно бывает когда программированияе сталкивается с реальной жизнью =/