← 返回

SampleSmartSMA

На примере SampleSmartSMA попробовал разобраться как работать с этой библиотекой.

  1. Если поменять таймфрейм на SmartTimeFrames.Minute1 то _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); почти всегда возвращает null. Если время на локальном компьютере отличается от времени Trader.MarketTime то со 100% вероятностью это происходит.
  2. ProcessDataError - часто возникает событие сo stackoverflowexception.

Как с этим бороться?

本主题对您有帮助吗?

分享主题

评论 (14)

登录创建账户, 登录或注册以发表评论

Mikhail Sukhov
Mikhail Sukhov

roman: На примере SampleSmartSMA попробовал разобраться как работать с этой библиотекой.

  1. Если поменять таймфрейм на SmartTimeFrames.Minute1 то _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); почти всегда возвращает null. Если время на локальном компьютере отличается от времени Trader.MarketTime то со 100% вероятностью это происходит.
  2. ProcessDataError - часто возникает событие сo stackoverflowexception.

Как с этим бороться?

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

roman
roman 作者

Mikhail Sukhov:

roman: На примере SampleSmartSMA попробовал разобраться как работать с этой библиотекой.

  1. Если поменять таймфрейм на SmartTimeFrames.Minute1 то _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); почти всегда возвращает null. Если время на локальном компьютере отличается от времени Trader.MarketTime то со 100% вероятностью это происходит.
  2. ProcessDataError - часто возникает событие сo stackoverflowexception.

Как с этим бороться?

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

Про жизненные условия не понял фразы:( У меня не получается получать свечки в онлайне. Т.е. GetTimeFrameCandle не возвращает данных, хотя потом если по истории посмотреть в этот период были сделки. Текст ошибки пришлю, когда тестовый сервер заработает, т.е. после праздников как я понимаю.

Mikhail Sukhov
Mikhail Sukhov

roman: Про жизненные условия не понял фразы:(

Я имел ввиду то, что надо и в других местах исправлять тайм фрейм. В частности, RegisterTimeFrameCandles.

roman
roman 作者

Mikhail Sukhov:

roman: Про жизненные условия не понял фразы:(

Я имел ввиду то, что надо и в других местах исправлять тайм фрейм. В частности, RegisterTimeFrameCandles.

Во всех местах исправил, в частности RegisterTimeFrameCandles, RegisterHistoryData ну и : private readonly TimeSpan _timeFrame = (TimeSpan)SmartTimeFrames.Minute1;

Mikhail Sukhov
Mikhail Sukhov

roman:

Mikhail Sukhov:

roman: Про жизненные условия не понял фразы:(

Я имел ввиду то, что надо и в других местах исправлять тайм фрейм. В частности, RegisterTimeFrameCandles.

Во всех местах исправил, в частности RegisterTimeFrameCandles, RegisterHistoryData ну и : private readonly TimeSpan _timeFrame = (TimeSpan)SmartTimeFrames.Minute1;

Иногда бывает так, что обращение идет раньше, чем есть реально сделки.

roman
roman 作者

Если время на локальном компьютере отличается от времени Trader.MarketTime то candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); возвращает null. Такого по идее не должно быть, может где то локально время в исходниках используется вместо Trader.MarketTime?

Mikhail Sukhov
Mikhail Sukhov

roman: Если время на локальном компьютере отличается от времени Trader.MarketTime то candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); возвращает null. Такого по идее не должно быть, может где то локально время в исходниках используется вместо Trader.MarketTime?

Биржевое время

roman
roman 作者

Mikhail Sukhov:

roman: Если время на локальном компьютере отличается от времени Trader.MarketTime то candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); возвращает null. Такого по идее не должно быть, может где то локально время в исходниках используется вместо Trader.MarketTime?

Биржевое время

время выставил в итоге на компьютере с точностью до 2 секунд с московским. Но все равно минутные свечи не возвращаются candleManager.GetTimeFrameCandle :( раз 20 запускал в отладчике.

Mikhail Sukhov
Mikhail Sukhov

roman:

Mikhail Sukhov:

roman: Если время на локальном компьютере отличается от времени Trader.MarketTime то candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); возвращает null. Такого по идее не должно быть, может где то локально время в исходниках используется вместо Trader.MarketTime?

Биржевое время

время выставил в итоге на компьютере с точностью до 2 секунд с московским. Но все равно минутные свечи не возвращаются candleManager.GetTimeFrameCandle :( раз 20 запускал в отладчике.

Вы посмотрите, время правильное передается в GetTimeFrameCandle?

roman
roman 作者

Mikhail Sukhov:

roman:

Mikhail Sukhov:

roman: Если время на локальном компьютере отличается от времени Trader.MarketTime то candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame); возвращает null. Такого по идее не должно быть, может где то локально время в исходниках используется вместо Trader.MarketTime?

Биржевое время

время выставил в итоге на компьютере с точностью до 2 секунд с московским. Но все равно минутные свечи не возвращаются candleManager.GetTimeFrameCandle :( раз 20 запускал в отладчике.

Вы посмотрите, время правильное передается в GetTimeFrameCandle? время передается текущее минус минута третьим параметром

Mikhail Sukhov
Mikhail Sukhov

roman: время передается текущее минус минута третьим параметром

А на самом графике текущая свечка рисуется?

roman
roman 作者

Mikhail Sukhov:

roman: время передается текущее минус минута третьим параметром

А на самом графике текущая свечка рисуется? Рисование на графике происходит по другому, т.е. через событие. На графике у меня сейчас отключено рисование чего либо (закоментарен этот код), но когда не был закоментарен - то текущая свечка не рисовалась, я думал что это был глюк графика самого, потому что данные в него приходили в отладчике если смотреть.

Mikhail Sukhov
Mikhail Sukhov

roman: Рисование на графике происходит по другому, т.е. через событие. На графике у меня сейчас отключено рисование чего либо (закоментарен этот код), но когда не был закоментарен - то текущая свечка не рисовалась, я думал что это был глюк графика самого, потому что данные в него приходили в отладчике если смотреть.

Предлагаю начать хоть с какого-то поиска неисправности. Пишите в лог, регулярно ли приходят новые сделки, создаются свечки (+ за какой период).

roman
roman 作者

Mikhail Sukhov:

roman: Рисование на графике происходит по другому, т.е. через событие. На графике у меня сейчас отключено рисование чего либо (закоментарен этот код), но когда не был закоментарен - то текущая свечка не рисовалась, я думал что это был глюк графика самого, потому что данные в него приходили в отладчике если смотреть.

Предлагаю начать хоть с какого-то поиска неисправности. Пишите в лог, регулярно ли приходят новые сделки, создаются свечки (+ за какой период).

Сейчас не воспроизводится, похоже с тестового сервера с задержкой данные приходили и поэтому алгоритм не работал