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

Разные результаты тестов в разных версиях S#
Atom
12/19/2012
profts


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

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

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

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




Thanks:


pyhta4og

Avatar
Date: 12/19/2012
Reply


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

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

Thanks:

profts

Avatar
Date: 12/20/2012
Reply


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

Thanks:

profts

Avatar
Date: 12/20/2012
Reply


вообще конечно странно... после Indicator.Container.ClearValues(); - некоторые индикаторы продолжают считаться правильно, некоторые абсолютно нет.
стал тупо перебирать все возможные индикаторы... Highest - нормально продолжает, а Lowest - постоянно выдает 0. т.е. нет никакой закономерности... помогитееее ))) [quote] if (Security.LastTrade.Time.Hour == 19 && ClearIndicator == false) { this.AddInfoLog("ОЧИЩАЕМ ИНДИКАТОРЫ"); ClearIndicator = true;

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

[/quote] [quote] 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());
        }

[/quote]

[quote] 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

[/quote]

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy