Индикатор не отрисовывает линию
Добавлено: 08 июн 2019, 12:17
Столкнулся со странным поведением индикатора.
Вот код:
Компилятор пропускает, но в области индикатора пусто.
Если поставить Line = diff, то линия есть. Если поставить diff_sum = (diff_sum + 1)/(CurrentIndex+1) линия есть. А складывать два значения double отказывается в принципе
Кто-нибудь знает что не так?
Вот код:
Код: Выделить всё
function Initialize()
{
IndicatorName = "EMA_Diff v2";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddParameter("SMA_P", 384); // SMA индикатора
AddParameter("EMA_P", 10);
AddParameter("SMA_H", 384); // SMA для истории
AddParameter("X_Avg", 4);
AddGlobalVariable("flag", Types.Int, 1); // Нужен для разового назначения при старте
AddGlobalVariable("Period", Types.Int, 0); // Период SMA
AddGlobalVariable("diff_sum", Types.Double, 0.0);
AddSeries("Line", DrawAs.Line, Color.Navy);
}
function Evaluate()
{
if(flag == 1)
{
Period = (int)Math.Round(SMA_H * X_Avg, 0);
flag = 0;
}
var sma_v = SMA(Input.Close, SMA_P);
var ema_v = EMA(Input.Close, EMA_P);
double diff = (sma_v[0] >= ema_v[0]) ? ((sma_v[0] / ema_v[0] - 1.0)*10000.0) : ((ema_v[0] / sma_v[0] - 1.0)*10000.0);
double diff_avg;
diff_sum = (diff_sum + diff)/(CurrentIndex+1);
Line = diff_sum;
}
Компилятор пропускает, но в области индикатора пусто.
Если поставить Line = diff, то линия есть. Если поставить diff_sum = (diff_sum + 1)/(CurrentIndex+1) линия есть. А складывать два значения double отказывается в принципе

Кто-нибудь знает что не так?