Реализация метода "Сейфа"

 

Никак не могу понять как лучше сделать.

Задача реализовать функцию частичного  закрытия ордера после прохождения определенного количества пунктов ("Сейф"). О переводе в безубыток сейчас речи нет.
В чем проблема: надо определить те ордера которые нужно переводить в "Сейф", но как? Т.е. чтобы вторично ордер уже переведенный в "Сейф" заново не перевести.
Если опираться на начальный лот ордера, то надо чтобы он у всех ордеров был одинаковым изначально, но этого может не быть, если в советнике используется динамический лот. 
Хранить все начальные лоты сделок гдето, тоже как то не красиво.
Какие есть варианты?

 

После частичного закрытия, коммент ордера будет типа: from #ticket... или partial #ticket. 

 
Igor Zakharov:

После частичного закрытия, коммент ордера будет типа: from #ticket... или partial #ticket. 

После частичного закрытия комментарий не изменился. Было бы хорошо если бы можно было изменить комментарий после частичного закрытия. Но как я понимаю это невозможно.

 
peterlogin:

После частичного закрытия комментарий не изменился.

А Вы частичное закрытие как делаете ?

p.s. И где смотрите комментарий , сегодня же рынок закрыт ?
 

можно так сделать:

пишите в глобальные переменный терминала № тикета ордера у которого было частичное закрытие и ищите эту глобальную переменную на соответсвие № тикетов ордеров в рынке - если не нашли - значит ордера нет уже в рынке и удалите глобальную переменную

 
Sergey Kolemanov:

А Вы частичное закрытие как делаете ?

p.s. И где смотрите комментарий , сегодня же рынок закрыт ?

в тестере. если в тестере это не работает. то способ не подходит.

 
Igor Makanu:

можно так сделать:

пишите в глобальные переменный терминала № тикета ордера у которого было частичное закрытие и ищите эту глобальную переменную на соответсвие № тикетов ордеров в рынке - если не нашли - значит ордера нет уже в рынке удалите глобальную переменную

как то не очень правильно

 
peterlogin:

как то не очень правильно

ну а что Вы хотите? цель топика озвучить что нет возможности изменить комментарий рыночного ордера?

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

https://www.mql5.com/ru/forum/255340/page2#comment_7791565

Может ли ДЦ стирать комментарии в мт5?
Может ли ДЦ стирать комментарии в мт5?
  • 2018.06.12
  • www.mql5.com
В мт4 знаю, комментарии ДЦ мог стирать. Не всегда, но мог. А как обстоит дело с мт5? Мне нужно как-то контролировать выполнение торгового сигнала...
 
peterlogin:

Никак не могу понять как лучше сделать.

Задача реализовать функцию частичного  закрытия ордера после прохождения определенного количества пунктов ("Сейф"). О переводе в безубыток сейчас речи нет.
В чем проблема: надо определить те ордера которые нужно переводить в "Сейф", но как? Т.е. чтобы вторично ордер уже переведенный в "Сейф" заново не перевести.
Если опираться на начальный лот ордера, то надо чтобы он у всех ордеров был одинаковым изначально, но этого может не быть, если в советнике используется динамический лот. 
Хранить все начальные лоты сделок гдето, тоже как то не красиво.
Какие есть варианты?

Задача "...закрытия ордера после прохождения определенного количества пунктов..." решается в момент открытия ордера путем установки значения Take Profit. 

Как я понимаю, Вы хотите сначала открыть позицию без ТР, а при достижении заданного значения профита частично закрыть, дабы уменьшить потери в случае достижения обеими позициями (в МТ5 - совокупной позиции) значения Stop Loss. Вторая позиция идет по тренду "до победного". 

В идеале, значение ТР при его достижении, должно обеспечивать безубыток совокупной позиции. 

Простейшее решение - изначально открывать два ордера по одной цене с одинаковым значением SL: один - без TP, другой - с TP. Минус - изначальная фиксация объемов этих позиций, а значит нельзя манипулировать размером доли закрываемой части позиции. 

Все это технически легко решается как в МТ5, так и в МТ4, но есть общая системная проблема. Решение нужно принимать по совокупности четырех параметров: 1. Максимальная доля закрываемой части позиции. 2. Минимальный уровень ТР. 3. Допустимый уровень убытка. 4. Допустимый размер лота.

В обратном порядке, разумеется. 

 
Igor Makanu:

ну а что Вы хотите? цель топика озвучить что нет возможности изменить комментарий рыночного ордера?

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

https://www.mql5.com/ru/forum/255340/page2#comment_7791565

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

спасибо за советы

 
peterlogin:

в тестере. если в тестере это не работает. то способ не подходит.

Само частичное закрытие в тестере работает, но комментарий ордеров Вы просто так не увидите - его надо распринтовывать в коде... Вам правильно сказали что самый простой способ организовать частичное закрытие это работать с комментарием позиции. Частично тема поднималась здесь: https://www.mql5.com/ru/forum/214381/page5#comment_5706056

Причина обращения: