← Zurück

SampleSmartSMA

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

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (14)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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 Autor

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 Autor

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 Autor

Если время на локальном компьютере отличается от времени 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 Autor

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 Autor

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 Autor

Mikhail Sukhov:

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

roman
roman Autor

Mikhail Sukhov:

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

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

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