artemiusgreat:
4 функции, включая OrderCalcMargin, которые должны возвращать размер необходимого залога при открытии позиции, возвращают 0, две другие функции возвращают просто единицу.
Вопрос : как получить размер залога при открытии позиции аналогичный тому, что был в МТ4 для Forex рынка?
У меня нормально всё с таким же кодом:
2014.02.09 15:14:57.921 #Test (NZDUSD,W1) NZDUSD (price: 0.82995): 829.95 2014.02.09 15:15:02.505 #Test (USDJPY,W1) USDJPY (price: 102.351): 1000.00 2014.02.09 15:15:05.961 #Test (GBPJPY,W1) GBPJPY (price: 167.984): 1641.41 2014.02.09 15:15:08.833 #Test (AUDUSD,W1) AUDUSD (price: 0.89599): 895.99 2014.02.09 15:15:16.345 #Test (GBPUSD,W1) GBPUSD (price: 1.64141): 1641.41 2014.02.09 15:15:19.225 #Test (EURUSD,W1) EURUSD (price: 1.36355): 1363.55
Код:
//+------------------------------------------------------------------+ //| #Test.mq5 | //| Copyright 2013, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double m =0; double price =SymbolInfoDouble(_Symbol,SYMBOL_ASK); int digits =(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); //--- OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,m); //--- Print(_Symbol," (price: "+DoubleToString(price,digits)+"): ",DoubleToString(m,2)); } //+------------------------------------------------------------------+
спасибо, понял, эта функция запрещена в индикаторе ...
тогда другой вопрос - как программно получить размер плеча?
Update: ссылка сама появилась, вопрос закрыт :)
artemiusgreat:
Поиск рулит. А тем, для кого не рулит, сайт сам подсказывает. ))
...
Update: ссылка сама появилась, вопрос закрыт :)
Вдруг кому маржа в индикаторе понадобится : http://www.roboforex.ru/about/faq/top-10/margin-calculation/
double GetMargin(const string symbol, const double lot) { long leverage = AccountInfoInteger(ACCOUNT_LEVERAGE); double contract = SymbolInfoDouble(symbol, SYMBOL_TRADE_CONTRACT_SIZE) * lot; string currency = StringSubstr(symbol, 0, 3) + AccountInfoString(ACCOUNT_CURRENCY); return(SymbolInfoDouble(currency, SYMBOL_LAST) * contract / leverage); }
Как рассчитывается размер залога? / RoboForex
- www.mql5.com
Формула расчёта залога в базовой валюте: = / Базовая валюта – это валюта, стоящая первой в котировке, например: Размер контракта – объём контракта в базовой валюте. Величина 1 лота всегда равна 100 000 единицам базовой валюты. Соответственно, величина 0,1 лота = 100 000 * 0,1 = 10 000 базовой валюты, величина 0,01 лота = 100 000 * 0,01...
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
4 функции, включая OrderCalcMargin, которые должны возвращать размер необходимого залога при открытии позиции, возвращают 0, две другие функции возвращают просто единицу.
Вопрос : как получить размер залога при открытии позиции аналогичный тому, что был в МТ4 для Forex рынка?
MarketInfo(Symbol(), MODE_MARGINREQUIRED) // для GBPUSD = 328.28