Очень хорошая идея - опубликовать пример расчёта маржи в авторском
исполнении!
На InterbankFX на минисчетах к названиям инструментов добавляется буква m (например "EURUSDm"). Поскольку брокер весьма популярен, то я доработал скрипт для работы именно с InterbankFX на минисчетах. Думаю начинающим может пригодиться.
.
На InterbankFX на минисчетах к названиям инструментов добавляется буква m (например "EURUSDm"). Поскольку брокер весьма популярен, то я доработал скрипт для работы именно с InterbankFX на минисчетах. Думаю начинающим может пригодиться.
//+------------------------------------------------------------------+ //| MarginCalculate.mq4 (for InterBankFX mini-account)| //| Copyright © 2006, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/" //+------------------------------------------------------------------+ //| Очень простая функция расчета маржи для форексных символов. | //| Расчет автоматически идет в базовой валюте счета и не работает | //| для сложных видов курсов, которые не имеют прямого пересчета | //| в базовую валюту торгового счета. | //+------------------------------------------------------------------+ double MarginCalculate(string symbol,double volume) { string first =StringSubstr(symbol,0,3); // первый символ, например EUR string second =StringSubstr(symbol,3,3); // второй символ, например USD string currency=AccountCurrency(); // валюта депозита, например USD double leverage=AccountLeverage(); // кредитное плечо, например 100 double contract=MarketInfo(symbol,MODE_LOTSIZE); // размер контракта, например 100000 double bid =MarketInfo(symbol,MODE_BID); // цена бид //---- допускаем только стандартные форексные символы XXXYYYm if(StringLen(symbol)!=7) { Print("MarginCalculate: '",symbol, "' must be InterBankFX mini account forex symbol XXXYYYm"); return(0.0); } //---- проверка наличия данных if(bid<=0 || contract<=0) { Print("MarginCalculate: no market information for '", symbol,"'"); return(0.0); } //---- проверяем самые простые варианты - без кроссов if(first==currency) return(contract*volume/leverage); // USDxxx if(second==currency) return(contract*bid*volume/leverage); // xxxUSD //---- проверяем обычные кроссы, ищем прямое преобразование // через валюту депозита //string base=currency+first; string base=currency+first+"m"; // USDxxx if(MarketInfo(base,MODE_BID)>0) return(contract/MarketInfo(base,MODE_BID)*volume/leverage); //---- попробуем наоборот base=first+currency+"m"; // xxxUSD if(MarketInfo(base,MODE_BID)>0) return(contract*MarketInfo(base,MODE_BID)*volume/leverage); //---- нет возможности прямого перерасчета Print("MarginCalculate: can not convert '",symbol,"'"); return(0.0); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- Print("Margin EURUSDm: ",MarginCalculate("EURUSDm",1.0)); Print("Margin USDCHFm: ",MarginCalculate("USDCHFm",1.0)); Print("Margin GBPCHFm: ",MarginCalculate("GBPCHFm",1.0)); Print("Margin CHFJPYm: ",MarginCalculate("CHFJPYm",1.0)); //---- return(0); } //+------------------------------------------------------------------+
.
А вот покажите перевод прибылей/убытков из валюты котировки
в валюту депозита...
Смысл вопроса - какими курсами Вы будете пользоваться. Если при расчете маржи брались курсы вал. депозита и вал. котировки в момент времени
покупки/продажи базовой валюты , то как производится пересчет всего хозяйства в валюту депозита для каждого текущего момента времени вплоть до завершения операции.
Всякий раз по текущему курсу вал.депозита/вал.котировки(вал. котировки/вал.депозита) ? Или по первоначальному ?
С уважением - С.Д.
Смысл вопроса - какими курсами Вы будете пользоваться. Если при расчете маржи брались курсы вал. депозита и вал. котировки в момент времени
покупки/продажи базовой валюты , то как производится пересчет всего хозяйства в валюту депозита для каждого текущего момента времени вплоть до завершения операции.
Всякий раз по текущему курсу вал.депозита/вал.котировки(вал. котировки/вал.депозита) ? Или по первоначальному ?
С уважением - С.Д.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
MarginCalculate:
Author: Renat Fatkhullin