candlemanager))
Atom
02.02.2011
mr leng


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


Теги:


Спасибо:


<< < 2 3 4 
Mikhail Sukhov

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


avkar:

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

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

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

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

Спасибо:

mr leng

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


рецедив)))

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

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

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

хелп ми)

Спасибо:

Greene-nsk

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


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

Спасибо:

mr leng

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


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;
       
    }

}

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

Спасибо:

avkar

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


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

Спасибо:

avkar

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


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

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

Спасибо:

mr leng

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


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

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

Спасибо:

Mikhail Sukhov

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


mr leng: class SmaStrategy : Strategy {

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

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

Спасибо:
<< < 2 3 4 

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

loading
clippy