Установка StopLoss и TakeProfit для BUY_STOP_LIMIT и SELL_STOP_LIMIT ордеров - страница 3

 
Aleksey Mavrin:

Да, именно. Кстати пару лайфхаков)

1. при использовании стандартной библиотеки вы бы не столкнулись с этими проблемами.

2. Даже если хотите написать сами с нуля, то если бы вы заглянули в методы соответствующие СБ, то сразу бы узнали чем ваш код отличается, т.е. в чём может быть затык.

з.ы. В СБ классы CTrade, CExpertTrade, для списка тикетов CArrayLong и т.д.

Я со стандартной библиотекой никогда не работал. Езжу только на велосипедах собственного изготовления)

Смотрю, она в основном на классах построена, а я в ООП не особо умею. Пишу в процедурном стиле, всё в основном на функциях завязано. В редких случаях пригождается структуру - контейнер сделать, чтобы свойства относящиеся к одной сущности вместе собрать, но не более того.

 
SanAlex:

Вот скрипт -он выставляет https://www.mql5.com/ru/code/30709

Спасибо конечно, но у меня была проблема с ордерами типов: buy_stop_limit и sell_stop_limit. Обычные buy_stop, sell_stop, buy_limit, sell_limit нормально модифицировались.

Я обычно в коде стараюсь делать все необходимые проверки, чтобы практически при любом наборе входных данных функция возвращала корректное значение.

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

Так же не вижу проверок стоп/фриз левла и кратность тика для инструментов, где tick_size больше чем point.

 
Oleg Remizov:

Спасибо конечно, но у меня была проблема с ордерами типов: buy_stop_limit и sell_stop_limit. Обычные buy_stop, sell_stop, buy_limit, sell_limit нормально модифицировались.

Я обычно в коде стараюсь делать все необходимые проверки, чтобы практически при любом наборе входных данных функция возвращала корректное значение.

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

Так же не вижу проверок стоп/фриз левла и кратность тика для инструментов, где tick_size больше чем point.

так у них не могут быть стопы и профиты - как я понимаю они только выставляют  buy_stop, sell_stop, buy_limit, sell_limit

ORDER_TYPE_BUY_STOP_LIMIT

По достижении цены ордера выставляется отложенный ордер Buy Limit по цене StopLimit

ORDER_TYPE_SELL_STOP_LIMIT

По достижении цены ордера выставляется отложенный ордер Sell Limit по цене StopLimit

 
SanAlex:

так у них не могут быть стопы и профиты - как я понимаю они только выставляют  buy_stop, sell_stop, buy_limit, sell_limit

ORDER_TYPE_BUY_STOP_LIMIT

По достижении цены ордера выставляется отложенный ордер Buy Limit по цене StopLimit

ORDER_TYPE_SELL_STOP_LIMIT

По достижении цены ордера выставляется отложенный ордер Sell Limit по цене StopLimit

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

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

 
Oleg Remizov:

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

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

 ведь после того как он сработает  buy_stop_limit - он выставит отложенный ордер со своими стопами и профитами 

а для чего тогда ему стопы и профиты ?

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

кажись понял - сработает стоп он удалится и не откроет отложенный ордер 

 
SanAlex:

 ведь после того как он сработает  buy_stop_limit - он выставит отложенный ордер со своими стопами и профитами 

а для чего тогда ему стопы и профиты ?

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

кажись понял - сработает стоп он удалится и не откроет отложенный ордер 

Нет, стоп и профит относятся к buy_limit или sell_limit, которые разместятся при срабатывании buy_stop_limit или sell_stop_limit. 

 
Oleg Remizov:

Нет, стоп и профит относятся к buy_limit или sell_limit, которые разместятся при срабатывании buy_stop_limit или sell_stop_limit. 

попробовал в терминале - запутался, надо башку иметь как у Карла Маркса 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Очень сложная функция - думаю мало кто ей пользуется.

 
SanAlex:

попробовал в терминале - запутался, надо башку иметь как у Карла Маркса 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Очень сложная функция - думаю мало кто ей пользуется.

Да, не с первого раза вникаешь в эти стоп-лимиты. На Нидзя-трейдере так там вообще разрабы перепутали названия цен размещения ордера и выставления лимитки, представляете, пока выяснил тоже бошку сломал))

А так удобная штука - чтоб без кода ловить прорывы - пробила цена какой-то уровень - ставим лимитку подобрать на откате. На бирже вроде очень популярны такие ордера.

Oleg Remizov:

Я со стандартной библиотекой никогда не работал. Езжу только на велосипедах собственного изготовления)

Смотрю, она в основном на классах построена, а я в ООП не особо умею. Пишу в процедурном стиле, всё в основном на функциях завязано. В редких случаях пригождается структуру - контейнер сделать, чтобы свойства относящиеся к одной сущности вместе собрать, но не более того.

Когда сам с нуля пишешь это хорошо - лучше разбираешься в нюансах. Уверен для вас будет не сложно разобраться в ООП, да особо глубоко и не надо разбираться. Те же классы=структуры, в которых как-бы "встроены" ещё обычные функции, работающие с данными этой структуры=класса.

Создаёте объект класса CTrade Trade, задаёте ему параметры, инициализируете как надо (всё в примерах есть) и потом используете как структуру  Trade.КучаПолезныхФункций(); )

 
SanAlex:

попробовал в терминале - запутался, надо башку иметь как у Карла Маркса 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Очень сложная функция - думаю мало кто ей пользуется.

Да я тоже ей особо пользоваться не собираюсь. У меня была задача сделать утилиту, которая могла бы автоматически устанавливать стопы и тейки для любых ордеров, существующих в терминале MetaTrader5, и как раз с этими buy_stop_limit, sell_stop_limit возникли сложности. Сам я такие ордера не устанавливаю, но может кто-то ими пользуется, так что пусть такая возможность будет. Стараюсь сделать универсальное решение.
 
Aleksey Mavrin:

Да, не с первого раза вникаешь в эти стоп-лимиты. На Нидзя-трейдере так там вообще разрабы перепутали названия цен размещения ордера и выставления лимитки, представляете, пока выяснил тоже бошку сломал))

А так удобная штука - чтоб без кода ловить прорывы - пробила цена какой-то уровень - ставим лимитку подобрать на откате. На бирже вроде очень популярны такие ордера.

Когда сам с нуля пишешь это хорошо - лучше разбираешься в нюансах. Уверен для вас будет не сложно разобраться в ООП, да особо глубоко и не надо разбираться. Те же классы=структуры, в которых как-бы "встроены" ещё обычные функции, работающие с данными этой структуры=класса.

Создаёте объект класса CTrade Trade, задаёте ему параметры, инициализируете как надо (всё в примерах есть) и потом используете как структуру  Trade.КучаПолезныхФункций(); )

Я пробовал разобраться несколько раз с ООП, но каждый раз спотыкался об нагромождения информации усложняющей процесс понимания. В итоге так его и не освоил.