Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Однако на самом деле оказалось, что оба эти способа возвращают неверные значения.
Вот, к примеру, есть такой брокер Альпари. Плечо моего счёта у данного брокера составляет 1:500, валюта счёта - доллары США. Казалось бы, размер залога (маржи) для покупки одного лота можно вычислить, разделив размер контракта (100 тыс. единиц базовой валюты) на плечо. Дело вроде бы нехитрое. Однако на практике этот подход почему-то не работает. Точнее, результат такого вычисления не совпадает с тем, что возвращают вышеупомянутые функции MQL.
У брокера из моего примера есть таблица (_alpari.forex/ru/trading/trading_terms/#margin_requirements), в которой указаны значения максимального кредитного плеча для различных инструментов. Вот небольшая выдержка из неё:
Symbol
Max. Leverage
USDCHF
1:1000
USDRUB
1:100
USDZAR
1:25
USDTRY
1:3
Я специально выбрал инструменты с базовой валютой USD для лучшего понимания.
Поскольку плечо моего счёта составляет 1:500, логично предположить, что величина залога при покупке одного лота для данных инструментов должна составлять:
Symbol
Required Margin
USDCHF
200
USDRUB
1000
USDZAR
4000
USDTRY
33333.33
Для проверки этого предположения я написал простенький скрипт:
К моему величайшему удивлению, этот скрипт вернул одинаковые значения для всех валютных пар! В частности, маржа для открытия одного лота USDCHF и USDZAR одинакова и равна 200. Хотя на самом деле она должна отличаться в 167 раз!
Внимание, вопрос! Где в моих рассуждениях ошибка и как на самом деле средствами MQL4 можно получить размер залога ДО открытия позиции?
Для начала посмотри спецификации этих инструментов. У меня нет счёта в альпарях и никогда не будет, потому я не могу посмотреть, а вот в робо такие значения процента маржи
Для начала посмотри спецификации этих инструментов. У меня нет счёта в альпарях и никогда не будет, потому я не могу посмотреть, а вот в робо такие значения процента маржи
Однако на самом деле оказалось, что оба эти способа возвращают неверные значения.
Вот, к примеру, есть такой брокер Альпари. Плечо моего счёта у данного брокера составляет 1:500, валюта счёта - доллары США. Казалось бы, размер залога (маржи) для покупки одного лота можно вычислить, разделив размер контракта (100 тыс. единиц базовой валюты) на плечо. Дело вроде бы нехитрое. Однако на практике этот подход почему-то не работает. Точнее, результат такого вычисления не совпадает с тем, что возвращают вышеупомянутые функции MQL.
У брокера из моего примера есть таблица (_alpari.forex/ru/trading/trading_terms/#margin_requirements), в которой указаны значения максимального кредитного плеча для различных инструментов. Вот небольшая выдержка из неё:
Symbol
Max. Leverage
USDCHF
1:1000
USDRUB
1:100
USDZAR
1:25
USDTRY
1:3
Я специально выбрал инструменты с базовой валютой USD для лучшего понимания.
Поскольку плечо моего счёта составляет 1:500, логично предположить, что величина залога при покупке одного лота для данных инструментов должна составлять:
Symbol
Required Margin
USDCHF
200
USDRUB
1000
USDZAR
4000
USDTRY
33333.33
Для проверки этого предположения я написал простенький скрипт:
К моему величайшему удивлению, этот скрипт вернул одинаковые значения для всех валютных пар! В частности, маржа для открытия одного лота USDCHF и USDZAR одинакова и равна 200. Хотя на самом деле она должна отличаться в 167 раз!
Внимание, вопрос! Где в моих рассуждениях ошибка и как на самом деле средствами MQL4 можно получить размер залога ДО открытия позиции?
@AlexeNP, благодарю за отличный скрипт! Он прекрасно иллюстрирует мой вопрос:
В первом случае маржа, которую рассчитал скрипт, совпала с той, которая была фактически удержана. А во втором случае она оказалась в пять раз меньше.
Почему была удержана именно такая маржа, мне понятно. Чуть выше я приводил ссылку на торговые условия, где указано максимальное плечо для первого инструмента 1:1000, а для второго - 1:100. Плечо моего счёта составляет 1:500, поэтому в первом случае за лот 0.10 был удержан залог 20 USD (что соответствует плечу 1:500), а во втором - 100 USD (плечо 1:100).
Мой вопрос состоит в том, как правильно средствами MQL4 определить необходимую маржу ДО открытия позиции.
В первом случае маржа, которую рассчитал скрипт, совпала с той, которая была фактически удержана. А во втором случае она оказалась в пять раз меньше.
Почему была удержана именно такая маржа, мне понятно. Чуть выше я приводил ссылку на торговые условия, где указано максимальное плечо для первого инструмента 1:1000, а для второго - 1:100. Плечо моего счёта составляет 1:500, поэтому в первом случае за лот 0.10 был удержан залог 20 USD (что соответствует плечу 1:500), а во втором - 100 USD (плечо 1:100).
Мой вопрос состоит в том, как правильно средствами MQL4 определить необходимую маржу ДО открытия позиции.
Благодарю за ещё один полезный скрипт! Я посмотрел, но, к сожалению, ясности не прибавилось. Более того, я запутался ещё больше. Вот как я действовал.
1. Открываем график USDCHF, бросаем на него скрипт:
Скрипт вычисляет необходимую маржу для покупки 0.1 лота USDCHF, которая равна 20 USD. Открываем позицию:
Видим, что маржа действительно равна 20 USD. Отлично, скрипт работает! Ровно так, как и ожидалось. Закрываем позицию.
2. Открываем график USDRUB (с той же базовой валютой), бросаем на него скрипт:
Видим, что необходимая маржа снова равна 20 USD (несмотря на то, что плечо по данному инструменту в пять раз ниже). Тщательно рассчитав принимаемый риск, открываем соответствующую позицию:
И что мы видим? Вместо рассчитанной скриптом маржи 20 USD с нас удержано в пять раз больше - 100 USD. Теперь мы в пять раз ближе к стоп-ауту, чем можно было предположить, исходя из рассчитанной заранее величины!
Я не очень понимаю смысл первых двух, а вот вторую и третью я тоже использовал! Если я ничего не путаю, они применяются в том случае, если базовая валюта (в которой вычисляется залоговые средства) не совпадает с валютой депозита. Но в приведённых мной примерах (в том числе в самом первом) эти валюты совпадают. Таким образом, для этого частного случая (которому сосуществуют все приводимые мной примеры) множители ask и bid нужно исключить (IMHO). Если я ошибаюсь, пожалуйста, поправьте меня.
В любом случае, ни одна из рассчитанных скриптом величин в случае с парой USDRUB (а также USDZAR и USDTRY) не соответствует сумме маржи, которая фактически удерживается при открытии позиции.
Собственно, что я хочу понять...
Как же при помощи MQL4 рассчитать маржу ДО открытия позиции таким образом, чтобы рассчитанная нами маржа соответствовала той, которая будет удержана в действительности?
Видим, что необходимая маржа снова равна 20 USD (несмотря на то, что плечо по данному инструменту в пять раз ниже). Тщательно рассчитав принимаемый риск, открываем соответствующую позицию:
И что мы видим? Вместо рассчитанной скриптом маржи 20 USD с нас удержано в пять раз больше - 100 USD. Теперь мы в пять раз ближе к стоп-ауту, чем можно было предположить, исходя из рассчитанной заранее величины!
Я не очень понимаю смысл первых двух, а вот вторую и третью я тоже использовал! Если я ничего не путаю, они применяются в том случае, если базовая валюта (в которой вычисляется залоговые средства) не совпадает с валютой депозита. Но в приведённых мной примерах (в том числе в самом первом) эти валюты совпадают. Таким образом, для этого частного случая (которому сосуществуют все приводимые мной примеры) множители ask и bid нужно исключить (IMHO). Если я ошибаюсь, пожалуйста, поправьте меня.
В любом случае, ни одна из рассчитанных скриптом величин в случае с парой USDRUB (а также USDZAR и USDTRY) не соответствует сумме маржи, которая фактически удерживается при открытии позиции.
Собственно, что я хочу понять...
Как же при помощи MQL4 рассчитать маржу ДО открытия позиции таким образом, чтобы рассчитанная нами маржа соответствовала той, которая будет удержана в действительности?
"Сдаётся мне, джентльмены, это была комедия..."
вот что я тут подумал - а точно, что по разным символам используется один и тот же способ расчета маржи?
проверь по символам вот такое SymbolInfoInteger(NULL,SYMBOL_TRADE_CALC_MODE)
если не равно 0, то вот такая будет маржа
Проверил. Для всех символов возвращается 0. Как я понимаю, это соответствует константе SYMBOL_CALC_MODE_FOREX. Это косвенно подтверждается скриншотами из вот этого поста.
Проверил. Для всех символов возвращается 0. Как я понимаю, это соответствует константе SYMBOL_CALC_MODE_FOREX. Это косвенно подтверждается скриншотами из вот этого поста.
Добрый день! Помогите пожалуйста с кодом закрытия. Сейчас советник работает на H1, но я хочу добавить условия для открытия сделок по M15. С условиями открытия мне все понятно, но вот если советник открыл сделку по М15 то и закрыть он ее будет должен при создании условий выхода на этом таймфрейме а не на H1. Никак не могу понять как написать код выхода, вернее как сказать что если вход был по M15 то условия выхода такие а если по H1 то такие. Буду благодарен за помощь
Добрый день! Помогите пожалуйста с кодом закрытия. Сейчас советник работает на H1, но я хочу добавить условия для открытия сделок по M15. С условиями открытия мне все понятно, но вот если советник открыл сделку по М15 то и закрыть он ее будет должен при создании условий выхода на этом таймфрейме а не на H1. Никак не могу понять как написать код выхода, вернее как сказать что если вход был по M15 то условия выхода такие а если по H1 то такие. Буду благодарен за помощь
Ваш вопрос сложно понять: вам нужна подписка на эту тему чтобы вовремя читать эти сообщения?
или вы желаете получить mq4 код программы ex4 ?
Ihre Frage ist schwer zu verstehen: Benötigen Sie ein Abonnement für dieses Thema, um diese Nachrichten rechtzeitig lesen zu können?
oder möchten Sie den mq4-Code des ex4-Programms erhalten?
Добрый день! Помогите пожалуйста с кодом закрытия. Сейчас советник работает на H1, но я хочу добавить условия для открытия сделок по M15. С условиями открытия мне все понятно, но вот если советник открыл сделку по М15 то и закрыть он ее будет должен при создании условий выхода на этом таймфрейме а не на H1. Никак не могу понять как написать код выхода, вернее как сказать что если вход был по M15 то условия выхода такие а если по H1 то такие. Буду благодарен за помощь
Вам нужно пометить позиции, советник должен различать: где позиция по М15, а где позиция по Н1. Есть два варианта: по комментарию к ордеру и по меджику. Проще и надежнее по меджику, комент брокер может изменить. Задаете начальный меджик, например, 10000, затем прибавляете к нему значение ТФ на котором будет установлена позиция, т.е., позиция по М15 будет иметь меджик - 10015, а по Н1 - 10060 и т.д. Теперь следует узнать с какими меджиками есть позиции в рынке, сколько их, при этом раздельно посчитать на бай/селл. Зная какие есть позиции в рынке + выполнение условия по закрытию на выбранном ТФ - производим закрытие нужных.
Вам нужно пометить позиции, советник должен различать: где позиция по М15, а где позиция по Н1. Есть два варианта: по комментарию к ордеру и по меджику. Проще и надежнее по меджику, комент брокер может изменить. Задаете начальный меджик, например, 10000, затем прибавляете к нему значение ТФ на котором будет установлена позиция, т.е., позиция по М15 будет иметь меджик - 10015, а по Н1 - 10060 и т.д. Теперь следует узнать с какими меджиками есть позиции в рынке, сколько их, при этом раздельно посчитать на бай/селл. Зная какие есть позиции в рынке + выполнение условия по закрытию на выбранном ТФ - производим закрытие нужных.
Но он все равно открывает на одну больше или когда одна из сделок закрывается либо по тэйк профиту или иначе, может открыть еще несколько. А я также и в условие вставил что если OrdersTotal()>=Trading_EA_Restriction то новую сделку не открывать. Что можно сделать?
Ihre Frage ist schwer zu verstehen: Sie benötigen ein Abonnement zu diesem Thema in der Zeit zu Lesen diese Nachrichten?
oder Sie möchten bekommen mq4 Code des Programms ex4 ?
Ihre Frage ist schwer zu verstehen: Benötigen Sie ein Abonnement für dieses Thema, um diese Nachrichten rechtzeitig lesen zu können?
oder möchten Sie den mq4-Code des ex4-Programms erhalten?