Эту информация должна быть получена специальным запросом SymbolInfoMarginRate
SymbolInfoDouble возвращает нули
Эту информация должна быть получена специальным запросом SymbolInfoMarginRate
SymbolInfoDouble возвращает нули
И тогда выходит, что и справку по SymbolInfoDouble тоже нужно править?
Изначально запрос SymbolInfoDouble() для получения маржи был достаточно простой, и этого хватало. Но по мере добавления новых рынков/инструментов возникла необходимость добавить отдельную специализированную функцию SymbolInfoMarginRate. В справку для SYMBOL_MARGIN_INITIAL и SYMBOL_MARGIN_MAINTENANCE добавим ссылку на SymbolInfoMarginRate
Спасибо, проверю. Если это так, торговый класс CSymbolInfo будет подправлен? И тогда выходит, что и справку по SymbolInfoDouble тоже нужно править?
Нужно смотреть код и понимать как править. Функция не может расширить сознание и понять, какой тип маржи у неё спрашивают
Нужно смотреть код и понимать как править. Функция не может расширить сознание и понять, какой тип маржи у неё спрашивают
Согласен насчёт расширения сознания :).
CSymbolInfo методы
Получает коэффициент взимания маржи по Limit ордерам | |
---|---|
Получает коэффициент взимания маржи по Stop ордерам | |
Получает коэффициент взимания маржи по Stop Limit ордерам |
нужно заменить на MarginBuyLimit, MarginSellLimit, MarginBuyStop, MarginSellStop, MarginBuyStopLimit и MarginSellStopLimit - а они уже в свою очередь вместо SymbolInfoDouble будут обращаться к SymbolInfoMarginRate с соответствующим типом ордера.
А
Получает коэффициент взимания маржи по длинным позициям | |
Получает коэффициент взимания маржи по коротким позициям |
оставить, но также переписать на SymbolInfoMarginRate.
подскажите пожалуйста как записать SymbolInfoMarginRate чтоб получить margin rate по символу? это ведь bool, а нужно получить double. я не пойму как ей воспользоваться, чтоб получить именно margin rat, а не false/true
Я не программист, но методом "тыка" все получилось. Сделал так:
double marginInit, marginMain; double marginRate=SymbolInfoMarginRate(symbol,ORDER_TYPE_BUY,marginInit,marginMain);
я просто "допонял", что переменные коэфициентов выводятся после этой функции :)
- www.mql5.com
подскажите пожалуйста как записать SymbolInfoMarginRate чтоб получить margin rate по символу? это ведь bool, а нужно получить double. я не пойму как ей воспользоваться, чтоб получить именно margin rat, а не false/true
Справку плохо смотрели. 3й и 4й параметры возвращают значения.
Справку плохо смотрели. 3й и 4й параметры возвращают значения.
подскажите пожалуйста как записать SymbolInfoMarginRate чтоб получить margin rate по символу? это ведь bool, а нужно получить double. я не пойму как ей воспользоваться, чтоб получить именно margin rat, а не false/true
Я не программист, но методом "тыка" все получилось. Сделал так:
double marginInit, marginMain; double marginRate=SymbolInfoMarginRate(symbol,ORDER_TYPE_BUY,marginInit,marginMain);
я просто "допонял", что переменные коэфициентов выводятся после этой функции :)
Неправильно Вы написали свой код. Нельзя результат bool присваивать переменной типа double.
Смотрим справку SymbolInfoMarginRate -
bool SymbolInfoMarginRate( string name, // символ ENUM_ORDER_TYPE order_type, // тип ордера double& initial_margin_rate, // коэффициент взимания начальной маржи double& maintenance_margin_rate // коэффициент взимания поддерживающей маржи );
Возвращаемое значение
Возвращает true в случае удачного выполнения запроса свойств, иначе false.
Следовательно Ваш код должен быть таким:
double marginInit, marginMain; if(!SymbolInfoMarginRate(symbol,ORDER_TYPE_BUY,marginInit,marginMain)) { //ERROR }
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Спецификация символа и доступ к свойствам символа через MQL5 дают разные результаты: точнее через спецификацию символа маржа видна, а через MQL5 - возвращает ноль.
Код советника (уже поставил на каждом тике обновлять данные по символу - Refresh) - всё равно возвращаются нули