candlemanager))
Atom Reply
2/2/2011


в своем старом коде ничего не менял но появились ошибки "В экземпляре объекта не задана ссылка на объект."
и candle стала null. в чем может быть проблема??? версия 1.8 ))))

Tags:


Thanks:




38 Answers
< 1 2 
avkar

Avatar
Date: 2/6/2011
Reply


mr leng Перейти
да, примеры вроде работают.
как такое может быть, что экспорт происходит, он ни на что не ругается а данных нет???


У меня такая же ситуация, версия 2.6.2, функция GetTimeFrameCandles не возвращает результат. Свечи не приходят только при первом вызове, если вызвать функцию позже, то все будет ОК (у меня чтобы получить первый график нужно 2 раза нажать на кнопку:)). Дело скорее всего в том, что при первом вызове функции, она запускается раньше, чем выполниться построение первой свечи (событие NewCandles) в другом потоке, и функция возвращает пустой результат, не дождавшись. Я не стал заморачиваться, т.к. посчитал это особенностью библиотеки, хотя на самом деле это наверное можно назвать ошибкой.
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 2/6/2011
Reply


avkar Перейти
mr leng Перейти
да, примеры вроде работают.
как такое может быть, что экспорт происходит, он ни на что не ругается а данных нет???


У меня такая же ситуация, версия 2.6.2, функция GetTimeFrameCandles не возвращает результат. Свечи не приходят только при первом вызове, если вызвать функцию позже, то все будет ОК (у меня чтобы получить первый график нужно 2 раза нажать на кнопку:)). Дело скорее всего в том, что при первом вызове функции, она запускается раньше, чем выполниться построение первой свечи (событие NewCandles) в другом потоке, и функция возвращает пустой результат, не дождавшись. Я не стал заморачиваться, т.к. посчитал это особенностью библиотеки, хотя на самом деле это наверное можно назвать ошибкой.


Так а что CandleManager должен возвращать, если еще свечек не построено?
Thanks:

avkar

Avatar
Date: 2/7/2011
Reply


Mikhail Sukhov Перейти

Так а что CandleManager должен возвращать, если еще свечек не построено?


В данном случае CandleManager должен возвращать пустое множество. Но неясность вводит ведь функция GetTimeFrameCandles, которая дает разные результаты за один и тот же прошедший период. Сначала мне показалось, что лучше было бы, если бы функция дожидалась формирования свеч, но сейчас, понимаю, что это не нужно. Поэтому насчет того, что это можно назвать ошибкой, я наверное погорячился, но отметить это в документации было бы хорошо.
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 2/7/2011
Reply


avkar Перейти
Mikhail Sukhov Перейти

Так а что CandleManager должен возвращать, если еще свечек не построено?


В данном случае CandleManager должен возвращать пустое множество. Но неясность вводит ведь функция GetTimeFrameCandles, которая дает разные результаты за один и тот же прошедший период. Сначала мне показалось, что лучше было бы, если бы функция дожидалась формирования свеч, но сейчас, понимаю, что это не нужно. Поэтому насчет того, что это можно назвать ошибкой, я наверное погорячился, но отметить это в документации было бы хорошо.


Мне все равно до конца не ясно. Нужно что отметить? Что она не дожидается формирования свечек?
Thanks:

avkar

Avatar
Date: 2/7/2011
Reply


Mikhail Sukhov Перейти


Мне все равно до конца не ясно. Нужно что отметить? Что она не дожидается формирования свечек?


Что функция не получает свечи из Квика, а возвращает только уже полученные свечи, и поэтому, если между RegisterTimeFrameCandles и GetTimeFrameCandles не прошло достаточно времени, возвращает пустое множество (или не все свечи).
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 2/7/2011
Reply


avkar Перейти
Mikhail Sukhov Перейти


Мне все равно до конца не ясно. Нужно что отметить? Что она не дожидается формирования свечек?


Что функция не получает свечи из Квика, а возвращает только уже полученные свечи, и поэтому, если между RegisterTimeFrameCandles и GetTimeFrameCandles не прошло достаточно времени, возвращает пустое множество (или не все свечи).


Насчет пустого множества согласен. И я сейчас посмотрел код, там как раз пустой массив и возвращается. У вас не так?

Насчет времени... Не думаю что это имеет вообще расписывать. Потому что на этом S# целиком построен. Те же ITrader.Security, Order, MyTrades - все они будут возвращать пустые массивы, пока не придут данные по экспорту.
Thanks:

mr leng

Avatar
Date: 2/8/2011
Reply


рецедив)))

происходит что-то вообще сумашедшее....

один раз запускаю получаю правильные свечи
во второй раз получаю null
в третий раз могу получить не правильную свечку(close или low не совпадпют с настоящим)

и это когда свечка уже точно сформироваться

хелп ми)
Topic starter
Thanks:

Greene-nsk

Avatar
Date: 2/8/2011
Reply


Вы бы код привели, как вы дожидаетесь окончания формирования свечек. Было бы легче подсказывать.
Thanks:

mr leng

Avatar
Date: 2/8/2011
Reply



class SmaStrategy : Strategy
{
private readonly CandleManager _candleManager;
private TimeSpan _timeFrameStra;
private double m;

private DateTime _nextTime;
private string line;
private string _ClientCode1;
private int _VOL1;
private bool _isClientChek1;

public SmaStrategy(CandleManager candleManager, ITrader trader, int vol1, LH20 lh20, string clientcode1, string account, Security security, TimeSpan TimeFrameStra, bool isChek1, TimeSpan interval)
: base(trader, account, security, interval)
{
_candleManager = candleManager;

_timeFrameStra = TimeFrameStra;
_ClientCode1 = clientcode1;
_VOL1 = vol1;
_isClientChek1 = isChek1;
this.LH20 = lh20;
}

public LH20 LH20 { get; private set; }

protected override void OnRunning()
{
// вычисляем время окончания текущей пятиминутки
_nextTime = _timeFrameStra.GetCandleBounds(base.Trader).Max;

base.OnRunned();
}

protected override bool OnProcess()
{
// если наша стратегия в процессе остановки
if (base.ProcessState == StrategyProcessStates.Stopping)
{
base.Orders.Where(o => o.State == OrderStates.Active).ForEach(base.Trader.GuarantyCancelOrder);
return false;
}



if (base.Trader.MarketTime < _nextTime)
{
return true;
}



if (base.Trader.MarketTime > _nextTime)
{
// получаем сформированную свечку
var candle = _candleManager.GetTimeFrameCandle(Security, _timeFrameStra, _nextTime - _timeFrameStra);

_nextTime += _timeFrameStra;


// if (candle == null)
// return true;
var t = candle.ClosePrice;
var t1 = candle.LowPrice ;
var t2 = candle.HighPrice;
var t3 = candle.OpenPrice;
var ty = 0;
}
return true;

}

}



ничего всехр естественного, вот этот код и выводит то нормальные свечи то ненормальные(
Topic starter
Thanks:

avkar

Avatar
Date: 2/8/2011
Reply


Сначала нужно зарегистрировать ваш тайм-фрейм для инструмента с помощью функции RegisterTimeFrameCandles, а потом уже получать свечи, а в вашем коде я этого не вижу.
Thanks:

avkar

Avatar
Date: 2/8/2011
Reply


Mikhail Sukhov Перейти

Насчет пустого множества согласен. И я сейчас посмотрел код, там как раз пустой массив и возвращается. У вас не так?


Да, при первом вызове GetTimeFrameCandles всегда возвращается пустое множество. При следующих вызовах, бывают, что свечи выходят не полностью, но это происходит только, если квик только-что загрузился, и таблица всех сделок еще до конца не заполнилась с сервака.
Thanks:

mr leng

Avatar
Date: 2/9/2011
Reply


тайм фрейм регистрировал
вызывал уже после формирования свечи
все равно

перешел последнию версию
тьфу-тьфу-тьфу
Topic starter
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 2/10/2011
Reply


mr leng Перейти

class SmaStrategy : Strategy
{

...
ничего всехр естественного, вот этот код и выводит то нормальные свечи то ненормальные(


Я так понял, что это стратегия из моего примера? Во-первых, в ней есть ошибки (я нашел их, когда тестировал ее на истории в 3.0). Во-вторых, я нашел не все.BigGrin Все таки нужно отдавать отчет в том, что примеры - это больше популистское, чем практичное.
Thanks:
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy