Расчет маржи уже открытых ордеров

 

Подскажите пожалуйста как рассчитать маржу уже открытых ордеров???

Допустим есть несколько открытых ордеров по CADJPY открытых в разное время с разными объемами. Общую маржу можно получить с помощью AccountMargin(), а как получить значение маржи  в валюте депозита приходящееся на конкретный ордер??? Валюта депозита - EUR.

 

Как там для евро не знаю, для депозита в долларах так

double ordermargin=OrderLots()*MarketInfo(Symbol(),MODE_MARGINREQUIRED);
 
evillive:

Как там для евро не знаю, для депозита в долларах так

Дело в том, что MarketInfo используется для получения текущей рыночной информации и значение MarketInfo(Symbol(),MODE_MARGINREQUIRED) в текущий момент будет отличаться от значения MarketInfo(Symbol(),MODE_MARGINREQUIRED) в момент открытия конкретного ордера. Эти значения зависят от котировок EURJPY (в вашем случае USDJPY) в разные моменты времени.
 
shkir:
Дело в том, что MarketInfo используется для получения текущей рыночной информации и значение MarketInfo(Symbol(),MODE_MARGINREQUIRED) в текущий момент будет отличаться от значения MarketInfo(Symbol(),MODE_MARGINREQUIRED) в момент открытия конкретного ордера. Эти значения зависят от котировок EURJPY (в вашем случае USDJPY) в разные моменты времени.

В одной из веток на эту тему скопировал главное, чтобы самому, если нужно рассчитывать: 

// У любого инструмента есть базис и измеритель

// базис = то чем торгуем = для cadchf это канадский доллар = то есть 

// торгуем cad измеритель = то в чем котируем базис = в данном случае франк 

// то есть изначально финансовый результат любой сделки будет во франках

// значит нужно будет франки перевести в валюту депозита (usd)

//  значит берем usdchf - это сколько франков за 1 доллар

// а нам нужно наоборот - сколько долларов за 1 франк

// то есть переворачиваем 1/х где х=usdchf

// тогда в итоге для стоимости пункта 4-знака получаем 10 / usdchf = 10.37

// это можно сделать с любым инструментом зная его валюту котирования

 
borilunad:

В одной из веток на эту тему скопировал главное, чтобы самому, если нужно рассчитывать: 

// У любого инструмента есть базис и измеритель

// базис = то чем торгуем = для cadchf это канадский доллар = то есть 

// торгуем cad измеритель = то в чем котируем базис = в данном случае франк 

// то есть изначально финансовый результат любой сделки будет во франках

// значит нужно будет франки перевести в валюту депозита (usd)

//  значит берем usdchf - это сколько франков за 1 доллар

// а нам нужно наоборот - сколько долларов за 1 франк

// то есть переворачиваем 1/х где х=usdchf

// тогда в итоге для стоимости пункта 4-знака получаем 10 / usdchf = 10.37

// это можно сделать с любым инструментом зная его валюту котирования

 

Все верно, но сделка открылась месяц назад (допустим 18.12.2014 в 23:37:03.267) и маржа на тот момент рассчитывалась исходя из котировки usdchf на тот самый момент (18.12.2014 23:37:03.267). Как теперь рассчитать маржу в валюте депозита для этой сделки, если точной котировки usdchf на 18.12.2014 23:37:03.267 мы не знаем???
 
shkir:
Все верно, но сделка открылась месяц назад (допустим 18.12.2014 в 23:37) и маржа на тот момент рассчитывалась исходя из котировки usdchf на тот самый момент (18.12.2014 в 23:37). Как теперь рассчитать маржу в валюте депозита для этой сделки, если точной котировки usdchf на 18.12.2014 в 23:37 мы не знаем???
Смотрите котировку на минутном графике, соответственно делая необходимые преобразования, и выводите в Comment()! И смотрите в режиме Визуализации!
 
borilunad:
Смотрите котировку на минутном графике, соответственно делая необходимые преобразования, и выводите в Comment()! И смотрите в режиме Визуализации!

Все это неправильно! У меня в терминале минутный график загрузился только до 31.10.2014. А если ордер открылся раньше? И вообще я с минутными графиками не работаю и соответственно они не загружаются. И что - теперь при запуске скрипта, производящего необходимые расчеты, нужно ручками загружать минутный график? Полный бред!

Разработчики терминала могли-бы ввести функцию типа OrderMargin(...) возвращающую маржу по открытой позиции, но это уже вопрос не к Вам, а к разработчикам.

 
shkir:
Дело в том, что MarketInfo используется для получения текущей рыночной информации и значение MarketInfo(Symbol(),MODE_MARGINREQUIRED) в текущий момент будет отличаться от значения MarketInfo(Symbol(),MODE_MARGINREQUIRED) в момент открытия конкретного ордера. Эти значения зависят от котировок EURJPY (в вашем случае USDJPY) в разные моменты времени.
Да, точно. Тогда  расчет маржи для кросс-курсов при базовой валюте евро:

МАРЖА = СУММА СДЕЛКИ / КРЕДИТНОЕ ПЛЕЧО / КУРС  ВАЛЮТЫ (первой в котировке) К ЕВРО

Всего лишь надо узнать цену EURCAD на момент открытия сделки по CADJPY, дальше всё просто - для 1 лота и плеча 1:500:

МАРЖА CADJPY =100000/500/1.3866 = 144.24 ЕВРО

Как-то так, но возможно это только частный случай.


Упд: если точная котировка неизвестна, а рассчитать очень надо, берите хотя бы среднюю цену Н1 бара, на тот час, когда была открыта сделка, разница небольшая.

 
shkir:

Все это неправильно! У меня в терминале минутный график загрузился только до 31.10.2014. А если ордер открылся раньше? И вообще я с минутными графиками не работаю и соответственно они не загружаются. И что - теперь при запуске скрипта, производящего необходимые расчеты, нужно ручками загружать минутный график? Полный бред!

Разработчики терминала могли-бы ввести функцию типа OrderMargin(...) возвращающую маржу по открытой позиции, но это уже вопрос не к Вам, а к разработчикам.

А как же без минутного тестировать?! Значит и на всех тиках невозможно тестировать на старших ТФ! Когда мне надо, именно М1 загружаю на необходимый период времени и потом на том же М1 подгружаются остальные! Без минуток тестировать потом уже на Демо будут неприятные сюрпризы! 
 
borilunad:
А как же без минутного тестировать?! Значит и на всех тиках невозможно тестировать на старших ТФ! Когда мне надо, именно М1 загружаю на необходимый период времени и потом на том же М1 подгружаются остальные! Без минуток тестировать потом уже на Демо будут неприятные сюрпризы! 
Если стратегия заточена под цены открытия, например Н1 и советник работает с контролем появления нового бара, то минутки не нужны, проверено. Результаты тестирования на Н1 по всем тикам и по ценам открытия одинаковые.
 
evillive:
Если стратегия заточена под цены открытия, например Н1 и советник работает с контролем появления нового бара, то минутки не нужны, проверено. Результаты тестирования на Н1 по всем тикам и по ценам открытия одинаковые.
А я проверил, что тестирование на Н1 по ценам открытия показывает грааль, а по всем тикам сливает! Так как не моделируются минутки!
Причина обращения: