MaximMM
|
Date: 8/28/2012
Смотрите документацию:
Свечки>График.
|
|
|
|
Thanks:
|
|
|
|
|
|
alex123456
|
Date: 8/29/2012
Объясню вопрос другими словами.
candlemanger за 60 сек переработал 12 5-секундных свечей,
а strategy за 60 сек только одну(или две, три, но меньше 12).
Где клинет?
|
|
|
|
Thanks:
|
|
|
|
|
|
esper
|
Date: 8/29/2012
Телепаты в отпуске. По сообщениям не понятно в чем проблема. Нет никакого описания как это воспроизвести. Нет никакого кода, который бы показал суть ошибки. Есть только видео, на котором опять же ничего не понятно.
|
|
|
|
Thanks:
|
|
|
|
|
|
alex123456
|
Date: 8/29/2012
Вот исходник с доделками Quik\SampleSMA версии 4.1.2.
Ждать пока все сделки совершатся.
|
|
|
|
Thanks:
|
|
|
|
|
|
esper
|
Date: 8/29/2012
Никуда ничего не пропадает, просто время свечки из стратегии берется только при изменении параметров стратегии, которые, видимо, меняются довольно редко.
|
|
|
|
Thanks:
|
|
|
|
|
|
alex123456
|
Date: 8/29/2012
Стратегия строится на основе простых скользящих средних, которые заполняются данными из свечек (candle.ClosePrice).
Т.е. с приходом свечки срабатывает событие csharp _candleManager.Processing... и строится свечка, после должны автоматически вычисляться скользящие средние ```csharp
Sma.Process((DecimalIndicatorValue)candle.ClosePrice);
после проверяются следующие условия:
```csharp
var isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;
// если произошло пересечение
if (_isShortLessThenLong != isShortLessThenLong)
....
и т.д. с каждой свечкой.
Это проверяется с помощью останова и шагом с заходом.
Причём стратегия не может знать какие данные пришли ( может короткая пересекла длинную или наоборот), т.е. она должна обрабатывать каждую свечку и вовремя.
Да, ещё стратегия совсем простая, в ней нет никаких наисложнейщих вычислений и обрабатывает всего одну бумагу.
Т.е. задержка должна быть милисекунда.
|
|
|
|
Thanks:
|
|
|
|
|
|
esper
|
Date: 8/29/2012
Так и поставьте точку останова на
Sma.Process((DecimalIndicatorValue)candle.ClosePrice);
посмотрите, как часто она вызывается. А обрабатывать событие _strategy.PropertyChanged для получения последней свечки из стратегии не совсем корректно, кто его вызывать будет когда туда новая свеча приходит?
|
|
|
|
Thanks:
|
|
|
|
|
|
MaximMM
|
Date: 8/29/2012
Попробуйте вместо:
candleManager.Processing += (series, candle) =>
{
this.GuiAsync(() => { TimeCandle.Content = candle.OpenTime.ToLongTimeString(); });
};
Написать:
_candleManager.Processing += DrawCandle;
...
private void DrawCandle(CandleSeries series, Candle candle)
{
if (candle.State == CandleStates.Finished) this.GuiAsync(() => TimeCandle.Content = candle.OpenTime.ToLongTimeString(); );
}
|
|
|
|
Thanks:
|
|
|
|
|
|
alex123456
|
Date: 8/30/2012
MaximMM Вашу мысль попробовал - тоже самое.
_strategy.PropertyChanged - это событие изменения параметров стратегии.
Sma.Process((DecimalIndicatorValue)candle.ClosePrice); - это параметр стратегии?
Я думаю, что Да.
Значит при изменении его должно срабатывать это событие.
Но оно не срабатывает с каждым изменением индикаторного значения.
Если поставить остановы на
this.GuiAsync(() => { TimeCandle.Content = candle.OpenTime.ToLongTimeString(); });
и
LongSma.Process((DecimalIndicatorValue)candle.ClosePrice);
и
TimeCandleStrategy.Content = _strategy._candle;
то первые два работают в цикле всегда, а третье по своему тайному алгоритму.
Ещё возник вопрос по объёму стратегии (по умолчанию: Volume = 1), но если посмотреть на сделки, то их 5, 7, или 10 на одной свечке(т.е. при одном расположении скользящих средних).
Откуда такое количество сделок?
|
|
|
|
Thanks:
|
|
|
|
|
|
esper
|
Date: 8/30/2012
alex123456:
Sma.Process((DecimalIndicatorValue)candle.ClosePrice); - это параметр стратегии?
Я думаю, что Да.
Нет, это не параметр стратегии.
alex123456:
Значит при изменении его должно срабатывать это событие.
Но оно не срабатывает с каждым изменением индикаторного значения.
Вы добавили какое-то поле в производном классе, откуда стратегия должна знать что это такое, параметр это или нет? Сделайте свое событие, которое будете сами и вызывать когда надо, либо смотрите в сторону Strategy.Notify.
|
|
|
|
Thanks:
|
|
|
|
|