Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1245

Добавлено: evge » 08 фев 2016, 15:53

Тема: Re: Линии ABC

Текст сообщения:

Лучше поставить отображать последние значение.

Двигаться уровни будут кратно Dell, что сделано через Math.Ceiling()...

Всё пляшет от текущей цены (последний отображаемый на графике бар) с шагом Dell.

Dell должно быть >= 1

Индикатор рассчитывается только для текущего бара и отображает уровни и задает серии (если понадобится его использовать в стратегиях, т.к. уровни недоступны). Это позволит двигая график в истории получать значения именно для последнего отображаемого бара.

делается это через условие:

Код: Выделить всё

if (CurrentIndex != MaxIndex) return;


LevelBase-01.png
LevelBase-01.png (44.24 КБ) 30453 просмотра


Код: Выделить всё

function Initialize()
{
IndicatorName = "Level_ABC";
PriceStudy = true;
AddInput("Input", Inputs.Price);
AddSeries("A", DrawAs.Line, Color.Gray);
AddSeries("B", DrawAs.Line, Color.Gray);
AddSeries("C", DrawAs.Line, Color.Gray);
AddSeries("D", DrawAs.Line, Color.Gray);
AddSeries("E", DrawAs.Line, Color.Gray);
AddSeries("St_bay_A", DrawAs.Line, Color.Blue);
AddSeries("St_sell_A", DrawAs.Line, Color.Blue);
AddSeries("St_bay_B", DrawAs.Line, Color.Blue);
AddSeries("St_sell_B", DrawAs.Line, Color.Blue);
AddSeries("St_bay_C", DrawAs.Line, Color.Blue);
AddSeries("St_sell_C", DrawAs.Line, Color.Blue);
AddSeries("St_bay_D", DrawAs.Line, Color.Blue);
AddSeries("St_sell_D", DrawAs.Line, Color.Blue);
AddSeries("St_bay_E", DrawAs.Line, Color.Blue);
AddSeries("St_sell_E", DrawAs.Line, Color.Blue);

AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 
AddLevel(0, Color.Blue, "X"); 

AddParameter("Dell", 1.5, 0);
}

function Evaluate()
{
// Область расчета значения индикатора

if (CurrentIndex != MaxIndex) return;

A = Math.Ceiling(Input.Close[0] / Dell) * Dell - Dell * 2;
St_bay_A = A - 0.25*Dell;
St_sell_A = A + 0.25*Dell;
Levels[0].Level = St_bay_A;
Levels[1].Level = St_sell_A;

B = A + Dell;
St_bay_B = B - 0.25*Dell;
St_sell_B = B + 0.25*Dell;
Levels[2].Level = St_bay_B;
Levels[3].Level = St_sell_B;

C = B + Dell;
St_bay_C = C - 0.25*Dell;
St_sell_C = C + 0.25*Dell;
Levels[4].Level = St_bay_C;
Levels[5].Level = St_sell_C;

D = C + Dell;
St_bay_D = D - 0.25*Dell;
St_sell_D = D + 0.25*Dell;
Levels[6].Level = St_bay_D;
Levels[7].Level = St_sell_D;

E = D + Dell;
St_bay_E = E - 0.25*Dell;
St_sell_E = E + 0.25*Dell;
Levels[8].Level = St_bay_E;
Levels[9].Level = St_sell_E;

}