Разные результаты тестов в разных версиях S#
Atom Ответить
19.12.2012


Еще полгода назад начинал писать одну из версий скальпера. тестер показывал стабильную прибыль. сейчас обновился до последней версии S#, логика осталась абсолютно без изменений — тестер показывает стабильный минус.

Цены исполнения всех сделок в среднем на 10 п хуже, чем были раньше. Пробовал выставить в новой версии «UseMarketDepth = false» - выскакивает ошибка, т.к. все заявки отправляются через Security.BestAsk.Price + 500 (по рынку, используя цену лучшего бида или оффера)… старая версия не ругалась на это.

пошел дальше… убрал в коде все BestBid и BestAsk, т.е. любое обращение к стакану и заменил на Security.LastTrade.Price +- 500. и о чудо, результаты тестов стали совпадать )))

и вот тут сам по себе возник вопрос… какая разница, используя я стакан или нет, если в обоих случаях выставляется рыночная заявка? и как это может влиять на цены исполнения заявок, если, как я понимаю, цена исполнения определяется исходя из последующих сделок?



Спасибо:




3 Ответов
pyhta4og

Фотография
Дата: 19.12.2012
Ответить


рыночная заявка сводится по стакану. покупка - по биду. Если вы тестируете без стакана (useMD=false) то идет эмпирика по цене сведения равной LastTrade +- проскальзывание Slippage. По умолчанию проскальзывание ноль. Поэтому переписав свой код вы получили тоже что и раньше.

Но то что вы получили - это нереалистично потому что проскальзывание без использования стаканов вычислить невозможно. Поэтому, видимо, ваш скальпер на тестировании со стаканами показывает более реалистичный минус.
Спасибо:

profts

Фотография
Дата: 20.12.2012
Ответить


Спасибо. Вроде разобрался. Кстати, у меня наоборот - тест без стаканов и результат на реале почти совпадают.
теперь возникала другая проблема... при тестировании стало выскакивать исключение System.OutOfMemoryException... во время Indicator.Process(candle). даже 2 дня не получается протестировать. пробовал в конце дня разово делать Indicator.Container.ClearValues(); - после этого индикаторы вообще не хотят нормально считаться. значения даже близко на правду не похожи.
Автор топика
Спасибо:

profts

Фотография
Дата: 20.12.2012
Ответить


вообще конечно странно... после Indicator.Container.ClearValues(); - некоторые индикаторы продолжают считаться правильно, некоторые абсолютно нет.
стал тупо перебирать все возможные индикаторы... Highest - нормально продолжает, а Lowest - постоянно выдает 0. т.е. нет никакой закономерности...
помогитееее )))
Цитата:

if (Security.LastTrade.Time.Hour == 19 && ClearIndicator == false)
{
this.AddInfoLog("ОЧИЩАЕМ ИНДИКАТОРЫ");
ClearIndicator = true;

Highest.Container.ClearValues();
Lowest.Container.ClearValues();
}


Цитата:

Highest.Process(candle.ClosePrice);
Lowest.Process(candle.ClosePrice);

if (ClearIndicator == true)
{
this.AddInfoLog("Highest1 = {0}", Highest1.GetValue<decimal>(0).ToString());
this.AddInfoLog("Lowest1 = {0}", Lowest1.GetValue<decimal>(0).ToString());
}



Цитата:

2012.12.03 19:00:01.000| |SS_SPFB.RTS@RTS_test account|ОЧИЩАЕМ ИНДИКАТОРЫ
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Highest = 144950.00000
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Lowest = 0
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Highest = 144950.00000
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Lowest = 0
...
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Highest = 144960.00000
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Lowest = 0
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Highest = 144960.00000
2012.12.03 19:00:02.000| |SS_SPFB.RTS@RTS_test account|Lowest = 0

Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy