Вот такой простой скрипт.
На валютах вычисляет правильно. Например, по ЕвроДолл = 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".
- 2018.07.16
- www.mql5.com
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 получить программным путём? Или эти коэффициенты для всех аналогичных символов нужно занести в программу вручную?
Владимир, большое спасибо.
Оказывается, всё ещё хуже, чем я думал.
Теперь ясно, что есть какой-то дурацкий коэф = 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 для маржинальной торговли не дает клиенту (в терминале)способов программной оценки реальной торговой маржи, кроме самых тривиальных расчетов по одинаковому для всех инструментов плечу. Оно, кстати, отражается в заголовочной части генерируемого платформой отчета.
- Victor Golovtchenko
- ru.forexmagnates.com
Как раз этого-то я и сам не знаю. Поскольку у европейских ДЦ со следующей торговой недели начнет дей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), которую нельзя получить программно..
Я точно не знаю, но по-моему, эта СНГ-вская фирма А. - новозеландская, т.е. на неё не должно распространяется европейское и американское законодательство. Так что, по идее, для некоторых одарённых ничего и не изменится.
Но вопрос остаётся. Вручную один раз внести коэффициенты в программу - не проблема, хотя и противно. Вопрос - допускается ли изменение этих коэффициентов брокерами в процессе торговли. И если да, то и не знаю даже..
Вам ещё раз спасибо.
Владимир, спасибо за ответ.
Думаю, дело здесь (как и обычно в подобных случаях) не в брокерах и не в регулирующих документах, а в платформе. Ведь нет никаких препятствий к тому, чтобы сделать для трейдера (программиста) простой нормальный набор функций, характеризующих торговые условия брокера. Но эти функции реализованы не в полной мере и не по всем параметрам. Например, для вычисления стоимости 1 пункта нужно было изрядно поднапрячься, и как выяснилось, этого оказалось мало, т.к. этот параметр напрямую зависит от стоимости ордера, а тот ещё зависит от воли брокера (коэф. 3.03), которую нельзя получить программно..
Я точно не знаю, но по-моему, эта СНГ-вская фирма А. - новозеландская, т.е. на неё не должно распространяется европейское и американское законодательство. Так что, по идее, для некоторых одарённых ничего и не изменится.
Но вопрос остаётся. Вручную один раз внести коэффициенты в программу - не проблема, хотя и противно. Вопрос - допускается ли изменение этих коэффициентов брокерами в процессе торговли. И если да, то и не знаю даже..
Вам ещё раз спасибо.
В процессе торговли большинство ДЦ меняют плечо, хотя бы на выходные, а то и на время новостей. Также плечо может быть разным для случаев, когда клиент польский или непольский https://www.mql5.com/ru/forum/261955. Вручную, к сожалению, в Вашем случае, потребуется организовать в терминале расчет по правилам Вашего ДЦ, а не просто учесть коэффициенты. Как "сделать для программиста простой нормальный набор функций, характеризующих торговые условия брокера", в языках MQL, я не знаю. Это будет аналог процедур-триггеров в СУБД, вовлечение в оборот таких средств, править (вести) которые должен ДЦ, задача непростая и на технологическом уровне, а что будет на организационном? ДЦ, в отличие от трейдеров, платят за платформу, то есть, в конечном счете, являются заказчиком работ, выполняемых MQ. Очень мало на свете заказчиков, которые с готовностью возьмутся за новый объем работ по поддержке в терминале процедур подсчета маржи. Да еще и ответственной поддержке... Возможно, в этом причина отсутствия в платформе адекватных средств оценки маржи.
- 2018.06.30
- www.mql5.com
Владимир, спасибо за ответ.
Думаю, дело здесь (как и обычно в подобных случаях) не в брокерах и не в регулирующих документах, а в платформе. Ведь нет никаких препятствий к тому, чтобы сделать для трейдера (программиста) простой нормальный набор функций, характеризующих торговые условия брокера. Но эти функции реализованы не в полной мере и не по всем параметрам. Например, для вычисления стоимости 1 пункта нужно было изрядно поднапрячься, и как выяснилось, этого оказалось мало, т.к. этот параметр напрямую зависит от стоимости ордера, а тот ещё зависит от воли брокера (коэф. 3.03), которую нельзя получить программно..
Я точно не знаю, но по-моему, эта СНГ-вская фирма А. - новозеландская, т.е. на неё не должно распространяется европейское и американское законодательство. Так что, по идее, для некоторых одарённых ничего и не изменится.
Но вопрос остаётся. Вручную один раз внести коэффициенты в программу - не проблема, хотя и противно. Вопрос - допускается ли изменение этих коэффициентов брокерами в процессе торговли. И если да, то и не знаю даже..
Вам ещё раз спасибо.
Что возвращают функции SymbolInfoInteger(_Symbol, SYMBOL_TRADE_CALC_MODE) и SymbolInfoMarginRate для вашего случая? И еще SymbolInfoDouble(_Symbol, SYMBOL_TRADE_LIQUIDITY_RATE)?
Что возвращают функции SymbolInfoInteger(_Symbol, SYMBOL_TRADE_CALC_MODE) и SymbolInfoMarginRate для вашего случая? И еще SymbolInfoDouble(_Symbol, SYMBOL_TRADE_LIQUIDITY_RATE)?
Мне нужно всё это осмыслить, поэкспериментировать.
Вообще, это трудно для восприятия. Вот, например, "SYMBOL_TRADE_LIQUIDITY_RATE"
Коэффициент ликвидности – доля от стоимости актива, которую можно использовать в качестве залога. |
Возникает куча вопросов: что это за коэффициент, почему, для чего и как необходимо его использовать, откуда берётся эта доля, и почему в принципе она бывает разная. И т.п.
Я поэкспериментировал с плечом в известной фирме А. Стоимость лота на валютах меняется пропорционально плечу (ну, хоть это). А на индексах растёт пропорционально до 1:50, при дальнейшем увеличении плеча не меняется. И при этом брокер может произвольно изменять плечо. Ну. И где вычитать эти экзотические формулы? Какие уж тут рачёты..
Ход Ваших мыслей мне понятен. Но я не совсем согласен. Думаю всё же, что нет препятствий к тому, чтобы сделать несколько простых функций: стоимость ордера объёмом 1 лот (чтоб не программист это вычислял на основании своих, уж конечно, ошибочных представлений, а платформа отвечала на запрос функции), стоимость 1 пункта, максимально допустимое плечо для символа и т.п. При таком подходе не требуется мнение заказчика, это должно быть базовой нормой платформы. Если же конкретный заказчик использует экзотические способы расчёта, то разработчик должен выпустить специально для этого заказчика приложение к его серверной части(!) платформы, в котором заказчик сможет менять свои коэффициенты (3.03 и другую чушь) как ему вздумается. Но для трейдера, пользователя-программиста контактный набор данных должен быть единым, простым и понятным для всех брокеров по всем символам.
Должен был бы быть..
Хоть бы уже контекстные ссылки на примеры давали. Но нет, приходится догадываться. Очень загадочный язык, этот MQL..
Ход Ваших мыслей мне понятен. Но я не совсем согласен. Думаю всё же, что нет препятствий к тому, чтобы сделать несколько простых функций: стоимость ордера объёмом 1 лот (чтоб не программист это вычислял на основании своих, уж конечно, ошибочных представлений, а платформа отвечала на запрос функции), стоимость 1 пункта, максимально допустимое плечо для символа и т.п. При таком подходе не требуется мнение заказчика, это должно быть базовой нормой платформы. Если же конкретный заказчик использует экзотические способы расчёта, то разработчик должен выпустить специально для этого заказчика приложение к его серверной части(!) платформы, в котором заказчик сможет менять свои коэффициенты (3.03 и другую чушь) как ему вздумается. Но для трейдера, пользователя-программиста контактный набор данных должен быть единым, простым и понятным для всех брокеров по всем символам.
Должен был бы быть..
Хоть бы уже контекстные ссылки на примеры давали. Но нет, приходится догадываться. Очень загадочный язык, этот MQL..
Абсолютно согласен. Это не ход моих мыслей, а данность. Пишите больше заявок в сервис-деск с такими текстами - может быть лет через 5 сделают. ;-)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вот такой простой скрипт.
На валютах вычисляет правильно. Например, по ЕвроДолл = 1171.02.
А на индексах - неправильно. В частности, на САС40 (Альпари) выдаёт 640.73. Но если открыть ордер, то маржа составляет 1941.97.
Подскажите, пожалуйста: что я делаю не так?