Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Расчёт уровня БУ для множества по одному инструменту:
сумма лотов = суммарная позиция (СП)
стоимость тика СП = СТ
профит СП = ПСП
Формула расчёта довольно проста:
КП = ПСП / (СТ * СП)
В которой узнаём количество пипс (КП) до уровня БУ относительно текущей цены (ТЦ) символа.
И подставив КП в формулу БУ = ТЦ - КП * Point получаем уровень цены БУ.
В зависимости от направления СП выбирается прибавлять либо отнимать от ТЦ.
Реализация пока на стадии разработки поэтому прошу не пинать...
Существенный недостаток: при отсутствии позиций либо ЛОКе
начинается громкая ругань что зеро девайс (деление на ноль)
ввиду возврата SumLot() нуля и формула КП = ПСП / (СТ * СП) получается КП = ПСП / (СТ * 0)
т.е ПСП / 0
Обманка ввиде подстановы некого минизначения лота... можно, но как-то это неправильно...
Вот моя реализация стоимости одного пункта
Сейчас использую другую функцию. Во всех индикаторах эквити стоИт именно она:
Соответсвенно чтобы найти стоимость одного пунтка нужно:
Сомневаюсь, что Ваша функция будет работать, если депозит в рублях к примеру.
Насчёт ролловера - не заморачивался на эту тему, т.к. нет необходимости.
Прошу уважаемых форумчан подсказать, писал ли кто-нибудь MQL код, рассчитывающий для произвольного множества ордеров одного типа (только BUY, или только SELL), с разной ценой открытия и разными лотами, уровень безубыточной цены, т.е. такой уровень, закрытие на котором ордеров заданного множества приведёт к нулевому изменению баланса?
Опираться нужно, как я понимаю, на OrderProfit, OrderCommission, OrderSwap(), но они дадут по формуле: NormalizeDouble( OrderProfit() + OrderCommission() + OrderSwap(), 2);
общий текущий профит со знаком для каждого ордера, для текущей цены, а как получить уровень безубытка для всего множества?
((ЦБ1 * ЛБ1 + ЦБ2 * ЛБ2 + ... + ЦБi * ЛБi) - (ЦС1 * ЛС1 + ЦС2 * ЛС2 + ... + ЦСi * ЛБi)) / (ЛБ1 + ЛБ2 + ... + ЛБi) - (ЛС1 + ЛС2 + ... + ЛСi) , где ЦБi - цена открытия i-го длинного ордера, ЛБi - лот открытия i-го длинного ордера, ЦСi и ЛСi - соответственно i-го короткого ордера.
Важно помнить два момента:
1. При нахождении точки безубытка направления СЕЛЛ ниже точки безубытка направления БАЙ общий безубыток имеет место при любых ценах, т.к. это лок. Это соответствует делению на ноль в указанной формуле. Ставьте проверку перед расчётом общего безубытка.
2. Поскольку ордера по разным направлениям открываются по разным типам цен (BID и ASK), полученное значение цены является приблизительным (из-за колебаний спреда), но со вполне достаточной точностью годным для решения прикладных задач.((ЦБ1 * ЛБ1 + ЦБ2 * ЛБ2 + ... + ЦБi * ЛБi) - (ЦС1 * ЛС1 + ЦС2 * ЛС2 + ... + ЦСi * ЛБi)) / (ЛБ1 + ЛБ2 + ... + ЛБi) - (ЛС1 + ЛС2 + ... + ЛСi) , где ЦБi - цена открытия i-го длинного ордера, ЛБi - лот открытия i-го длинного ордера, ЦСi и ЛСi - соответственно i-го короткого ордера.
Важно помнить два момента:
1. При нахождении точки безубытка направления СЕЛЛ ниже точки безубытка направления БАЙ общий безубыток имеет место при любых ценах, т.к. это лок. Это соответствует делению на ноль в указанной формуле. Ставьте проверку перед расчётом общего безубытка.
2. Поскольку ордера по разным направлениям открываются по разным типам цен (BID и ASK), полученное значение цены является приблизительным (из-за колебаний спреда), но со вполне достаточной точностью годным для решения прикладных задач.Можно просто OrderProfit() поделить на разницу текущей цены и цены открытия позиции - получится цена пункта (правда, без учета цены в момент возможного закрытия).
Свопы расчитать тоже можно, но с одной оговоркой - в mql4 нет функции, возвращающей день начисления тройного свопа.
Кто будет развивать эту тему, теперь есть функция позволяющая получить день тройного свопа.
//| test.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
ENUM_DAY_OF_WEEK day_of_week=(ENUM_DAY_OF_WEEK)SymbolInfoInteger(_Symbol,SYMBOL_SWAP_ROLLOVER3DAYS);
Print("День тройного свопа :",EnumToString(day_of_week));
}
//+------------------------------------------------------------------+
Ну да, он так и сидел ждал ответа 10 лет )))
А вариант то все равно не верный ведь тут свопы и комиссия не учтены!
Конечно все обрезано, но думаю смысл виден. Получаем сколько pips/пунктов составляет прибыль.
Конечно все обрезано, но думаю смысл виден. Получаем сколько pips/пунктов составляет прибыль.
посмотрите на инструментах, где
будет меньше единицы, например 0.01. Сильно удивитесь.
Расчёт уровня БУ для множества по одному инструменту:
// =-=================
Реализация пока на стадии разработки поэтому прошу не пинать...
Существенный недостаток: при отсутствии позиций либо ЛОКе
начинается громкая ругань что зеро девайс (деление на ноль)
ввиду возврата SumLot() нуля и формула КП = ПСП / (СТ * СП) получается КП = ПСП / (СТ * 0)
т.е ПСП / 0
Обманка ввиде подстановы некого минизначения лота... можно, но как-то это неправильно...
Ну дык можно запустить счётчик ордеров. Если он больше нуля, то вызываем функцию, ибо лоты гарантированно есть. Лок тоже можно обработать на проверку равенства лотов.