Еще полгода назад начинал писать одну из версий скальпера. тестер показывал стабильную прибыль. сейчас обновился до последней версии S#, логика осталась абсолютно без изменений — тестер показывает стабильный минус.
Цены исполнения всех сделок в среднем на 10 п хуже, чем были раньше. Пробовал выставить в новой версии «UseMarketDepth = false» - выскакивает ошибка, т.к. все заявки отправляются через Security.BestAsk.Price + 500 (по рынку, используя цену лучшего бида или оффера)… старая версия не ругалась на это.
пошел дальше… убрал в коде все BestBid и BestAsk, т.е. любое обращение к стакану и заменил на Security.LastTrade.Price +- 500. и о чудо, результаты тестов стали совпадать )))
и вот тут сам по себе возник вопрос… какая разница, используя я стакан или нет, если в обоих случаях выставляется рыночная заявка? и как это может влиять на цены исполнения заявок, если, как я понимаю, цена исполнения определяется исходя из последующих сделок?
Kommentare (3)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
рыночная заявка сводится по стакану. покупка - по биду. Если вы тестируете без стакана (useMD=false) то идет эмпирика по цене сведения равной LastTrade +- проскальзывание Slippage. По умолчанию проскальзывание ноль. Поэтому переписав свой код вы получили тоже что и раньше.
Но то что вы получили - это нереалистично потому что проскальзывание без использования стаканов вычислить невозможно. Поэтому, видимо, ваш скальпер на тестировании со стаканами показывает более реалистичный минус.
Спасибо. Вроде разобрался. Кстати, у меня наоборот - тест без стаканов и результат на реале почти совпадают. теперь возникала другая проблема... при тестировании стало выскакивать исключение System.OutOfMemoryException... во время Indicator.Process(candle). даже 2 дня не получается протестировать. пробовал в конце дня разово делать Indicator.Container.ClearValues(); - после этого индикаторы вообще не хотят нормально считаться. значения даже близко на правду не похожи.
вообще конечно странно... после Indicator.Container.ClearValues(); - некоторые индикаторы продолжают считаться правильно, некоторые абсолютно нет.
стал тупо перебирать все возможные индикаторы... Highest - нормально продолжает, а Lowest - постоянно выдает 0. т.е. нет никакой закономерности... помогитееее )))