Как правильно вычислить стоимость ордера объёмом 1 лот?

 
void OnStart()
   {  
   double calc_margin;  // Стоимость 1 лота BUY
   double ask     = SymbolInfoDouble(_Symbol,SYMBOL_ASK);  
   OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, 1.0, ask, calc_margin); 
   Print("Стоимость ордера объёмом 1 лот = ", calc_margin);
   }

Вот такой простой скрипт.
На валютах вычисляет правильно. Например, по ЕвроДолл  = 1171.02.
А на индексах - неправильно. В частности, на САС40 (Альпари) выдаёт 640.73. Но если открыть ордер, то маржа составляет 1941.97.

Подскажите, пожалуйста: что я делаю не так?

 
User_mt5:

Вот такой простой скрипт.
На валютах вычисляет правильно. Например, по ЕвроДолл  = 1171.02.
А на индексах - неправильно. В частности, на САС40 (Альпари) выдаёт 640.73. Но если открыть ордер, то маржа составляет 1941.97.

Подскажите, пожалуйста: что я делаю не так?

1941.97/640.73 = 3.03087. Смотрим спецификацию контрактов по CAC40 https://alpari.com/ru/trading/contract_specification/cfd_indices_commodities/CAC40/, там: "Залог, %       3.03". Совпало, если у Вас номинальное кредитное плечо 1:100.

Дело не в индексах/валютах, в этом ДЦ вообще расчет залога очень усложнен, см. https://alpari.com/ru/faq/trading_terms/calculating_margin_notional_value/ "Как рассчитать залог при плавающем кредитном плече в зависимости от номинальной стоимости позиций?" и https://alpari.com/ru/trading/margin_requirements/#standard_accounts=fx_special&tab=cfd&pamm_ecn=indices_commodities "Маржинальные требования для инструментов ASX 200, CAC 40, HSI 50, NQ 100, STOXX 50, NG".

 
https://www.mql5.com/en/blogs/post/719643
Instant estimation of profit, margin level, drawdown on MetaTrader charts
Instant estimation of profit, margin level, drawdown on MetaTrader charts
  • 2018.07.16
  • www.mql5.com
I'm sure all of you use the crosshair tool on MetaTrader's charts. It's very useful to measure distance in bars or points between 2 spots. Yet I was always wondering, why it does not provide an option to show profit value, margin level, drawdown or gain percentage in addition to points. To remedy this problem I've developed a MQL program, which...
 
Vladimir:

1941.97/640.73 = 3.03087. Смотрим спецификацию контрактов по CAC40 https://alpari.com/ru/trading/contract_specification/cfd_indices_commodities/CAC40/, там: "Залог, %       3.03". Совпало, если у Вас номинальное кредитное плечо 1:100.

Дело не в индексах/валютах, в этом ДЦ вообще расчет залога очень усложнен, см. https://alpari.com/ru/faq/trading_terms/calculating_margin_notional_value/ "Как рассчитать залог при плавающем кредитном плече в зависимости от номинальной стоимости позиций?" и https://alpari.com/ru/trading/margin_requirements/#standard_accounts=fx_special&tab=cfd&pamm_ecn=indices_commodities "Маржинальные требования для инструментов ASX 200, CAC 40, HSI 50, NQ 100, STOXX 50, NG".

Владимир, большое спасибо.

Оказывается, всё ещё хуже, чем я думал.
Теперь ясно, что есть какой-то дурацкий коэф = 3.03.Умножить 640 на 3.03 моих мозгов хватит.
Но подскажите, пожалуйста, можно ли этот 3.03 получить программным путём? Или эти коэффициенты для всех аналогичных символов нужно занести в программу вручную?

 
User_mt5:

Владимир, большое спасибо.

Оказывается, всё ещё хуже, чем я думал.
Теперь ясно, что есть какой-то дурацкий коэф = 3.03.Умножить 640 на 3.03 моих мозгов хватит.
Но подскажите, пожалуйста, можно ли этот 3.03 получить программным путём? Или эти коэффициенты для всех аналогичных символов нужно занести в программу вручную?

Как раз этого-то я и сам не знаю. Поскольку у европейских ДЦ со следующей торговой недели начнет дейcтвовать директива ESMA, по которой плечи разные у разных инструментов https://ru.forexmagnates.com/hochesh-torgovat-kak-ranshe-stan-profi/: "Напомним, что форекс и CFD-брокеры могут работать на территории Европейского союза в обычном режиме лишь до 1 августа 2018. Потом им придется приспосабливаться к существенно более жестким условиям. А именно, розничные брокеры смогут предлагать торговлю с максимальным кредитным плечом 1:30 по основным валютным парам, 1:20 по не основным, 1:10 по товарным инструментам и не основным индексам, 1:5 по акциям и лишь 1:2 по криптовалютным инструментам.", я этим заинтересовался и даже создал две темы на форуме: https://www.mql5.com/ru/forum/261267 и https://www.mql5.com/ru/forum/261955.

Удалось собрать некоторое разнообразие мнений, специальную сплошную проверку я не делал, надеялся на ответ разработчиков. Похоже, что платформа MT для маржинальной торговли не дает клиенту (в терминале)способов программной оценки реальной торговой маржи, кроме самых тривиальных расчетов по одинаковому для всех инструментов плечу. Оно, кстати, отражается в заголовочной части генерируемого платформой отчета.

Хочешь торговать как раньше, стань профи | Forex Magnates
Хочешь торговать как раньше, стань профи | Forex Magnates
  • Victor Golovtchenko
  • ru.forexmagnates.com
Социальный брокер eToro, как и многие другие лицензированные коллеги по внебиржевой индустрии, принял решение имплементировать новые правила европейской директивы ESMA, сообщив своим клиентам о предстоящих соответствующих ограничениях, включая снижение максимального кредитного плеча по основным валютным контрактам CFD до 1:30. Более того...
 
Vladimir:

Как раз этого-то я и сам не знаю. Поскольку у европейских ДЦ со следующей торговой недели начнет дейcтвовать директива ESMA, по которой плечи разные у разных инструментов https://ru.forexmagnates.com/hochesh-torgovat-kak-ranshe-stan-profi/: "Напомним, что форекс и CFD-брокеры могут работать на территории Европейского союза в обычном режиме лишь до 1 августа 2018. Потом им придется приспосабливаться к существенно более жестким условиям. А именно, розничные брокеры смогут предлагать торговлю с максимальным кредитным плечом 1:30 по основным валютным парам, 1:20 по не основным, 1:10 по товарным инструментам и не основным индексам, 1:5 по акциям и лишь 1:2 по криптовалютным инструментам.", я этим заинтересовался и даже создал две темы на форуме: https://www.mql5.com/ru/forum/261267 и https://www.mql5.com/ru/forum/261955.

Удалось собрать некоторое разнообразие мнений, специальную сплошную проверку я не делал, надеялся на ответ разработчиков. Похоже, что платформа MT для маржинальной торговли не дает клиенту (в терминале)способов программной оценки реальной торговой маржи, кроме самых тривиальных расчетов по одинаковому для всех инструментов плечу. Оно, кстати, отражается в заголовочной части генерируемого платформой отчета.

Владимир, спасибо за ответ.

Думаю, дело здесь (как и обычно в подобных случаях) не в брокерах и не в регулирующих документах, а в платформе. Ведь нет никаких препятствий к тому, чтобы сделать для трейдера (программиста) простой нормальный набор функций, характеризующих торговые условия брокера. Но эти функции реализованы не в полной мере и не по всем параметрам. Например, для вычисления стоимости 1 пункта нужно было изрядно поднапрячься, и как выяснилось, этого оказалось мало, т.к. этот параметр напрямую зависит от стоимости ордера, а тот ещё зависит от воли брокера (коэф. 3.03), которую нельзя получить программно..

Я точно не знаю, но по-моему, эта СНГ-вская фирма А. - новозеландская, т.е. на неё не должно распространяется европейское и американское законодательство. Так что, по идее, для некоторых одарённых ничего и не изменится.

Но вопрос остаётся. Вручную один раз внести коэффициенты в программу - не проблема, хотя и противно. Вопрос - допускается ли изменение этих коэффициентов брокерами в процессе торговли. И если да, то и не знаю даже..

Вам ещё раз спасибо.

 
User_mt5:

Владимир, спасибо за ответ.

Думаю, дело здесь (как и обычно в подобных случаях) не в брокерах и не в регулирующих документах, а в платформе. Ведь нет никаких препятствий к тому, чтобы сделать для трейдера (программиста) простой нормальный набор функций, характеризующих торговые условия брокера. Но эти функции реализованы не в полной мере и не по всем параметрам. Например, для вычисления стоимости 1 пункта нужно было изрядно поднапрячься, и как выяснилось, этого оказалось мало, т.к. этот параметр напрямую зависит от стоимости ордера, а тот ещё зависит от воли брокера (коэф. 3.03), которую нельзя получить программно..

Я точно не знаю, но по-моему, эта СНГ-вская фирма А. - новозеландская, т.е. на неё не должно распространяется европейское и американское законодательство. Так что, по идее, для некоторых одарённых ничего и не изменится.

Но вопрос остаётся. Вручную один раз внести коэффициенты в программу - не проблема, хотя и противно. Вопрос - допускается ли изменение этих коэффициентов брокерами в процессе торговли. И если да, то и не знаю даже..

Вам ещё раз спасибо.

В процессе торговли большинство ДЦ меняют плечо, хотя бы на выходные, а то и на время новостей. Также плечо может быть разным для случаев, когда клиент польский или непольский https://www.mql5.com/ru/forum/261955. Вручную, к сожалению, в Вашем случае, потребуется организовать в терминале расчет по правилам Вашего ДЦ, а не просто учесть коэффициенты. Как "сделать для программиста простой нормальный набор функций, характеризующих торговые условия брокера", в языках MQL, я не знаю. Это будет аналог процедур-триггеров в СУБД, вовлечение в оборот таких средств, править (вести) которые должен ДЦ, задача непростая и на технологическом уровне, а что будет на организационном? ДЦ, в отличие от трейдеров, платят за платформу, то есть, в конечном счете, являются заказчиком работ, выполняемых MQ. Очень мало на свете заказчиков, которые с готовностью возьмутся за новый объем работ по поддержке в терминале процедур подсчета маржи. Да еще и ответственной поддержке... Возможно, в этом причина отсутствия в платформе адекватных средств оценки маржи.

Оценка маржинальных требований в MQL5
Оценка маржинальных требований в MQL5
  • 2018.06.30
  • www.mql5.com
Пример из спецификации контрактов одного ДЦ, где кредитное плечо является свойством символа, и, даже, как пишет ДЦ, его курса...
 
User_mt5:

Владимир, спасибо за ответ.

Думаю, дело здесь (как и обычно в подобных случаях) не в брокерах и не в регулирующих документах, а в платформе. Ведь нет никаких препятствий к тому, чтобы сделать для трейдера (программиста) простой нормальный набор функций, характеризующих торговые условия брокера. Но эти функции реализованы не в полной мере и не по всем параметрам. Например, для вычисления стоимости 1 пункта нужно было изрядно поднапрячься, и как выяснилось, этого оказалось мало, т.к. этот параметр напрямую зависит от стоимости ордера, а тот ещё зависит от воли брокера (коэф. 3.03), которую нельзя получить программно..

Я точно не знаю, но по-моему, эта СНГ-вская фирма А. - новозеландская, т.е. на неё не должно распространяется европейское и американское законодательство. Так что, по идее, для некоторых одарённых ничего и не изменится.

Но вопрос остаётся. Вручную один раз внести коэффициенты в программу - не проблема, хотя и противно. Вопрос - допускается ли изменение этих коэффициентов брокерами в процессе торговли. И если да, то и не знаю даже..

Вам ещё раз спасибо.

Что возвращают функции SymbolInfoInteger(_Symbol, SYMBOL_TRADE_CALC_MODE) и SymbolInfoMarginRate для вашего случая? И еще SymbolInfoDouble(_Symbol, SYMBOL_TRADE_LIQUIDITY_RATE)?

 
Stanislav Korotky:

Что возвращают функции SymbolInfoInteger(_Symbol, SYMBOL_TRADE_CALC_MODE) и SymbolInfoMarginRate для вашего случая? И еще SymbolInfoDouble(_Symbol, SYMBOL_TRADE_LIQUIDITY_RATE)?

Мне нужно всё это осмыслить, поэкспериментировать.

Вообще, это трудно для восприятия. Вот, например, "SYMBOL_TRADE_LIQUIDITY_RATE"

Коэффициент ликвидности – доля от стоимости актива, которую можно использовать в качестве залога.

Возникает куча вопросов: что это за коэффициент, почему, для чего и как необходимо его использовать, откуда берётся эта доля, и почему в принципе она бывает разная. И т.п.

Я поэкспериментировал с плечом в известной фирме А. Стоимость лота на валютах меняется пропорционально плечу (ну, хоть это). А на индексах растёт пропорционально до 1:50, при дальнейшем увеличении плеча не меняется. И при этом брокер может произвольно изменять плечо. Ну. И где вычитать эти экзотические формулы? Какие уж тут рачёты..

Ход Ваших мыслей мне понятен. Но я не совсем согласен. Думаю всё же, что нет препятствий к тому, чтобы сделать несколько простых функций: стоимость ордера объёмом 1 лот (чтоб не программист это вычислял на основании своих, уж конечно, ошибочных представлений, а платформа отвечала на запрос функции), стоимость 1 пункта, максимально допустимое плечо для символа  и т.п. При таком подходе не требуется мнение заказчика, это должно быть базовой нормой платформы. Если же конкретный заказчик использует экзотические способы расчёта, то разработчик должен выпустить специально для этого заказчика приложение к его серверной части(!) платформы, в котором заказчик сможет менять свои коэффициенты (3.03 и другую чушь) как ему вздумается. Но для трейдера, пользователя-программиста контактный набор данных должен быть единым, простым и понятным для всех брокеров по всем символам.

Должен был бы быть..
Хоть бы уже контекстные ссылки на примеры давали. Но нет, приходится догадываться. Очень загадочный язык, этот MQL..

 
User_mt5:

Ход Ваших мыслей мне понятен. Но я не совсем согласен. Думаю всё же, что нет препятствий к тому, чтобы сделать несколько простых функций: стоимость ордера объёмом 1 лот (чтоб не программист это вычислял на основании своих, уж конечно, ошибочных представлений, а платформа отвечала на запрос функции), стоимость 1 пункта, максимально допустимое плечо для символа  и т.п. При таком подходе не требуется мнение заказчика, это должно быть базовой нормой платформы. Если же конкретный заказчик использует экзотические способы расчёта, то разработчик должен выпустить специально для этого заказчика приложение к его серверной части(!) платформы, в котором заказчик сможет менять свои коэффициенты (3.03 и другую чушь) как ему вздумается. Но для трейдера, пользователя-программиста контактный набор данных должен быть единым, простым и понятным для всех брокеров по всем символам.

Должен был бы быть..
Хоть бы уже контекстные ссылки на примеры давали. Но нет, приходится догадываться. Очень загадочный язык, этот MQL..

Абсолютно согласен. Это не ход моих мыслей, а данность. Пишите больше заявок в сервис-деск с такими текстами - может быть лет через 5 сделают. ;-)

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