Время работы S#
Atom Ответить
30.12.2010


Добрый день, всех с наступающим НГ.
У меня вопрос к Михаилу: S# останавливает стратегии в 23:50.
Можно как-то продлить их работу на хотя бы на 1-5 минут? Просто для того чтобы успеть получить последнюю сформированную свечку.
Я их записываю в файл. Кроме того, на мой взгляд, это наиболее простой путь для получения истории без всяких сложностей ввиде сторонних БД и купайлов.

Теги:


Спасибо:




3 Ответов
Alexander

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


dart
Добрый день, всех с наступающим НГ.
У меня вопрос к Михаилу: S# останавливает стратегии в 23:50.
Можно как-то продлить их работу на хотя бы на 1-5 минут? Просто для того чтобы успеть получить последнюю сформированную свечку.
Я их записываю в файл. Кроме того, на мой взгляд, это наиболее простой путь для получения истории без всяких сложностей ввиде сторонних БД и купайлов.


S# сам стратегии не останавливает, это делаете вы из своего кода. скиньте те куски кода, где из OnProcess вызываете StrategyProcessResults.Stop.
Наверняка где-то там и идёт проверка на время - просто подкорректируйте его.

С наступающим! :)
Спасибо:

dart

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


Alexander

S# сам стратегии не останавливает, это делаете вы из своего кода. скиньте те куски кода, где из OnProcess вызываете StrategyProcessResults.Stop.
Наверняка где-то там и идёт проверка на время - просто подкорректируйте его.

С наступающим! :)

Спасибо Alexander за отклик. Я сам стратегии никак не останавливаю.
Проверки времени нигде нет. В этом смысле всё как в SampleSMA: StrategyProcessResults.Stop вызывается только в случае если
стратегия уже сама находится в процессе остановки if (base.ProcessState == StrategyProcessStates.Stopping)
Просто файл который у меня вызывается с частотой OnProcess ( для проверки рабочего состояния стратегии)
имеет последнее время обновления 23:50

Alexander, я так понял, у вас какие-то действия производятся после 23: 50?
Попробую ещё проверить.
Автор топика
Спасибо:

Alexander

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


dart
Alexander

S# сам стратегии не останавливает, это делаете вы из своего кода. скиньте те куски кода, где из OnProcess вызываете StrategyProcessResults.Stop.
Наверняка где-то там и идёт проверка на время - просто подкорректируйте его.

С наступающим! :)

Спасибо Alexander за отклик. Я сам стратегии никак не останавливаю.
Проверки времени нигде нет. В этом смысле всё как в SampleSMA: StrategyProcessResults.Stop вызывается только в случае если
стратегия уже сама находится в процессе остановки if (base.ProcessState == StrategyProcessStates.Stopping)
Просто файл который у меня вызывается с частотой OnProcess ( для проверки рабочего состояния стратегии)
имеет последнее время обновления 23:50

Alexander, я так понял, у вас какие-то действия производятся после 23: 50?
Попробую ещё проверить.



Да, я сохраняю историю которая меня интересует для последующего тестирования новых стратегий.

У меня сделано следующим образом:
1) Объявляю таймер:
Код
private DispatcherTimer _stopRobotsTimer;

2) Инициализирую, запускаю (при подключении к квикам):
Код
_stopRobotsTimer = new DispatcherTimer {Interval = new TimeSpan(0, 30, 0)};
_stopRobotsTimer.Tick += StopRobotsTimerTick;
_stopRobotsTimer.Start();

3) Каждые 30 минут вызывается StopRobotsTimerTick:
Код
private void StopRobotsTimerTick(object sender, EventArgs e)
{
if (_multiTrader.Trades.Count() <= 0) return;

var lastTradeTime = _multiTrader.Trades.Last().Time;
if (lastTradeTime.Date.AddDays(1) == DateTime.Now.Date &&
DateTime.Now.Hour < 5)
{
Close();
}
}


Здесь просто смотрю дату последней сделки и проверяю, что сейчас новый день - в этом случае выключаю робота.
Таким образом робот стабильно выключается в 0:00 - 0:29 :)

В перегруженном методе OnClosing как раз сохраняю всё что мне необходимо.


Получается что всё-таки у вас где-то останавливается стратегия. Сложно конкретно сказать не видя кода =)
Спасибо:


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

loading
clippy