как прикрепить рисунок не знаю.
вот код
foreach (var candle in candles)
{
_longSmaSeries.DataPoints.Add(new DataPoint );
_shortSmaSeries.DataPoints.Add(new DataPoint );
_strategy.LongSma.Value и _strategy.ShortSma.Value всегда будут равны
последнему значению индикатора.
там нужно получать значение по дате-времени свечи. как это сделать я
не знаю
Не должны они равняться последнему значению индикатора. Это значение,
вычисляемое по формуле. Что-то не так. Видимо данные не заполняются из
Квика. Посмотрите, правильные ли данные в Sma.Add
_strategy.LongSma.Value содержит последнее значение (т.е. значение
последней добавленной свечи)
поэтому надо заполнять _longSmaSeries по мере поступления свечей,
предварительно пересчитав значение в индикаторе (SMA)
т.е. так - добавил свечу в стратегию, затем добавил пересчитанное
значение индикатора в longSmaSeries
расчет SMA по историческим данным возможен только после загрузки
текстового файла, из Квика данные, даже если есть, не используются.
т.е. свечки отрисовались по квику, а данные для SMA из текстового
файла. Если подождать н-цать минут линии конечно пойдут :(
Так Вы не из текстового файла берете историю? А откуда берете?
Какие данные из Квик не используются?
Не, и свечки и линии берутся из файла + квика. Историия (все что до
сегодняшнего дня) берется из файла. Начиная с текущей сессии - из
Квика... Я не совсем понял. Вы нашли проблему? В чем она?
Это в общем-то мои умозрительные заключения после беглого просмотра.
Сейчас запустил, проверил что история подгружается - результат тот же.
Единственное, сильно уменьшил период SMA что бы было видно
При запуске программы (старте обмена по DDE) рисуются только свечки,
индикаторы не рисуются, т.к. переменная _isTodaySmaDrawn установлена в
false.
При загрузке истории из квика вот этот код sma тоже не рисует, т.к.
_isTodaySmaDrawn == false
_candleManager.NewCandles += (token, candles) =>
{
DrawCandles(candles.Keys);
// если скользящие за сегодняшний день отрисованы, то рисуем в
реальном времени текущие скользящие
if (_isTodaySmaDrawn)
DrawSma();
};
Включается _isTodaySmaDrawn по кнопке запускающей стратегию. Но для
"исторических" свечек значение индикатора уже будет равно значению в
последней свечке! то о чем я и писал в третьем сообщении.
Мы используем куки для обеспечения лучшего опыта на нашем сайте. Продолжая использовать наш сайт, вы соглашаетесь на использование куки.
Комментарии (9)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Не понял. Можно рисунок?
как прикрепить рисунок не знаю. вот код foreach (var candle in candles) { _longSmaSeries.DataPoints.Add(new DataPoint ); _shortSmaSeries.DataPoints.Add(new DataPoint );
_strategy.LongSma.Value и _strategy.ShortSma.Value всегда будут равны последнему значению индикатора. там нужно получать значение по дате-времени свечи. как это сделать я не знаю
Не должны они равняться последнему значению индикатора. Это значение, вычисляемое по формуле. Что-то не так. Видимо данные не заполняются из Квика. Посмотрите, правильные ли данные в Sma.Add
_strategy.LongSma.Value содержит последнее значение (т.е. значение последней добавленной свечи) поэтому надо заполнять _longSmaSeries по мере поступления свечей, предварительно пересчитав значение в индикаторе (SMA) т.е. так - добавил свечу в стратегию, затем добавил пересчитанное значение индикатора в longSmaSeries
вот скриншот работы примера
http://stocksharp.googlegroups.com/web/sma1.JPG?gsc=inQvVhYAAAAxOapotRDcoMebuCA4pc7SyCEDhV0fx_noyQINFE7ZEw
Ок, понятно. Посмотрите в метод Sma.Add. По всей видимости туда приходит одно и то же значение.
расчет SMA по историческим данным возможен только после загрузки текстового файла, из Квика данные, даже если есть, не используются. т.е. свечки отрисовались по квику, а данные для SMA из текстового файла. Если подождать н-цать минут линии конечно пойдут :(
Это в общем-то мои умозрительные заключения после беглого просмотра. Сейчас запустил, проверил что история подгружается - результат тот же. Единственное, сильно уменьшил период SMA что бы было видно
http://groups.google.ru/group/stocksharp/web/sma2.jpg
При запуске программы (старте обмена по DDE) рисуются только свечки, индикаторы не рисуются, т.к. переменная _isTodaySmaDrawn установлена в false. При загрузке истории из квика вот этот код sma тоже не рисует, т.к. _isTodaySmaDrawn == false
реальном времени текущие скользящие if (_isTodaySmaDrawn) DrawSma(); };
Включается _isTodaySmaDrawn по кнопке запускающей стратегию. Но для "исторических" свечек значение индикатора уже будет равно значению в последней свечке! то о чем я и писал в третьем сообщении.