Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если бы плечо для инструмента изменилось вследствие увеличения суммарного лота или каких-то других причин, логично было бы ожидать, что эти запросы должны были возвращать увеличенную величину маржи, разве нет?
Нет, эти функции используют плечо счета.
Да, так и есть.
Только, скорее всего, плечо меняется не для отдельной сделки, а для инструмента целиком, но сути это не меняет.
Добавлю-ка я алерт в свой информер на этот случай...
Мудро, имхенько
Нет, эти функции используют плечо счета.
Пожалуйста, подскажите, а какой функцией можно получить актуальный размер залога по отдельному инструменту в случае, если плечо по этому инструменту в данный момент времени отличается от плеча счёта?
Пожалуйста, подскажите, а какой функцией можно получить актуальный размер залога по отдельному инструменту в случае, если плечо по этому инструменту в данный момент времени отличается от плеча счёта?
Пожалуйста, подскажите, а какой функцией можно получить актуальный размер залога по отдельному инструменту в случае, если плечо по этому инструменту в данный момент времени отличается от плеча счёта?
Может быть SymbolInfoDouble(Symbol, SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?
Может быть SymbolInfoDouble(Symbol, SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?
К сожалению, при работе с инструментами рынка FOREX функция SymbolInfoDouble c любой из этих констант возвращает ноль.
итак, теперь можно ответить на вопрос ветки
Формула для расчета маржи при прямой котировке
М=СС/КП
Например, чтобы совершить сделку объемом 1 стандартный лот (100 000 единиц) по валютной паре USD/CAD, с кредитным плечом 1:200, необходимо внести маржу:
То есть, сумма маржи составит 500 $. А при кредитном плече 1:500 маржа будет всего лишь 100 000/500=200 $. Но при КП 1:500 вы сможете приобрести 10 лотов объемом 1 миллион долларов, и совершать сделки при марже 100 000/500=2 000 $.
Расчет маржи для обратной котировки
М=СС/КП х КВ
Для примера возьмем пару GBR/USD.
Не получаются круглые суммы, зато стоимость одного пункта всегда будет выражена круглыми числами. А для прямых котировок некоторое неудобство составляет расчет пункта.
Расчет маржи для кросс-курсов
М = СС/КП х КВ
пример:
//+-------------- РАСЧЕТ МАРЖИ ---------------------+
double calcMGN(string SYMB, double VOL)
{
double Res=0,Price=0;
if(LEVERAGE!=0)
{
if(StringSubstr(SYMB,0,3)!="USD")
{
SYMB=StringSubstr(SYMB,0,3)+"USD";
Price=iClose(SYMB,Period(),0);
Res=VOL*Price/LEVERAGE;
}
else Res=VOL/LEVERAGE;
}
return(Res);
}
Пожалуйста, подскажите, а какой функцией можно получить актуальный размер залога по отдельному инструменту в случае, если плечо по этому инструменту в данный момент времени отличается от плеча счёта?
Формулы можно найти. Но зачем?
Возьмите фактическую маржу по всем позициям по инструменту и посчитайте, какое получилось фактическое плечо.
Формулы можно найти. Но зачем?
Возьмите фактическую маржу по всем позициям по инструменту и посчитайте, какое получилось фактическое плечо.
не получиться
плечо плавает
я нарывался на такое как он описывает,
это действительно печально при достаточно высоких рисках
итак, теперь можно ответить на вопрос ветки
Каюсь, вопрос в заголовке ветки я сформулировал неверно. На самом деле меня интересует не как вычислить маржу, а как получить её фактическое (не расчётное) значение от терминала. Причём не для счёта в целом, а для отдельно взятой позиции. Именно об этом идёт речь в первом посте. Я уже понял, что сделать это средствами MQL4 невозможно, такой функции просто нет. Однако не так давно @Andrey Khatimlianskii предположил, что плечо может изменяться не для отдельно взятой позиции, а для инструмента в целом. И теперь мне важно разобраться, как получить значение этого плеча в том случае, если оно отличается от плеча счёта.
Формула для расчета маржи при прямой котировке
М=СС/КП
Проблема этой и всех последующих формул в том, что они содержат КП (кредитное плечо). К сожалению, я пока не смог разобраться, как получить эту величину для отдельно взятого инструмента. Функции AccountMargin() и AccountInfoInteger(ACCOUNT_LEVERAGE) возвращают плечо счёта, а не символа, а функция MarketInfo(_Symbol,MODE_MARGINREQUIRED) возвращает значение маржи, соответствующее плечу счёта, даже в том случае, если позиции по данному символу фактически открываются с абсолютно другим плечом. Функция SymbolInfoDouble c константами SYMBOL_MARGIN_INITIAL или SYMBOL_MARGIN_MAINTENANCE при работе на инструментах рынка FOREX всегда возвращает ноль.
Таким образом, я не понимаю, как можно использовать эту и все последующие формулы в том случае, если по отдельно взятому инструменту брокером установлено кредитное плечо, отличное от КП счёта в целом.
Формулы можно найти. Но зачем?
Я пытаюсь найти не формулы (их уже было предложено достаточно), а именно функцию MQL4. Для того, чтобы получить не расчётное значение, а фактическое. Благодаря Вам, Андрей, я уже понял, что сделать это для отдельно взятой позиции невозможно. Теперь мне интересно, как получить кредитное плечо для инструмента в целом, если оно отличается от плеча счёта.
Возьмите фактическую маржу по всем позициям по инструменту и посчитайте, какое получилось фактическое плечо.
Именно так я сейчас и сделал. Советник сравнивает фактическое значение маржи с расчётным и в случае значительного превышения останавливает торговлю и отправляет уведомление трейдеру. Пока таких уведомлений не поступало (тьфу*3).
Но как быть, если есть позиции по другим инструментам? Ведь чуть выше стало очевидно, что получить от терминала фактическое значение маржи для отдельно взятой позиции невозможно. Но ведь наверняка это можно сделать для инструмента в целом?