[BUG?] IsSyncRegister
Atom Ответить
31.08.2011


Свойство CandleManager.IsSyncRegister, судя по всему, не работает.

Тестовый код:
Код
AddInfoLog("IsSyncRegister = {0}", _candleManager.IsSyncRegister);
AddInfoLog("Регистрация свечек...");
//_candleToken = _candleManager.RegisterCandles((new TimeFrameCandle()).GetType(), this.Security, TimeSpan.FromMinutes(1));
_candleToken = _candleManager.RegisterTimeFrameCandles(Security, _timeFrame);
AddInfoLog("Свечки зарегистрированы.");

AddInfoLog("candlesize will be "+(Math.Max(Math.Max(_longPer, _shortPer), _atrPer) + 1));

var cc = _candleManager.GetCandles(_candleToken, Math.Max(Math.Max(_longPer, _shortPer), _atrPer) + 1);
AddInfoLog("cc size = {0}",cc.Count());

Thread.Sleep(5000);

AddInfoLog("Попытка №2");

cc = _candleManager.GetCandles(_candleToken, Math.Max(Math.Max(_longPer, _shortPer), _atrPer) + 1);
AddInfoLog("cc size = {0}", cc.Count());


Результат:
Код
AC$ 31.08.2011 14:27:15.009 IsSyncRegister = True
AC$ 31.08.2011 14:27:15.010 Регистрация свечек...
AC$ 31.08.2011 14:27:15.049 Свечки зарегистрированы.
AC$ 31.08.2011 14:27:15.050 candlesize will be 28
AC$ 31.08.2011 14:27:15.053 cc size = 0
AC$ 31.08.2011 14:27:20.054 Попытка №2
AC$ 31.08.2011 14:27:20.058 cc size = 28


Могу попробовать самостоятельно пофиксить, если откроете мне тот участок кода.

Теги:


Спасибо:




15 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.08.2011
Ответить


+ нужно еще SyncCandleSource
Спасибо:

Church

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


Могу попробовать.
Автор топика
Спасибо:

Alexander

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


Church Перейти
Могу попробовать.


Вы наверное не поняли.
Фиксить ничего пока пробовать не надо.

Необходимо использовать IsSyncRegister и SyncCandleSource, у вас - только IsSyncRegister используется.
Спасибо:

Church

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


У меня вот так:
Код
                this._candleManager = new CandleManager(new SyncTraderCandleSource(Trader))
                {
                    IsSyncRegister = true,
                };
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.08.2011
Ответить


Church Перейти
У меня вот так:
Код
                this._candleManager = new CandleManager(new SyncTraderCandleSource(Trader))
                {
                    IsSyncRegister = true,
                };


И? Работает?
Спасибо:

Church

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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.08.2011
Ответить


Church Перейти
Нет Blink


Так а сделки то есть на тот момент, когда вы первый раз вызываете GetCandles? Регистрация регистрацией, но если у вас сделки не накачены, то CandleManager их из воздуха не сотворит.
Спасибо:

Church

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


Ну, трейдер инициализируется на несколько десятков строк кода раньше. Я думал, что эта синхронизация затормозит поток до тех пор, пока не прогрузятся сделки (и по ним не создадутся свечки) до текущего момента.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.08.2011
Ответить


Church Перейти
Я думал, что эта синхронизация затормозит поток до тех пор, пока не прогрузятся сделки


Такое нужно делать на уровне кода, и именно сделать лок до тех пор, пока не будут получены текущие свечки. И вот уже далее и вызывать GetCandles.
Спасибо:

Church

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


Сейчас у меня именно так, но поскольку функция требуется во многих стратегях, думал что она может уже быть включена в S#.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.09.2011
Ответить


Church Перейти
Сейчас у меня именно так, но поскольку функция требуется во многих стратегях, думал что она может уже быть включена в S#.


Во многих ботах? Ни разу такое не требовалось. А что вы делаете, если не секрет, что оно вам понадобилось?
Спасибо:

Church

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


Простая стратегия на свечках. Нужно либо а) подождать пока сформируется история и рассчитать нужные индикаторы на последних свечках, либо б) пропускать все свечки по мере формирования через индикатор.add, пока не дойдем до рыночного времени.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.09.2011
Ответить


Church Перейти
Простая стратегия на свечках. Нужно либо а) подождать пока сформируется история и рассчитать нужные индикаторы на последних свечках, либо б) пропускать все свечки по мере формирования через индикатор.add, пока не дойдем до рыночного времени.


Исторические свечки подгружаются за раз, их ждать не нужно. Так что все равно не понятно, зачем блокировать построение свечек в реальном времени.
Спасибо:

Church

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


В смысле "за раз"? Если имеете в виду только в начале работы стратегии - то да. Но если не встраивать искусственных задержек, то метод GetCandles выдает нули или самые утренние свечки.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.09.2011
Ответить


Church Перейти
В смысле "за раз"? Если имеете в виду только в начале работы стратегии - то да. Но если не встраивать искусственных задержек, то метод GetCandles выдает нули или самые утренние свечки.


Я понял о чем речь. Вы в OnStarting просто запоминаем время старта. И далее фильтруем свечки, меньшие этого времени.
Спасибо:


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

loading
clippy