Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо, посмотрю... но пока мне кажется там речь не совсем о том, что меня интересует.
Вот здесь уже ближе к теме, приведу конкретный пример на основе выдержки из вашего файла (что-то не могу найти здесь тега цитирования):
Например, форекс залог по EUR/GBP рассчитывается с учетом стоимости евро по отношению к доллару, и если котировка составляет 1,3545 долларов за один евро, то для открытия сделки в один лот при кредитном плече 1:100 нам понадобится 1355,5 долларов
Так вот, все окей, если я рассчитываю маржу для ордера, который только собираюсь выставить в данном случае. Но если ордер выставлен месяц назад, а курс EURUSD уже давно не тот, что был на момент выставления ордера, как рассчитывать тогда? Я вот про этот момент, отсюда и дальнейшие сложности. Но даже если взять только этот момент, я ведь правильно понимаю, что точно определить маржу для такого ордера в USD, и так чтобы расчет совпадал с уже зафиксированным ранее расчетом терминала, невозможно?
И допустим у меня валюта депозита даже не доллар а вообще рубли, соответственно и расчет залога мне тоже нужен именно в рублях, и видимо тоже по курсам EURRUB месячной давности.
цена открытия ордера известна
вот и вернетесь в то время
А если валюта депозита не доллар, то переводите по курсу обмена в баксы и наоборотСпасибо!
А вот это о том? Пересчитай калькулятором.
Если судить по твоему скрину, то там валюта депозита везде совпадает с валютой котировки инструмента ордера - соответственно можно пользоваться ценой открытия ордера. Если бы валюта депозита отличалась и ордер был бы не только что выставленным, твой расчет вряд ли совпал бы с расчетом терминала.
цена открытия ордера известна
вот и вернетесь в то время
А если валюта депозита не доллар, то переводите по курсу обмена в баксы и наоборотИзвестна цена открытия ордера в валюте котировки его инструмента, а терминал показывает залог по ордеру в валюте депозита, если валюта депозита отличается от валюты котировки инструмента ордера, должен учитываться курс совсем другого инструмента (и курс этот может оказаться совсем не связанным с инструментом ордера)
Попробую привести еще более конкретный пример:
Инструмент EURUSD, Валюта депозита RUB = 1000 рублей, Плечо 1 к 1
Покупаем 1 евро за 1.2 доллара (соответственно курс продажи EURUSD на этот момент 1.2)
Залог будет равен 1.2 в долларах
Но! Терминал ведь рассчитывает залог в валюте депозита, и в нашем случае - это рубли.
То есть мы обязаны перевести в рубли, либо 1 евро, либо 1.2 доллара
По какому курсу? Либо по курсу EURRUB если по правильному, либо по курсу USDRUB, если делаем расчет через доллар. Так же?
А как у нас EURRUB или USDRUB связаны с текущим графиком (EURUSD) - да вообще никак - они живут своей жизнью.
И курсы конвертации из доллара или евро в рубли на текущий момент и спустя месяц для точно того же ордера будут совершенно различными.
Соответственно и число залога в рублях для него будет совершенно другим и получить его с точностью терминала мы видимо уже никак не сможем.
p/s Расписал уже подробно как мог, если я ошибся в каких-то выводах, прошу конкретно указать в каком месте.
Известна цена открытия ордера в валюте котировки его инструмента, а терминал показывает залог по ордеру в валюте депозита, если валюта депозита отличается от валюты котировки инструмента ордера, должен учитываться курс совсем другого инструмента (и курс этот может оказаться совсем не связанным с инструментом ордера)
Попробую привести еще более конкретный пример:
Инструмент EURUSD, Валюта депозита RUB = 1000 рублей, Плечо 1 к 1
Покупаем 1 евро за 1.2 доллара (соответственно курс продажи EURUSD на этот момент 1.2)
Залог будет равен 1.2 в долларах
Но! Терминал ведь рассчитывает залог в валюте депозита, и в нашем случае - это рубли.
То есть мы обязаны перевести в рубли, либо 1 евро, либо 1.2 доллара
По какому курсу? Либо по курсу EURRUB если по правильному, либо по курсу USDRUB, если делаем расчет через доллар. Так же?
А как у нас EURRUB или USDRUB связаны с текущим графиком (EURUSD) - да вообще никак - они живут своей жизнью.
И курсы конвертации из доллара или евро в рубли на текущий момент и спустя месяц для точно того же ордера будут совершенно различными.
Соответственно и число залога в рублях для него будет совершенно другим и получить его с точностью терминала мы видимо уже никак не сможем.
p/s Расписал уже подробно как мог, если я ошибся в каких-то выводах, прошу конкретно указать в каком месте.
Подробно, не спорю ;)
Но и я запутался в Ваших рассуждениях
Связать валютные пары можно через время открытия ордера
Если Вы приводите расчет залога к доллару, а депозит в рублях, то по любому Вам нужен котир USDRUB с учетом времени открытия ордера
Не так уж и сложно, просто повозюкаться чуток
Запишите у парочки ордеров сумму залога в комментарий и произведите расчет через пару дней
Все получится
Спасибо!
Если судить по твоему скрину, то там валюта депозита везде совпадает с валютой котировки инструмента ордера - соответственно можно пользоваться ценой открытия ордера. Если бы валюта депозита отличалась и ордер был бы не только что выставленным, твой расчет вряд ли совпал бы с расчетом терминала.
Я не зря сказал, изучи тему и не говорил что там есть готовое решение. На прощанье два замечания.
1.
MODE_MARGINREQUIRED
32
Размер свободных средств, необходимых для открытия 1 лота на покупку
Возвращает в валюте депозита.
2.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как получить программно "Процент маржи"
Alexey Viktorov, 2017.06.03 10:46
Сравни 2 снимка, в первом сообщении и на пятой странице в моём сообщении. И там и там спецификация золота, но в первом валюта маржи USD, а во втором XAU. Отсюда, в первом случае ничего можно не делать, а во втором, получив маржу в валюте депозита её надо перевести в валюту маржи, умножив на котировку и это ставить в формулу по которой вычисляем процент маржи. Иначе будет неверный результат. Соответственно в формулу надо ещё доставать
SYMBOL_CURRENCY_MARGIN
Валюта в которой вычисляется залоговые средства
string
Расчет стоимости минимального лота в тыс. USD для пар из восьми валют "USD EUR GBP JPY AUD CHF CAD NZD "
Зная плечо, несложно посчитать маржу
Подробно, не спорю ;)
Но и я запутался в Ваших рассуждениях
Связать валютные пары можно через время открытия ордера
Если Вы приводите расчет залога к доллару, а депозит в рублях, то по любому Вам нужен котир USDRUB с учетом времени открытия ордера
Не так уж и сложно, просто повозюкаться чуток
Запишите у парочки ордеров сумму залога в комментарий и произведите расчет через пару дней
Все получится
Ну уже какое то решение - связь между парами через комменты ордеров. Правда для этого необходимо изначально контролировать все выставленные ордера, но по крайней мере мы теперь хоть мыслить начали в одинаковом направлении.
Я не зря сказал, изучи тему и не говорил что там есть готовое решение. На прощанье два замечания.
1.
MODE_MARGINREQUIRED
32
Размер свободных средств, необходимых для открытия 1 лота на покупку
Возвращает в валюте депозита.
2.
MODE_MARGINREQUIRED здесь вообще причем? Это расчет исключительно для текущего момента. Да, пользуясь им можно рассчитать процент маржи, но это уже детали, которые к обсуждаемой проблеме не имеют практически никакого отношения. Пусть уже этот процент маржи будет 100 процентов всегда и везде и закроем эту тему - не в нем суть совершенно. Неважно также кросс курс это или прямая или обратная котировка. Не особо важно даже какая там валюта маржи, если только она одновременно не является и валютой депозита или она не совпадает с базовой валютой инструмента ордера, а валюта его котировки с валютой депозита, как в твоих примерах.
Суть обсуждаемого только в том по какому такому курсу переводить результат из валюты маржи в валюту депозита, если валюта депозита (внимание!) отличается и от валюты маржи, и от базовой валюты инструмента ордера и от валюты котировки инструмента ордера. Выше приводил уже конкретный пример - проще объяснить я уже не в состоянии - там просто все на пальцах уже. Хочешь прощаться, могу пожелать только успехов, пока.
Расчет стоимости минимального лота в тыс. USD для пар из восьми валют "USD EUR GBP JPY AUD CHF CAD NZD "
Зная плечо, несложно посчитать маржу
Ну вот наконец вижу в коде использование метода, который был предложен еще на первой странице данной темы - можно попробовать узнать искомые цены через iBarShift
Но и здесь насколько я понимаю точность будет хромать ровно настолько какой период сможем использовать. Вряд ли хотя бы минутки мы сможем получить для полугодовалого ордера. Этот метод я и собирался сам использовать, но решил поинтересоваться некоторыми дополнительными сложнстями, до которых мы еще даже не дошли, потому что все еще зачем-то обсуждаем процент маржи, да и вообще само право на существование проблемы точного расчета маржи для старых ордеров, когда (уф снова повторяюсь) валюта депозита не совпадает ни с базовой валютой, ни с валютой котировки инструмента ордера, ни с его валютой маржи.
Спасибо за код, потестирую на досуге насколько точно справляется со своей задачей LastKnownPrice
Спасибо за код, потестирую на досуге насколько точно справляется со своей задачей LastKnownPrice
Несколько минут, пока не подгрузятся котировки, значения могут быть неверными. В последствие, если штатно закрывать терминал, котировки сохраняются и значения сразу верные.
У меня такой проблемы нет совсем. На минутках стоит мультивалютный индикатор расчета индексов валют, он-то и подгружает котировки по всем валютным парам.
Могу предложить свой приблизительный способ.
Обозначим нашу пару XXXYYY. 0 это прошлый момент открытия ордера, 1 это настоящий момент. Quote это ask или bid для buy и sell.
quote0 XXXUSD == quote1 XXXUSD * sqrt( quote0 XXXYYY / quote1 XXXYYY ), где quote0 XXXYYY это цена открытия ордера, quote1 - текущие курсы.
USD взят как самая ходовая валюта. Не возбраняется любая другая валюта по вкусу.
Аналогично можно предсказывать будущее для отложенных ордеров.