в своем старом коде ничего не менял но появились ошибки "В экземпляре объекта не задана ссылка на объект." и candle стала null. в чем может быть проблема??? версия 1.8 ))))
в своем старом коде ничего не менял но появились ошибки "В экземпляре объекта не задана ссылка на объект." и candle стала null. в чем может быть проблема??? версия 1.8 ))))
Kommentare (38)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Без теста ошибки трудно разобраться.
всмысле??какого теста?
Например как здесь.
сформированную свечку var candle = _candleManager.GetTimeFrameCandle(Security, _timeFrameStra, _nextTime - _timeFrameStra);
в этой строчке ошибка
m = candle.LowPrice / 2;
ругается вот так System.NullReferenceException: В экземпляре объекта не задана ссылка на объект В Sampler.SStrategy.OnProcess() в C:\Doc* \SStrategy.cs : строка 339 в Ecng.Trading.Algo.Strategy.Process()
может ли это быть из-за того что свечка не успевает сформироваться?? из-за разницы во времени между платформой и системным временем??? это версия 1.8 здесь время еще не из платформы берется
Этого я не могу сказать, так как все зависит от кода стратегии. Но что понятно, так это то, что на строчке 339 в классе SStrategy происходит обращение к нулевой ссылке. Возможно, это как раз Candle, которая отсутствует для запрашиваемого периода, а Ваша стратегия это не учитывает (что не правильно).
переход с 1.8 на последнюю версию болезненый??
почему при формировании свечки Security имеет значения closePrice а Low,High и Open нулевые???
Ошибка в стратегии. Вряд ли переход поможет.
А в Квике отличные от 0? Verifier что нибудь пишет? ProcessDataError выводит?
в Квике отличные от 0
Verifier пишет что все впорядке
ProcessDataError нет))
примеры с рисованием свечей по таймфреймам работают норм.
вот код где ошибка выскакивает
var bounds = _timeFrameStra.GetCandleBounds(base.Trader);
candle приходит null
а может быть не корректный dde экспорт связан с новой версией квика 5,18,0,386 ????
А какие колонки в таблице инструменты?
таблица инструментов проходит нормально, все колонки стандартные а вот таблица со всеми сделками по всей видимости вообще не проходит и таблица с ордерами тоже
Мне кажется, или мы скачем с темы на тему?
нет... просто у меня проблема - не формируются свечи в candleManager и я хочу разобраться в чем дело...и как это исправить.....я понял что данные по сделкам не проходят вот я и хочу узнать может это из-за новой версии квика??? потому что вывод через dde вроде поменялся...
ITrader.NewTrades вызывается?
да, вызывается
Пример SampleCandle свечки строит?
да.... SampleCandle свечки строит Sample выводим проходившие сделки
но мой пример который раньше работал, при переходе на другой комп перестал работать, просто пишет что candle null и таблицу заявок не отображает и т.д. как такое может быть, что экспорт происходит, он ни на что не ругается а данных нет???
А этом другом компе примеры работают?
да, примеры вроде работают. как такое может быть, что экспорт происходит, он ни на что не ругается а данных нет???
Ну тогда только отладка на том другом компе... Вы ошибку ищите в QuikTrader. А она вовсе не там. Не тратьте время в пустую. Запустите отладчик, и посмотрите, что не работает и почему.
я конечно может и туплю, но почему после запуска экспорта dde в настройках вывода в квике автоматически с таблиц снимается галочка выводить формальные заголовки???
Это делает сам QuikTrader.
абсолютно одинаково создаю шлюз, но из одного приложения(стандартного примера) он работает а из моего выдает Неудалось подключиться к Quik. Возможно, в Quik-е не включена обработка внешних транзакций. Имя параметра: path
путь одинаковый, транзакции подключены поскольку один из примеров работает конкретно
Win Vista или 7-ка? Нужно чтобы еще робот и Квик запускался из под одних и тех же привилегий. Квик рекомендуется запускать из под админа. Если так делаете, то и робота так же нужно запускать из под админа.
заменил пару dll на более ранние версии. все заработало. ума не преложу почему)
спасибо за советы)
У меня такая же ситуация, версия 2.6.2, функция GetTimeFrameCandles не возвращает результат. Свечи не приходят только при первом вызове, если вызвать функцию позже, то все будет ОК (у меня чтобы получить первый график нужно 2 раза нажать на кнопку:)). Дело скорее всего в том, что при первом вызове функции, она запускается раньше, чем выполниться построение первой свечи (событие NewCandles) в другом потоке, и функция возвращает пустой результат, не дождавшись. Я не стал заморачиваться, т.к. посчитал это особенностью библиотеки, хотя на самом деле это наверное можно назвать ошибкой.
Так а что CandleManager должен возвращать, если еще свечек не построено?
В данном случае CandleManager должен возвращать пустое множество. Но неясность вводит ведь функция GetTimeFrameCandles, которая дает разные результаты за один и тот же прошедший период. Сначала мне показалось, что лучше было бы, если бы функция дожидалась формирования свеч, но сейчас, понимаю, что это не нужно. Поэтому насчет того, что это можно назвать ошибкой, я наверное погорячился, но отметить это в документации было бы хорошо.
Мне все равно до конца не ясно. Нужно что отметить? Что она не дожидается формирования свечек?
Что функция не получает свечи из Квика, а возвращает только уже полученные свечи, и поэтому, если между RegisterTimeFrameCandles и GetTimeFrameCandles не прошло достаточно времени, возвращает пустое множество (или не все свечи).
Насчет пустого множества согласен. И я сейчас посмотрел код, там как раз пустой массив и возвращается. У вас не так?
Насчет времени... Не думаю что это имеет вообще расписывать. Потому что на этом S# целиком построен. Те же ITrader.Security, Order, MyTrades - все они будут возвращать пустые массивы, пока не придут данные по экспорту.
рецедив)))
происходит что-то вообще сумашедшее....
один раз запускаю получаю правильные свечи во второй раз получаю null в третий раз могу получить не правильную свечку(close или low не совпадпют с настоящим)
и это когда свечка уже точно сформироваться
хелп ми)
Вы бы код привели, как вы дожидаетесь окончания формирования свечек. Было бы легче подсказывать.
ничего всехр естественного, вот этот код и выводит то нормальные свечи то ненормальные(
Я так понял, что это стратегия из моего примера? Во-первых, в ней есть ошибки (я нашел их, когда тестировал ее на истории в 3.0). Во-вторых, я нашел не все.😀 Все таки нужно отдавать отчет в том, что примеры - это больше популистское, чем практичное.
Сначала нужно зарегистрировать ваш тайм-фрейм для инструмента с помощью функции RegisterTimeFrameCandles, а потом уже получать свечи, а в вашем коде я этого не вижу.
Да, при первом вызове GetTimeFrameCandles всегда возвращается пустое множество. При следующих вызовах, бывают, что свечи выходят не полностью, но это происходит только, если квик только-что загрузился, и таблица всех сделок еще до конца не заполнилась с сервака.
тайм фрейм регистрировал вызывал уже после формирования свечи все равно
перешел последнию версию тьфу-тьфу-тьфу