Вы ведь _в_разное_время_ замеряли MarketInfo(Symbol(), MODE_TICKVALUE) и расчитывали стоимость пипса по сделке?
Так как это сложный кросскурс, то в нем используются дополнительный курс пересчета в доллары. То есть, стоимость пипса в долларах у NZDJPY постоянно плавает. И если Вы будете замерять стоимость пипса NZDJPY в одно время, а рассчитывать стоимость того же пипса в другое время, то получите разницу.
Для проверки используйте вот этот скрипт, который нужно набросить на график с одной открытой позицией по NZDJPY:
Для общей информации - при расчетах через кросс-курсы есть правило, используемое в банках:
Так как это сложный кросскурс, то в нем используются дополнительный курс пересчета в доллары. То есть, стоимость пипса в долларах у NZDJPY постоянно плавает. И если Вы будете замерять стоимость пипса NZDJPY в одно время, а рассчитывать стоимость того же пипса в другое время, то получите разницу.
Для проверки используйте вот этот скрипт, который нужно набросить на график с одной открытой позицией по NZDJPY:
int start() { //---- Print(Symbol()," tickvalue: ",DoubleToStr(MarketInfo(Symbol(), MODE_TICKVALUE),8)); if(OrderSelect(0,SELECT_BY_POS)) OrderPrint(); //---- return(0); }Вот результаты запуска с промежутков в несколько минут:
12:56:08 NZDJPY,M1: #4911829 2007.10.15 10:36 buy 1.00 NZDJPY 90.78 0.00 0.00 90.71 0.00 0.00 -119.02 0 12:56:08 NZDJPY,M1: NZDJPY tickvalue: 17.00000000 12:36:57 NZDJPY,M1: #4911829 2007.10.15 10:36 buy 1.00 NZDJPY 90.78 0.00 0.00 90.72 0.00 0.00 -101.96 0 12:36:57 NZDJPY,M1: NZDJPY tickvalue: 16.99000000Как видите - стоимость пункта постоянно плавает.
Для общей информации - при расчетах через кросс-курсы есть правило, используемое в банках:
при конверсионных операциях для правильного отображения сделок
в мультивалютных счетах необходимо округлять (промежуточные)
результаты до принятой точности (до центов, копеек и тд).
Ошибок в расчетах профитов и курсов в МетаТрейдере нет. Все торговые
операции были скрупулезно проверены и согласованы с брокерами
и банковской бухгалтерией (в свое время банкиры как раз нашли
расхождение в доли цента на конверсиях кросс-курсов) много лет
назад.
Но по сути, MarketInfo не должна бы урезать стоимость пункта до двух знаков. Сегодня
будем разбираться с этим вопросом.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это приводит к неслабой погрешности.
Вот, пример с демо счета (валюта депозита = USD):
Из примера можно получить стоимость 1 пункта: (199.19 - 13.85) USD / 109 пунктов = 1.7003669724770642201834862385321 USD / пункт.
Одновременно со скриншотом было завиксированно значение функции MarketInfo(Symbol(), MODE_TICKVALUE) = 17.01
17.01 - это для лота размером 1.00, у нас лот 0.10, т.е. для нашего случая (17. 01 * 0.10 = 1.701) USD / пункт
Сразу бросается в глаза ошибка округления!!! Значит, кто то неправильное значение показывает, наверно, кто-то запаздывает?
Теперь, зная MarketInfo(Symbol(), MODE_TICKVALUE) и прибыль в пунктах найдем сколько это будет в валюте депозита и сравним с тем, что показывает терминал!
(199.19 - 13.85 = 185.34) USD - эту прибыль показывает терминал без свопа, коммисии, налогов!
1,701*109 = 185.409 ~ 185.41 USD - эту прибыль мы бы получили в советнике или скрипте или индикаторе
Конечно, разница не велика, всего 0.07 USD, но это только на одной паре, а на других или в другое время?
Поэтому хотелось бы знать почему так происходит и зачем округлять MarketInfo(Symbol(), MODE_TICKVALUE) до 2 знака? Ведь, округлить никогда не поздно?