Расчет цены символа, при которой произойдет стоп аут
Как рассчитать цену символа, при которой стоп аут произойдет?
То есть у меня есть сетка из открытых ордеров. Хочу рассчитать на каком уровне цены счет сольет.
Это возможно только в том случае, если базовая валюта символа совпадает с валютой депозита. Например, символ EURUSD и валюта депозита USD. При этом под другим символам не должно быть позиций. Во всех остальных случаях более-менее точный расчет невозможен, т. к. в процессе изменения цены символа изменяется стоимость тика.
Это возможно только в том случае, если базовая валюта символа совпадает с валютой депозита. Например, символ EURUSD и валюта депозита USD. При этом под другим символам не должно быть позиций. Во всех остальных случаях более-менее точный расчет невозможен, т. к. в процессе изменения цены символа изменяется стоимость тика.
Хорошо. Как это сделать?
Количество пунктов в направлении убытка до достижения Stop Out:
(FreeMargin - SOLevel * Margin) / (TickValue * Lots * TickSize / Point)
где:
FreeMargin - текущая величина свободных средств
SOLevel - уровень стопаута для текущего типа счета в единица (не процентах). Узнать можно в договоре с ДЦ/брокером
Margin - текущая маржа по позиции
TickValue - стоимость тика
Lots - объем текущей позиции
TickSize - размер тика в пунктах
Point - величина пункта
Количество пунктов в направлении убытка до достижения Stop Out:
(FreeMargin - SOLevel * Margin) / (TickValue * Lots * TickSize / Point)
где:
FreeMargin - текущая величина свободных средств
SOLevel - уровень стопаута для текущего типа счета в единица (не процентах). Узнать можно в договоре с ДЦ/брокером
Margin - текущая маржа по позиции
TickValue - стоимость тика
Lots - объем текущей позиции
TickSize - размер тика в пунктах
Point - величина пункта
А как всё-таки рассчитать ЦЕНУ УРОВНЯ стоп аута? Не кол-во пунктов, не процент, а именно ЦЕНУ уровня? Например, советник открыл 5 ордеров buy, цена движется против нас, с каждым новым открытым ордером buy уровень стоп аут становится все ближе - нужна ЦЕНА этого уровня.
Как это вычислить?
А как всё-таки рассчитать ЦЕНУ УРОВНЯ стоп аута? Не кол-во пунктов, не процент, а именно ЦЕНУ уровня? Например, советник открыл 5 ордеров buy, цена движется против нас, с каждым новым открытым ордером buy уровень стоп аут становится все ближе - нужна ЦЕНА этого уровня.
Как это вычислить?
Это же очевидно: отнять/добавить полученное количество пунктов от/к текущей цены(е).
Это же очевидно: отнять/добавить полученное количество пунктов от/к текущей цены(е).
я пробовал так. Вроде всё работает, но не точно - SO происходит за несколько пунктов не доходя до цены, вычисляемой по этой формуле. Подскажите, плиз, что не так?
double d_shift_3,u_shift_3=0; if ( lots > 0) // lots - сумма всех лотов сетки { d_shift_3 = AccountEquity() / (MarketInfo(Symbol(), MODE_TICKVALUE) * lots); if (GetLot(0)) { u_shift_3 = Bid - d_shift_3*Point; // уровень полного слива сетки buy } if (GetLot(1)) { u_shift_3 = Ask + d_shift_3*Point; // уровень полного слива сетки sell } } else u_shift_3 = 0.0; SM("StopOut price : " + DoubleToString(u_shift_3,Digits)); // вывод цены SO на график
я пробовал так. Вроде всё работает, но не точно - SO происходит за несколько пунктов не доходя до цены, вычисляемой по этой формуле. Подскажите, плиз, что не так?
d_shift_3 = AccountEquity() / (MarketInfo(Symbol(), MODE_TICKVALUE) * lots);
Вы берете от средств счета. Стоп аут наступает раньше, чем закончатся средства. То есть, нужно по этой формуле:
Вы берете от средств счета. Стоп аут наступает раньше, чем закончатся средства. То есть, нужно по этой формуле:
немного не понятен параметр SOLevel
"SOLevel - уровень стопаута для текущего типа счета в единица (не процентах). Узнать можно в договоре с ДЦ/брокером" - что значит "в единицах"? Каких? Узнать в договоре?)) Непонятно...
Не могли бы Вы, или кто понимает о чем речь идет, изобразить это на языке mql4?
К сожалению моих знаний на это не хватает...
немного не понятен параметр SOLevel
"SOLevel - уровень стопаута для текущего типа счета в единица (не процентах). Узнать можно в договоре с ДЦ/брокером" - что значит "в единицах"? Каких? Узнать в договоре?)) Непонятно...
Не могли бы Вы, или кто понимает о чем речь идет, изобразить это на языке mql4?
К сожалению моих знаний на это не хватает...
AccountInfoDouble(ACCOUNT_MARGIN_SO_SO) выдает уровень стоп аута. Вот и справочника:
ACCOUNT_MARGIN_SO_SO | Уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out). В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита |
То есть, при достижении этого уровня будет SO_SO.
Вот это вот выведет тип SO_SO (в процентах либо в валюте депозита) и сам уровень:
string info = StringFormat("ACCOUNT_MARGIN_SO_MODE: %s\nSO_SO: %f",EnumToString((ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE)),AccountInfoDouble(ACCOUNT_MARGIN_SO_SO)); Comment(info);
AccountInfoDouble(ACCOUNT_MARGIN_SO_SO) выдает уровень стоп аута. Вот и справочника:
ACCOUNT_MARGIN_SO_SO | Уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out). В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита |
То есть, при достижении этого уровня будет SO_SO.
Вот это вот выведет тип SO_SO (в процентах либо в валюте депозита) и сам уровень:
К сожалению, для меня пока это тоже не совсем понятно... Не могли бы Вы это как-то расписать иначе?
Вот у меня есть вывод переменной цены SO:
SM("StopOut price : " + DoubleToString(u_shift_3,Digits)); // вывод цены SO на график
Какую функцию нужно добавить в код советника, чтобы переменная u_shift_3 вывела на график цену SO?
Извините что достаю с этим вопросом. Просто уже третьи сутки сканирую гугл, и ноль информации по получению цены SO. Только тут нашел подобный вопрос, но и ответы для моих знаний пока слишком сложны..
Нашел даже один индикатор, с открытым кодом, который, типа, выводит цену SO, но в итоге, взяв оттуда логику расчета, получил такой же результат, который показал выше, т.е и там ошибка в расчетах..
P.S. Вот то, что выдала Ваша строка:
(2) - 40 процентов.. Мне не нужны проценты)) Проценты можно получить проще: AccountStopoutLevel()
А вот то, что должно выдать (1) - цену уровня слива (Stop Out), только правильную)
Нужен вывод именно ЦЕНЫ!
- Бесплатные приложения для трейдинга
- Форексный VPS бесплатно на 24 часа
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как рассчитать цену символа, при которой стоп аут произойдет?
То есть у меня есть сетка из открытых ордеров. Хочу рассчитать на каком уровне цены счет сольет.