У вас не стоит Flash Player
Настройки
#38101 - Fri Mar 02 2012 03:07 PM Вопрос по CompressTo
livrrr Offline
newbie

Registered: Fri Feb 24 2012
Записи: 36
Здравствуйте.
Запускаю скрипт в лаборатории на 15-ти минутных свечах и имею некоторый набор сделок. После этого меняю свечи на 5-ти минутные, внутри скрипта делаю CompressTo(15) и работаю уже по новому инструменту с 15-ти минутными свечами, по тому же алгоритму, что и в первом случае. При этом набор сделок во втором случае отличается от первого случая (сделок всего 2 вместо 30), причем рассчитываемые мною сигналы совпадают, а позиции не открываются. Позицию открываю через SellIfGreater, BuyIfGreater. Смотрел в debug-е, в одном случае при выполнении SellIfGreater появляется новая позиция, а в другом - нет. В чем может быть проблема?

Наверх
#38157 - Fri Mar 02 2012 08:07 PM Re: Вопрос по CompressTo [Re: livrrr]
51ru Offline
journeyman

Registered: Mon Nov 21 2011
Записи: 88
мне тоже интересно, в чем причина такого расхождения. оно проявляется не только при сжатии, но если например прогнать скрипт на 60 сек и затем на 1 мин - к-во сделок (и рез-тат) могут сильно отличаться...

Наверх
#38159 - Fri Mar 02 2012 08:45 PM Re: Вопрос по CompressTo [Re: 51ru]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8143
попробуйте сделать декомпрессию по методу 3, потому метод по умолчанию работает быстрее на одну свечу.

Наверх
#38208 - Mon Mar 05 2012 11:18 AM Re: Вопрос по CompressTo [Re: ViL]
livrrr Offline
newbie

Registered: Fri Feb 24 2012
Записи: 36
Декомпрессия по методу 3 не помогает, да и при чем тут декомпрессия, она в моем скрипте даже не используется, по моему, я достаточно полно описал проблему, я рассчитываю сигналы по 15-ти минутным свечам и в первом и во втором случае и заявки выставляю тоже по 15-ти минутным, но в одном случае заявки проходят, а в другом - нет.
Есть ли другие варианты решения проблемы?


Отредактировано livrrr (Mon Mar 05 2012 12:52 PM)

Наверх
#38231 - Mon Mar 05 2012 04:54 PM Re: Вопрос по CompressTo [Re: livrrr]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Не очень понятно, как вы выставляете заявки, не использую декомпрессию. Заявки можно выставлять только в оригинальном таймфрейме, т.е. любые компрессированные данные необходимо к нему привести.

Наверх
#38237 - Mon Mar 05 2012 05:28 PM Re: Вопрос по CompressTo [Re: Nektodron]
livrrr Offline
newbie

Registered: Fri Feb 24 2012
Записи: 36
Я выставляю заявки через ISecurity.Positions у инструмента, полученного методом CompressTo().
1) Этого нельзя делать, нужно выставлять на исходном ISecurity, но ведь заявки выставляются и на новом?
2) Если нельзя, то где об этом можно прочитать?
3) Как мне найти соответствие между номерами свечей для исходного ISecurity и для нового ISecurity, если я должен выставлять заявки на исходном?
4) Должен ли я использовать Decompress<TK>(IList<TK> candles, DecompressMethodWithDef method) для декомпрессии свечей и что такое TK?


Отредактировано livrrr (Mon Mar 05 2012 05:29 PM)

Наверх
#38238 - Mon Mar 05 2012 06:41 PM Re: Вопрос по CompressTo [Re: livrrr]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
1. Заявки в итоге выставляются на новом, только на тех свечах, на которые вы планируете. В будущих версиях запуск такого кода удет выдавать ошибку исполнения.
2. Что именно вы хотите почитать?
3. Никакого соответсвия искать не нужно. Нужно декомпрессировать рассчитанные данные в компрессированном таймфрейме, вызовом функции Decompress
IList<double> compressedData = ...;
IList<double> decompressedData = compressedSecurity.Decompress(compressedData, DecompressMethodWithDef.Default);
4. Что такое шаблоны можно узнать на MSDN, либо в каком-либо учебнике NET.

Наверх
#38261 - Tue Mar 06 2012 11:51 AM Re: Вопрос по CompressTo [Re: Nektodron]
livrrr Offline
newbie

Registered: Fri Feb 24 2012
Записи: 36
Большое спасибо за ответы.
Поставлю вопрос несколько по другому.
Есть код:
Code:
public OptimProperty v_in = new OptimProperty(1, 1, 100, 1);
public OptimProperty ATR_Period = new OptimProperty(2, 1, 100, 1);
public void Execute(IContext ctx, ISecurity sec)
{
    ISecurity newSec = sec.CompressTo(15);
    IList<double> atr = ctx.GetData("ATR", new string[]{ATR_Period.ToString()}, 
                                    delegate {return Series.AverageTrueRange(newSec.Bars, ATR_Period);});
    IList<Bar> bars = newSec.Bars;
    for(int i = 0; i < bars.Count - 1; i++)
    {
        if(...)
        {
            if(bars[i].Close > ... && bars[i].Close > ...)
                newSec.Positions.SellIfGreater(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "sellUp" + sellNumUp);
            if(bars[i].Close < ... && bars[i].Close > ...)
                newSec.Positions.BuyIfGreater(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "buyUp" + buyNumUp);
        }
        else if(...)
        {
            if(bars[i].Close > ... && bars[i].Close < ...)
                newSec.Positions.SellIfLess(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "sellDown" + sellNumDown);
            if(bars[i].Close < ... && bars[i].Close < ...)
                newSec.Positions.BuyIfLess(i + 1, double.Parse(v_in.ToString()), bars[i].Close, "buyDown" + buyNumDown);
        }
    }
}

В котором сигналом на покупку/продажу является ATR, рассчитанный по newSec. Я имею разные результаты (количество сделок) на 5-ти и 15-ти минутных таймфреймах (на 15-ти минутных сделок больше), почему?

Наверх
#38267 - Tue Mar 06 2012 01:08 PM Re: Вопрос по CompressTo [Re: livrrr]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Еще раз объясняю, что этот код не рабочий. Он генерит мусорные сделки никак не связанные с алгоритмом. В следующих версиях это будет проверятся и код будет выдавать ошибку исполнения.

Наверх
#38268 - Tue Mar 06 2012 01:12 PM Re: Вопрос по CompressTo [Re: Nektodron]
livrrr Offline
newbie

Registered: Fri Feb 24 2012
Записи: 36
Прекрасно, как мне выставить заявки на нужных свечах?
Где написано, что код не рабочий и так писать нельзя?
Вы хотите сказать, что нужно сделать Decompress и в цикле идти по свечам от исходного ISecurity и смотреть на сигналы?


Отредактировано livrrr (Tue Mar 06 2012 01:22 PM)

Наверх
#38269 - Tue Mar 06 2012 01:15 PM Re: Вопрос по CompressTo [Re: livrrr]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
я все ответил выше, в этой теме.

Наверх
#38272 - Tue Mar 06 2012 01:32 PM Re: Вопрос по CompressTo [Re: Nektodron]
livrrr Offline
newbie

Registered: Fri Feb 24 2012
Записи: 36
Вы так и не ответили на вопрос где можно прочитать, что так делать нельзя.
Почему разные результаты для 15 минут и 900 секунд, уже без CompressTo и Decompress?

Наверх
#38274 - Tue Mar 06 2012 01:37 PM Re: Вопрос по CompressTo [Re: livrrr]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Прочитать негде, т.к. у нас не было мыслей, что ктото так будет делать.
Разные результаты вероятно из-за того, что история секундная у вас не совпадет с минутной. Количество свечей одинаковое или разное?

Наверх
#38279 - Tue Mar 06 2012 01:49 PM Re: Вопрос по CompressTo [Re: Nektodron]
livrrr Offline
newbie

Registered: Fri Feb 24 2012
Записи: 36
Нет, не одинаковая, спасибо. Дата первой 15 минутной свечи 23.01.2012, а 900 секундной 16.02.2012.

Наверх


Moderator:  ViL, sar