Некорректный расчет прибыли на биржевых инструментах в тестере - страница 5

 
ivanivan_11:

На данный момент от СД получен такой ответ

Вообще то на бирже, при учёте открытых позиций, их плавающая прибыль\убыток рассчитывается по цене последней сделки, а не по цене bid\ask.
Собственно тестер так и считает для соответствующих торговых инструментов (также как и терминал).


Просьба прокомментировать знающим людям.

На случай, если стакан полностью высох, возможности рассчитать Profit не будет. Но это форс-мажор, решение которого не должно было затрагивать логику.

Считать по ласту - нелогичное решение. 

 
fxsaber:

На случай, если стакан полностью высох, возможности рассчитать Profit не будет. Но это форс-мажор, решение которого не должно было затрагивать логику.

Считать по ласту - нелогичное решение. 

Да,я указывал уже выше,к чему подобное решение приводит,когда считает ASK-LAST,если LAST>ASK,мы получаем отрицательный спред,т.е. позиция сразу после открытия у нас плюсовая выходит.

Дальше,мы получаем "несуществующий" убыток,которого не было (см. пример,когда профит=-640$). Поскольку в ответе СД так же был упомянут терминал,помимо тестера, то есть соответствующая тема и заявка в СД,когда открытие и закрытие по ценам LAST приводит к тому,что итоговый профит равен 0,т.е. спред не был учтен вообще никак.

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

 

Пришлось проверить, скрины из терминала TWS

Средняя цена открытия 11593.6

P&L = -64

11593.6 - 11591 = 2.5 или 5 тиков, 5*12.5~64$

Средняя цена открытия 11593.6

P&L = 86

11593.6 - 11597 = 3.5 или 7 тиков, 7*12.5~86$

Последняя цена (LAST=11610 на первом скрине и 11596 на втором) никак не участвует в расчете профита.

Замечания принимаются!

 
Согласен, что считать по LAST неправильно.
 

Некорректно считает AccountInfoDouble(ACCOUNT_PROFIT) ?

При расчете прибыли  AccountInfoDouble(ACCOUNT_PROFIT) выводит значение как (в примере ниже)‌ ASK_OPEN - LAST_CLOSE.

При закрытии позиции же итоговая прибыль считает корректно,как ‌ASK_OPEN - BID_CLOSE.

Соответственно если ведется суммарный учет профита по нескольким инструментам и закрытие по ним производится по целевому значению профита, то это ломает всю логику.

Приведу пример,чтобы было понятно.

Условие для закрытия является достижение профита в 100, т.к. при этом мы ориентируемся на значение  AccountInfoDouble(ACCOUNT_PROFIT), то как только он нам выдаст заданное значение ,мы закроем позу. Однако на самом деле расчет будет вестись не по LAST цене, и в итоге в прибыль пойдет другое значение. Особенно ярко это будет видно на малоликвидных иснтрументах, когда сделки происходят редко , и значит цена LAST долгое время стоит на месте, а цены ASK/BID давно уже сместились на другие уровни.

2017.03.04 13:06:16.706 Core 1  2017.03.02 20:19:03   BID открытия= 12083.5
2017.03.04 13:06:16.706 Core 1  2017.03.02 20:19:03   ASK открытия  = 12085.0
2017.03.04 13:06:16.706 Core 1  2017.03.02 20:19:03   LAST открытия = 0.0
2017.03.04 13:06:16.710 Core 1  2017.03.02 20:59:47   BID закрытия= 12077.5
2017.03.04 13:06:16.710 Core 1  2017.03.02 20:59:47   ASK закрытия  = 12079.0
2017.03.04 13:06:16.710 Core 1  2017.03.02 20:59:47   LAST закрытия = 12070.0
2017.03.04 13:06:16.711 Core 1  2017.03.02 20:59:47   Стоимость тика = 12.5

2017.03.04 13:06:16.711 Core 1  2017.03.02 20:59:47   Профит = -394.03 - то,что показывает AccountInfoDouble(ACCOUNT_PROFIT)
2017.03.04 13:06:16.711 Core 1  2017.03.02 20:59:47   Профит должен быть = 197.008125 - КОРРЕКТНЫЙ расчет профита ,как ASK_OPEN - BID_CLOSE
2017.03.04 13:06:16.711 Core 1  2017.03.02 20:59:47   Профит фактический = 394.01625 - расчет профита, как ASK_OPEN - LAST_CLOSE

 

и ниже результаты тестирования со штатной функцией AccountInfoDouble(ACCOUNT_PROFIT)

и самописной функцией подсчета профита так,как он и должен считаться.

очевидно,что вся граальность пропадает. как можно говорить о точности тестера и о том,что МТ5 супер-пупер современная платформа,если тут такая примитивная ошибка.

интересно, сколько человек и депозитов погибло по вине разрабов. вот так натестируешь себе грааль,а потом мозг сломаешь -почему на реале все иначе.‌

Причина обращения: