Открыли встречный ордер с двойным лотом. Теперь нужно узнать сколько в деньгах стОит 1 пункт для минимального лота. Довольно сложная для начинающего задачка. Но поскольку у Вас удвоение, то задача упрощается. Смотрите, у вас открыт бай с лотом 0,1 и селл с тем же лотом = 0,1. Расстояние между ордерами = 20 пунктов. Ясно, что точка безубытка встанет на уровень 10 пунктов - убыток одного ордера будет покрыт прибылью другого - то есть, при равенстве лотов точка безубытка находится ровно посерёдке между ордерами.
А теперь пусть наш бай-ордер имеет лото = 0,2. Получается, что ему нужно пройти в профит всего 5 пунктов (четверть расстояния) чтоб покрыть убыток вверхунаходящегося селл-ордера с лотом = 0,1
То есть, Если у Вас лоты всегда пропорциональны числу 2, то можно не заморачиваться со стоимостью пункта.
Так то оно так, я предполагаю вы имеете ввиду брать разницу между OrderOpenPrace() и Ask(Bid) и для встречного ордера (2х) просто брать половину этого пути.
Roman.Но если использовать функции KimIV, то будет брать только последний ордер. Я уже так пробовал.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит открытых позиций в валюте депозита |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
double p=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(p);
}
Можно было бы испоьзовать эту функцию, только не могу сообразить как выбрать убыточную позицию и ее противовес?
Не исключаю, что Вам будет проще взять и исправить под Ваши нужды какой-либо из них! Как я сам в своё время сделал! Щас торгую и на нём на микро-реале.
Я сделал неттинговый вариант (только один ордер в рынке - эксп Av02).
Т.е. когда приходит время (по тем или иным торговым критериям (канал и т.д.)) открывать противоположный ордер, то сначала закрывается старый, затем открывается новый на увеличенных объёмах... и т.д.
Проще вести учёт профита/лосса и вообще на мкл5 (МТ5) - пускать можно... :-) Сразу с упреждением на маркет Пятёры в общем... :-) Готовлю... :-)
Вот архив с Лавины экспов. Читайте ветвь - там много интересного, ИМХО!
Просматриваете экспы, выбираете жертву и попёрли её править под свои нужды!!! :-)
Можно было бы испоьзовать эту функцию, только не могу сообразить как выбрать убыточную позицию и ее противовес?
При установке ордера можно присвоить ему магикнумбер. Противовесу присвоить этот же магикнумбер. Другой паре ордеров - другой магикнумбер. И так далее по парам. В результате одним циклом можно отфильтровать ордера с нужным магиком и сразу просуммировать нужный профит в деньгах. Если он, скажем, больше 1 бакса, то закрыть эту пару ордеров.
P.S.
Ну или если суммарный профит этих ордеров в пунктах более нуля, или более заданной величины, то закрываем пару... Только тут нужно в пунктах лоты учитывать, поэтому проще в деньгах профит вычислять.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
ClosePositions().
Открыли встречный ордер с двойным лотом. Теперь нужно узнать сколько в деньгах стОит 1 пункт для минимального лота. Довольно сложная для начинающего задачка. Но поскольку у Вас удвоение, то задача упрощается. Смотрите, у вас открыт бай с лотом 0,1 и селл с тем же лотом = 0,1. Расстояние между ордерами = 20 пунктов. Ясно, что точка безубытка встанет на уровень 10 пунктов - убыток одного ордера будет покрыт прибылью другого - то есть, при равенстве лотов точка безубытка находится ровно посерёдке между ордерами.
А теперь пусть наш бай-ордер имеет лото = 0,2. Получается, что ему нужно пройти в профит всего 5 пунктов (четверть расстояния) чтоб покрыть убыток вверхунаходящегося селл-ордера с лотом = 0,1
То есть, Если у Вас лоты всегда пропорциональны числу 2, то можно не заморачиваться со стоимостью пункта.
Так то оно так, я предполагаю вы имеете ввиду брать разницу между OrderOpenPrace() и Ask(Bid) и для встречного ордера (2х) просто брать половину этого пути.
Roman. Но если использовать функции KimIV, то будет брать только последний ордер. Я уже так пробовал.
Можно было бы испоьзовать эту функцию, только не могу сообразить как выбрать убыточную позицию и ее противовес?
... либо будет закрывать даже прибыльные и сняв предполагаемую прибыль
Значит криво ставили.
У Вас ТС называется - Лавина (мартин). Поковыряйте одноимённую ветвь на этом форуме - там подобных экспов - тьма!
Могу выложить со своего архива экспов по этой ТС сюда с той ветви.
Не исключаю, что Вам будет проще взять и исправить под Ваши нужды какой-либо из них! Как я сам в своё время сделал! Щас торгую и на нём на микро-реале.
Выложите, если не сложно.
Я сделал неттинговый вариант (только один ордер в рынке - эксп Av02).
Т.е. когда приходит время (по тем или иным торговым критериям (канал и т.д.)) открывать противоположный ордер, то сначала закрывается старый, затем открывается новый на увеличенных объёмах... и т.д.
Проще вести учёт профита/лосса и вообще на мкл5 (МТ5) - пускать можно... :-) Сразу с упреждением на маркет Пятёры в общем... :-) Готовлю... :-)
Вот архив с Лавины экспов. Читайте ветвь - там много интересного, ИМХО!
Просматриваете экспы, выбираете жертву и попёрли её править под свои нужды!!! :-)
Без шуток.
Можно было бы испоьзовать эту функцию, только не могу сообразить как выбрать убыточную позицию и ее противовес?
При установке ордера можно присвоить ему магикнумбер. Противовесу присвоить этот же магикнумбер. Другой паре ордеров - другой магикнумбер. И так далее по парам. В результате одним циклом можно отфильтровать ордера с нужным магиком и сразу просуммировать нужный профит в деньгах. Если он, скажем, больше 1 бакса, то закрыть эту пару ордеров.
P.S.
Ну или если суммарный профит этих ордеров в пунктах более нуля, или более заданной величины, то закрываем пару... Только тут нужно в пунктах лоты учитывать, поэтому проще в деньгах профит вычислять.