Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А хеджированую маржу можно как-то посчитать?
Спасибо за наводку! В дебрях это - SymbolInfoMarginRate. Поэтому теперь так
double GetMarginRequired( const string Symb )
{
}
Надо четко понимать, что в MT5 в разные стороны могут быть совсем другие маржинальные требования. Т.е. единый MT4-вариант может не прокатывать. На Forex, конечно, такого не будет. Но помнить нужно. Поэтому в общем случае нужно писать так
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
}
Спасибо большое! Сейчас работает везде без проблем.
Интересно, функция "MyOrderCalcMargin" осталась до сих пор торговая, и если да, то как ней торговать хотя-бы в тестере)
Думаю, можно все посчитать через Symbol-функции.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2017.02.28 10:48
Metaquotes-Demo, USD-счет, RTS-3.17.
TickValue выдает неверное значение - в рублях, а не в валюте счета (USD).
FxPro-ECN. Символы GOLD и GOLDEURO имеют один и тот же TickValue. Хотя, очевидно, что они должны отличаться в EURUSD-раз.
Прикол MT5 на FIBOGroup-MT5 Server SGDJPY
В этой ситуации MyOrderCalcMargin считает правильно, а штатная OrderCalcMargin - нет!
Штатная функция считает в соответствии со спецификацией контракта указанной в настройках инструмента - с валютой маржи NOK, соответственно за один лот берётся 1000 NOK.
У вас видимо считается расщеплением наименования валютной пары SGDJPY - за один лот берётся 1000 SGD.
Соответственно проблема в неверной спефикации контракта на стороне брокера. Обратитесь к брокеру соответствующего сервера.
Т.е. для придания всем OrderSend синхронизированности с торговым окружением и обхода подводных камней достаточно приведенный исходник оформить в виде mqh-файла и в своих программах делать соответствующий #include.
Можете закончить танцы с бубном.
В СД ответили, что со следующего билда OrderSend() будет работать как надо :)
Штатная функция считает в соответствии со спецификацией контракта указанной в настройках инструмента - с валютой маржи NOK, соответственно за один лот берётся 1000 NOK.
У вас видимо считается расщеплением наименования валютной пары SGDJPY - за один лот берётся 1000 SGD.
Соответственно проблема в неверной спефикации контракта на стороне брокера. Обратитесь к брокеру соответствующего сервера.
В MT5 есть внутренний скрытый механизм, который умеет любую валюту конвертировать в валюту счета. В данном случае OrderCalcMargin 1000 NOK переводит в соответствующее число USD и выдает его.
Прошу сделать этот механизм открытым. Например,
Эти курсы валют имеются в терминале 100%, раз OrderCalcMargin их вычисляет. Их работа особенно заметна на MetaQuotes-Demo USD-счетах, когда берешь ФОРТС-символы - у них валюта маржи в RUR.
Это особенно актуально из-за TickValue-фишки/бага
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2017.02.28 10:48
Metaquotes-Demo, USD-счет, RTS-3.17.
TickValue выдает неверное значение - в рублях, а не в валюте счета (USD).
FxPro-ECN. Символы GOLD и GOLDEURO имеют один и тот же TickValue. Хотя, очевидно, что они должны отличаться в EURUSD-раз.
Возвращает количество действующих ордеров.
int OrdersTotal();
Возвращаемое значение
Значение типа int.
Примечание
Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".
При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.
Смотри также
OrderSelect(), OrderGetTicket(), Свойства ордеров
"действующие отложенные ордера", а НЕ действующие отложенные ордера, это какие?
Здравствуйте! Читаю документацию:
Возвращает количество действующих ордеров.
int OrdersTotal();
Возвращаемое значение
Значение типа int.
Примечание
Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".
При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.
Смотри также
OrderSelect(), OrderGetTicket(), Свойства ордеров
"действующие отложенные ордера", а НЕ действующие отложенные ордера, это какие?
Отложенные ордера - байстоп, селлстоп, байлимит и байстоп.
Позиции - бай и селл.
Не действующие - удалённые ордера и закрытые позиции.
Отложенные ордера - байстоп, селлстоп, байлимит и байстоп.
Позиции - бай и селл.
Не действующие - удалённые ордера и закрытые позиции.
Так как "Ордер – это распоряжение на проведение торговой операции", то к категории "действующие ордера" можно отнести только отложенные ордера, а "Позиции - бай и селл" - это не распоряжение на проведение торговой операции. Или я что-то "не догоняю"?