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] Все таки нужно отдавать отчет в том, что примеры - это больше популистское, чем практичное.
|
|
|
|
Спасибо:
|
|
|
|
|