Попробуйте это
Free=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
Вроде OrderCalcMargin()
Попробуйте это
Это размер свободной маржи. Требуется узнать, сколько маржи будет использовано на открытие позиции до ее непосредственного открытия.
Оно. Спасибо:
double fMargin = 0.0; OrderCalcMargin(ORDER_TYPE_BUY, Symbol(), 0.1, SymbolInfoDouble(Symbol(), SYMBOL_ASK), fMargin); PRINT(fMargin);
Результат:
2021.02.26 19:12:52.582 Test (GBPUSD,H1) fMargin = 139.33
Это размер свободной маржи. Требуется узнать, сколько маржи будет использовано на открытие позиции до ее непосредственного открытия.
Ну так сопоставлять же надо, да ладно, разобрались уже)
Ну так сопоставлять же надо, да ладно, разобрались уже)
Уточните, пожалуйста, что сопоставлять?
Уточните, пожалуйста, что сопоставлять?
Сопоставлять свободную маржу счёта с маржой ордера, это смотря для каких целей...
предупреждение выдавало - не знаю так правильно (int) поставил перед - предупреждение пропало
//+------------------------------------------------------------------+ //| AccountInfoDouble.mq5 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- double fMargin = 0.0; (int)OrderCalcMargin(ORDER_TYPE_BUY, Symbol(), 0.1, SymbolInfoDouble(Symbol(), SYMBOL_BID), fMargin); //--- выведем всю информацию, доступную из функции AccountInfoDouble() printf("fMargin = %G",fMargin); printf("ACCOUNT_BALANCE = %G",AccountInfoDouble(ACCOUNT_BALANCE)); printf("ACCOUNT_CREDIT = %G",AccountInfoDouble(ACCOUNT_CREDIT)); printf("ACCOUNT_PROFIT = %G",AccountInfoDouble(ACCOUNT_PROFIT)); printf("ACCOUNT_EQUITY = %G",AccountInfoDouble(ACCOUNT_EQUITY)); printf("ACCOUNT_MARGIN = %G",AccountInfoDouble(ACCOUNT_MARGIN)); printf("ACCOUNT_MARGIN_FREE = %G",AccountInfoDouble(ACCOUNT_MARGIN_FREE)); printf("ACCOUNT_MARGIN_LEVEL = %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)); printf("ACCOUNT_MARGIN_SO_CALL = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL)); printf("ACCOUNT_MARGIN_SO_SO = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_SO)); } //+------------------------------------------------------------------+
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
проверил - почти точно показало - 1 копейка разница
предупреждение выдавало - не знаю так правильно (int) поставил перед - предупреждение пропало
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
проверил - почти точно показало - 1 копейка разница
счас копейка, потом уже 10...
не, потом второй раз накинул скрипт - в точь точь показало.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Неожиданно для себя столкнулся с проблемой: невозможно определить размер требуемой маржи до открытия позиции. Я привык, что в МТ4 SymboInfoDouble() заведомо не работает, и пользовался старенькой, но надежной, MarketInfo(). Но вот незадача - оказалось, что и в МТ5 SymbolInfoDouble() возвращает 0. Тут уже MarketInfo() нет. Кто знает, как быть?
Результат:
Сервер MetaQuotes-Demo.