EmulationTrader - не проходит по всем сделкам
Atom Ответить
25.08.2012


Здравствуйте.

Продолжаю мучать EmulationTrader на исторических данных. Заметил, что приходят не все тиковые сделки, а только та, которая была последней в данную секунду. То есть. Вот тиковые данные с Финама. В программу приходят только те сделки, которые отмечены жирным. Все остальные сделки уходят в космос.

RIU2,0,20120823,100004,144570.00000,89
RIU2,0,20120823,100004,144570.00000,2
RIU2,0,20120823,100004,144570.00000,40
RIU2,0,20120823,100005,144575.00000,2
RIU2,0,20120823,100005,144575.00000,2
RIU2,0,20120823,100005,144580.00000,5
RIU2,0,20120823,100005,144580.00000,5
RIU2,0,20120823,100005,144585.00000,5
RIU2,0,20120823,100005,144590.00000,1
RIU2,0,20120823,100005,144590.00000,1
RIU2,0,20120823,100005,144590.00000,1
RIU2,0,20120823,100005,144590.00000,11
RIU2,0,20120823,100005,144595.00000,2
RIU2,0,20120823,100005,144600.00000,1
RIU2,0,20120823,100005,144600.00000,1
RIU2,0,20120823,100005,144600.00000,1
RIU2,0,20120823,100005,144600.00000,2
RIU2,0,20120823,100005,144600.00000,5
RIU2,0,20120823,100005,144605.00000,5
RIU2,0,20120823,100005,144605.00000,5
RIU2,0,20120823,100005,144610.00000,5
RIU2,0,20120823,100005,144620.00000,5
RIU2,0,20120823,100005,144625.00000,1
RIU2,0,20120823,100005,144625.00000,2
RIU2,0,20120823,100005,144630.00000,1
RIU2,0,20120823,100005,144630.00000,5
RIU2,0,20120823,100005,144635.00000,5
RIU2,0,20120823,100005,144640.00000,8
RIU2,0,20120823,100005,144645.00000,2
RIU2,0,20120823,100005,144650.00000,39
RIU2,0,20120823,100005,144595.00000,7
RIU2,0,20120823,100005,144595.00000,2
RIU2,0,20120823,100005,144595.00000,1
RIU2,0,20120823,100005,144595.00000,1
RIU2,0,20120823,100005,144595.00000,4
RIU2,0,20120823,100005,144570.00000,19
RIU2,0,20120823,100005,144570.00000,1
RIU2,0,20120823,100005,144570.00000,1
RIU2,0,20120823,100005,144570.00000,5
RIU2,0,20120823,100005,144650.00000,1
RIU2,0,20120823,100005,144570.00000,20
RIU2,0,20120823,100005,144650.00000,6
RIU2,0,20120823,100005,144650.00000,1
RIU2,0,20120823,100005,144570.00000,1
RIU2,0,20120823,100005,144570.00000,10
RIU2,0,20120823,100005,144650.00000,3
RIU2,0,20120823,100005,144650.00000,5
RIU2,0,20120823,100005,144650.00000,5
RIU2,0,20120823,100005,144660.00000,8
RIU2,0,20120823,100005,144570.00000,1
RIU2,0,20120823,100005,144660.00000,1
RIU2,0,20120823,100005,144570.00000,1
RIU2,0,20120823,100005,144570.00000,2
RIU2,0,20120823,100005,144660.00000,6
RIU2,0,20120823,100005,144665.00000,1
RIU2,0,20120823,100005,144665.00000,5
RIU2,0,20120823,100005,144670.00000,3
RIU2,0,20120823,100005,144670.00000,2
RIU2,0,20120823,100005,144675.00000,1
RIU2,0,20120823,100005,144675.00000,4
RIU2,0,20120823,100005,144675.00000,2
RIU2,0,20120823,100005,144675.00000,2
RIU2,0,20120823,100005,144675.00000,2
RIU2,0,20120823,100005,144675.00000,1
RIU2,0,20120823,100005,144675.00000,1
RIU2,0,20120823,100005,144675.00000,1
RIU2,0,20120823,100005,144675.00000,1
RIU2,0,20120823,100005,144675.00000,1
RIU2,0,20120823,100005,144600.00000,4
RIU2,0,20120823,100006,144600.00000,2
RIU2,0,20120823,100006,144600.00000,4
RIU2,0,20120823,100006,144675.00000,3
RIU2,0,20120823,100006,144570.00000,1
RIU2,0,20120823,100006,144675.00000,2
RIU2,0,20120823,100006,144675.00000,1
RIU2,0,20120823,100006,144675.00000,1
RIU2,0,20120823,100006,144675.00000,2
RIU2,0,20120823,100006,144680.00000,4
RIU2,0,20120823,100006,144680.00000,1
RIU2,0,20120823,100006,144680.00000,2
RIU2,0,20120823,100006,144570.00000,1
RIU2,0,20120823,100006,144680.00000,1
RIU2,0,20120823,100006,144680.00000,5
RIU2,0,20120823,100006,144685.00000,2
RIU2,0,20120823,100006,144685.00000,3
RIU2,0,20120823,100006,144690.00000,2
RIU2,0,20120823,100006,144690.00000,3
RIU2,0,20120823,100006,144690.00000,3
RIU2,0,20120823,100006,144570.00000,9
RIU2,0,20120823,100006,144690.00000,2
RIU2,0,20120823,100006,144690.00000,16
RIU2,0,20120823,100006,144690.00000,15
RIU2,0,20120823,100006,144690.00000,2
RIU2,0,20120823,100006,144690.00000,2
RIU2,0,20120823,100006,144690.00000,4
RIU2,0,20120823,100006,144690.00000,1
RIU2,0,20120823,100006,144695.00000,1
RIU2,0,20120823,100006,144695.00000,5
RIU2,0,20120823,100006,144680.00000,1
RIU2,0,20120823,100006,144660.00000,1
RIU2,0,20120823,100006,144630.00000,1
RIU2,0,20120823,100006,144570.00000,7
RIU2,0,20120823,100006,144695.00000,23
RIU2,0,20120823,100006,144695.00000,1
RIU2,0,20120823,100006,144695.00000,5
RIU2,0,20120823,100006,144700.00000,1
RIU2,0,20120823,100006,144570.00000,1
RIU2,0,20120823,100006,144570.00000,1
RIU2,0,20120823,100006,144700.00000,1
RIU2,0,20120823,100006,144700.00000,1
RIU2,0,20120823,100006,144700.00000,2
RIU2,0,20120823,100006,144700.00000,5
RIU2,0,20120823,100006,144700.00000,10
RIU2,0,20120823,100006,144620.00000,1
RIU2,0,20120823,100006,144570.00000,24
RIU2,0,20120823,100006,144660.00000,1
RIU2,0,20120823,100006,144660.00000,1
RIU2,0,20120823,100006,144660.00000,1
RIU2,0,20120823,100006,144570.00000,1
RIU2,0,20120823,100006,144660.00000,1
RIU2,0,20120823,100006,144660.00000,2
RIU2,0,20120823,100006,144660.00000,9
RIU2,0,20120823,100006,144595.00000,1
RIU2,0,20120823,100006,144570.00000,4
RIU2,0,20120823,100006,144700.00000,1
RIU2,0,20120823,100006,144570.00000,100
RIU2,0,20120823,100006,144700.00000,16
RIU2,0,20120823,100006,144580.00000,3
RIU2,0,20120823,100006,144580.00000,2
RIU2,0,20120823,100006,144600.00000,1
RIU2,0,20120823,100006,144700.00000,9
RIU2,0,20120823,100006,144700.00000,3
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144700.00000,2
RIU2,0,20120823,100006,144700.00000,1
RIU2,0,20120823,100006,144700.00000,1
RIU2,0,20120823,100006,144700.00000,1
RIU2,0,20120823,100006,144580.00000,1
RIU2,0,20120823,100006,144580.00000,2
RIU2,0,20120823,100007,144625.00000,1
RIU2,0,20120823,100007,144625.00000,1
RIU2,0,20120823,100007,144625.00000,1
RIU2,0,20120823,100007,144645.00000,2
RIU2,0,20120823,100007,144650.00000,1
RIU2,0,20120823,100007,144645.00000,1
RIU2,0,20120823,100007,144645.00000,1
RIU2,0,20120823,100007,144645.00000,1
RIU2,0,20120823,100007,144665.00000,11

Сделки были скачаны Гидрой с Финама. Правильно ли они были скачаны - сказать не могу, ибо при попытке просмотра сделок и свечей Гидра падает с исключением (показать не могу, ибо старую Гидру снес, а та, которая на Кодеплексе у меня не билдится, и 4.1.3 с Бокса не качается :).

Создание и запуск EmulationTrader:

Код

m_Trader = new EmulationTrader(new[] { Sec }, new[] { Por }, Str)
{
    WorkingTime = Exchange.Rts.WorkingTime,
    UseMarketDepth = false,
};

((EmulationTrader)m_Robot.Trader).StateChanged += () =>
{
    if(((EmulationTrader)m_Robot.Trader).State == EmulationStates.Stopped)
    {
        m_Robot.AddWarningLog("ГОТОВО!");
    }
    else if(((EmulationTrader)m_Robot.Trader).State == EmulationStates.Started)
    {
        // запускаем стратегию когда эмулятор запустился
        m_Manager.Start();
    }
};

((EmulationTrader)m_Robot.Trader).RegisterTrades(m_Robot.SecurityByName("RTS-9.12"));
((EmulationTrader)m_Robot.Trader).Start(new DateTime(2012, 8, 22), new DateTime(2012, 8, 24));


Стратегия получает сделки через WhenNewTrades:

Код

protected override void OnStarting()
{
    base.Security.Exchange.IsSupportAtomicReRegister = false;

    this.SuspendRules(() =>
    {
        base.Security.WhenNewTrades().Do(NewTrade).Apply(this);
    });

    base.OnStarting();
}


Таки как получить через эмулятор все трейды? Есть ли какой-нибудь способ? :)



Спасибо:




4 Ответов
esper

Фотография
Программист
Дата: 25.08.2012
Ответить


Код в NewTrade какой?
Спасибо:

Oppositus

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


Фактически только логирование там:

Код

protected void NewTrade()
{
    // Чтобы посмотреть только 1 минуту и не засорять лог
    if(base.Security.LastTrade.Time.TimeOfDay.Minutes >= 1)
    {
        throw new InvalidOperationException();
    }

    // Кол-во сделок, прошедшее через NewTrade
    _count += 1;
    this.AddInfoLog("{0}\t{1}\t{2}\t{3}", _count, base.Security.LastTrade.Time, base.Security.LastTrade.Price, base.Security.LastTrade.Volume);

    // Пытаюсь посчитать статистику, тут ничего "такого" нет
    UpdateCurrentCandle(base.Security.LastTrade.Time);
    m_Current.NewTrade(base.Security.LastTrade.Price, base.Security.LastTrade.Volume);
}


По логам и видно, что приходит только последняя сделка в данной секунде.

Upd - Посмотрел свежим взглядом. Может проблема в base.Security.LastTrade.*? Но как тогда получить все сделки?
Автор топика
Спасибо:

esper

Фотография
Программист
Дата: 25.08.2012
Ответить


Код
protected void NewTrade(IEnumerable<Trade> trades)
Спасибо: Oppositus

Oppositus

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


esper Перейти
Код
protected void NewTrade(IEnumerable<Trade> trades)


Спасибо, Добрый Фей!
Автор топика
Спасибо:


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

loading
clippy