e-CloseByLossOrProfit - Вопрос.

 

Есть замечательный советник e-CloseByLossOrProfit

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

Часто им пользуюсь. Но проблема в том, что

  1. на больших объемах есть козни со стороны брокера, (на малых лотах советник схлопывает все ордера мигом).
  2. на шпильках и при высокой волатильности советник не успевает закрыть все на одном уровне и теряется часть прибыли.

Вопрос - есть ли в интернете советник, выставляющий общий TakeProfit/StopLoss на уровень запланированной прибыли, а при изменении числа ордеров пересчет уровня TakeProfit/StopLoss. Такая реализация напрашивалась с самого начала юзания e-CloseByProfit и e-CloseByLossOrProfit???

p.s. Поиск не помог. Искал тщательно :)

p.s. Все вышенаписанное справедливо для тогровли на одной паре.

 

1. меняйте брокера, причем тут советник

2. пользуйтесь штатными стопами, раз торгуете одной парой - зачем вам тогда этот советник, он для портфеля предназначен, где штатные стопы нет возможности расчитать физически

 

Ну дык лень считать если несколько ордеров и я торгую лесницей Stop ордеров, при пробое цена летит оч быстро, лоты растут тоже .

 
OrderCloseBy работает у брокера?
 
panzernik:

Ну дык лень считать если несколько ордеров и я торгую лесницей Stop ордеров, при пробое цена летит оч быстро, лоты растут тоже .

для этого нужен другой советник
 

Сейчас раз уж не нашел, занялся мозговым штурмом. Вот надыбал

вот простейший скрипт определения стоимости пункта на любой валютной паре, фьючерсе или индексе

 //+------------------------------------------------------------------+ 
 double StoimPunkt(string B){double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);}
 //+------------------------------------------------------------------+
 int start(){Comment(StoimPunkt(Symbol()));}
 //+------------------------------------------------------------------+
 
panzernik:

Сейчас раз уж не нашел, занялся мозговым штурмом. Вот надыбал

Расчёт стоимости пункта.
 

Я решил так:

OrderTakeProfit =  СредняяЦенаОткрытия(OP_BUY) + ( ТребуемыйПрофит / ( СуммаЛотов(OP_BUY) * СтоимостьПункта ) ) * Point;
Сейчас проверяю.
 
panzernik:

Вопрос - есть ли в интернете советник, выставляющий общий TakeProfit/StopLoss на уровень запланированной прибыли, а при изменении числа ордеров пересчет уровня TakeProfit/StopLoss.

Есть у меня такой советник - делал для себя когда-то. Только уровень запланированной прибыли/убытка я задавал в деньгах. Ну, например, мы перед открытием торгов планируем брать, скажем, 1 процент от стартового депозита ежедневно. 1 процент с одной серии ордеров. Денег у нас сейчас на депозите = 100 000. Это значит, что как только открытая нами серия ордеров даст нам в статье "Средства" сумму = 101 000, советник тут же позакрывает все открытые ордера, зафиксировав таким образом нашу запланированную прибыль. Это мы, так сказать, установили виртуальтый мультивалютный тейкпрофит, выраженный в деньгах. Кинули советника на валютные пары и ждём сигналов. По мере их поступления открываем позы. Если сигналы верны, то суммарный профит поедет в + и по достижении заданного числа советник позакрывает все позы.

Только вот непонятно как Вы думаетет пересчитать этот тейк при изменении количества ордеров? Пункты чтоль вычислять?

Лет 5 назад я выложил на форуме Альпари другого своего советника в общий доступ и попросил покритиковать и потестить его, мол, а я попрограммлю. 2 года я вносил в него изменения. В результате получился довольно мощный инструмент, позволяющий открывать/закрывать/переворачивать ордера, тралить стоп-приказы, таскать отложки вслед за рынком (так же само, как трал стопов), открывать позы в заданное время и закрывать позиции при увеличении/уменьшении депозита на заданное количество процентов. Всё там настраивается. Но это, по всей видимости не тот тип общего тейка/стопа, который Вам нужен. Что на это скажете?

 


Там перед скриптом ошибка:

Разработчики MetaTrader позаботились об этом и предоставили нам функцию: MarketInfo(Symbol(),MODE_TICKVALUE) — стоимость 1 пункта в валюте депозита для 1 лота.
Это не верная информация. Идентификатор MODE_TICKVALUE покажет на какое минимальное число может измениться цена торгового инструмента за 1 тик. (Ведь не все торговые инструменты ходят по одному пункту за 1 тик.) Но это не есть стоимость одного пункта для одного лота в валюте депозита.
 
drknn:

Но это, по всей видимости не тот тип общего тейка/стопа, который Вам нужен. Что на это скажете?


Данная конструкция работает отлично.
OrderTakeProfit =  СредняяЦенаОткрытия(OP_BUY) + ( ТребуемыйПрофит / ( СуммаЛотов(OP_BUY) * СтоимостьПункта ) ) * Point;
Ветку можно закрыть.