Страница 3 из 6

Re: Линии ABC

Добавлено: 04 мар 2016, 12:37
Gerig
Мое видение такое:
- индикатор должен быть универсальным не привязанным к какому либо инструменту. Изначально нет смысла задавать параметр равный 0. Отображение на графике будет не удобным, да и цена может не пробить такие низкие уровни. На мой взгляд целесообразным было бы присвоить самое первое значение например - Input.Low[0] или Input.Close[0] или Input.High[0], а уже потом рассчитывать другие уровни. -Спорным на мой взгляд плюсовать фиксированные значения, а не значения выраженные в процентах или коэффициентах к самому первому значению.
- необходимо учитывать значение волатильности, поскольку при маленьком значении параметра сетка будет очень мелкой и внутри одной свечи будет пробивать несколько уровней. Либо надо продумать автоматическое формирование коэффициента для расчета сетки с учетом волатильности.
- смысла в таком количестве линий нет. Максимальное значение 5.

Вы могли бы с учетом этих соображений описать алгоритм работы индикатора?

Re: Линии ABC

Добавлено: 04 мар 2016, 14:22
Avialr
В том то и дело – что хотелось упростить методику расчета (поэтому целые числа и взяты для начала и т.д.)
Если делать универсальным – то шаг можно обозначить как 1%
Волатильнисть в данном случае не влияет – т.к. логика будет соблюдаться при любой длине свечи (будет пробиваться последовательно несколько уровней) – если цена развернулась и одной свечкой ушла далеко (то тут никак не подстрахуешься – т.к. анализ идет по закрытой предыдущей свече)
Отображать линии можно максимально прозрачно на поле.
Возможно много линий и не нужно – мне допустим удобнее смотреть видя линии – в противном случае автоматически меняется масштаб поля в котором при разном масштабе 1 руб будет равен 2 рублям зрительно

Re: Линии ABC

Добавлено: 05 мар 2016, 10:27
Gerig
Ясно. Немного начинает проясняться. С точки зрения создания алгоритма работы индикатора абсолютно все равно прибавлять 1.5 рубля или прибавлять 1%, умножая значение на 1.01 в этом как раз никакого упрощения нет. Вы сказали волатильность ни при чем. Тогда такой вопрос: если цена в одной свечке пробила несколько уровней и затем вернулась к прежнему значению (open = close), то какой уровень считать главным?

Re: Линии ABC

Добавлено: 05 мар 2016, 12:45
Avialr
Я так понимаю речь идет - о "волчке" длинном?
В данном случае главным уровнем будет тот - который перебила цена закрытия (тень не учитываем)
если цена осталась там же - значит уровень тот же

Re: Линии ABC

Добавлено: 05 мар 2016, 12:48
Avialr
Раньше описывал с тенью - но данный момент не учитывал.
Надо будет смотреть по истории - т.к. такой длинный хвост редкость - поэтому вариант с учетом хвостика не откидываю.

Re: Линии ABC

Добавлено: 05 мар 2016, 13:08
Gerig
Avialr писал(а):Я так понимаю речь идет - о "волчке" длинном?
В данном случае главным уровнем будет тот - который перебила цена закрытия (тень не учитываем)
если цена осталась там же - значит уровень тот же

Я признаться не понял. Если цена в момент пока еще свеча не закрыта пробила, предположим уровень вверх, а затем опустилась на прежний уровень открытия или опустилась ниже уровня открытия, то главным, мы посчитаем пробитый вверх уровень? Или не будем его пересчитывать и оставим его, таким как на предыдущей свече? Или такой вариант: если цена в момент пока еще свеча не закрыта пробила, предположим уровень вверх, а затем опустилась ниже открытия и пробила уровень вниз. Какой уровень считать?

Re: Линии ABC

Добавлено: 05 мар 2016, 13:45
Avialr
Я признаться не понял. Если цена в момент пока еще свеча не закрыта пробила, предположим уровень вверх, а затем опустилась на прежний уровень открытия или опустилась ниже уровня открытия, то главным, мы посчитаем пробитый вверх уровень? Или не будем его пересчитывать и оставим его, таким как на предыдущей свече? Или такой вариант: если цена в момент пока еще свеча не закрыта пробила, предположим уровень вверх, а затем опустилась ниже открытия и пробила уровень вниз. Какой уровень считать?[/quote]

Ориентируемся на цену закрытия (возможно 3 варианта):
1. цена закрытия выше цены открытия (при этом прибит следующий уровень) - пробитый уровень становится главным
2. цена закрытия ниже цены открытия (при этом прибит следующий уровень) - пробитый уровень становится главным
3. цена закрытия выше/ниже цены открытия (при этом новый уровень не перебит) - старый уровень остается главным
хвостик не нужно учитывать

Мое понимание работы программы - когда свеча уже закрыта - данные берутся от предыдущей закрытой свечи (соответственно варианта - когда свеча еще не закрыта - быть не может)

Re: Линии ABC

Добавлено: 05 мар 2016, 22:39
Gerig
В первом приближении, что то на вроде этого:

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

function Initialize()
{
IndicatorName = "Main_Level";       
PriceStudy = true;
AddInput("Input", Inputs.Candle);       
AddSeries("ML", DrawAs.Custom, Color.Blue); 
AddSeries("MP", DrawAs.Custom, Color.Green);
AddSeries("MM", DrawAs.Custom, Color.Red);
AddGlobalVariable("Main_Plus", Types.Double,  0);       
AddGlobalVariable("Main_L", Types.Double,  0); 
AddGlobalVariable("Main_Minus", Types.Double,  0);
AddGlobalVariable("swich_bar", Types.Int,  0);               
}

function Evaluate()
{
// AlfaDirect 2015.
// Indicator MAIN LEVEL
  if (CurrentIndex < 2)
  {
    Main_L = Input.Close[0];          //Первое значение присваивается Главному уровню
    Main_Plus = 1.01*Input.Close[0];  //Первое значение уровню плюс 1% от Главного
    Main_Minus = 0.99*Input.Close[0]; //Первое значение уровню минус 1% от Главного
  }
  else
  {
    if(Input.Close[0] > Main_Plus) 
    {
     Main_L = Input.Close[0];           
     Main_Plus = 1.01*Input.Close[0];   
     Main_Minus = 0.99*Input.Close[0];
     swich_bar = CurrentIndex; // бар на котором произошло переключение
    }
    if(Input.Close[0] < Main_Minus)
    {
     Main_L = Input.Close[0];           
     Main_Plus = 1.01*Input.Close[0];   
     Main_Minus = 0.99*Input.Close[0];
     swich_bar = CurrentIndex; // бар на котором произолшо переключение
    }
    ML = Main_L;
    MM = Main_Minus;
    MP = Main_Plus;
  }
  ML.DrawDash();
  MM.DrawDash();
  MP.DrawDash();
}




[img]C:\Users\Gerig\OneDrive\Изображения\Снимки%20экрана\2016-03-06.png[/img]

Re: Линии ABC

Добавлено: 06 мар 2016, 17:31
Avialr
Во вложении вручную сделал - то что хотелось бы получить.
Стрелочками отметил моменты - когда направление цены не изменилось - но уровень поменялся
Уровни 0,25 и - 0,25 - нужны активными

Re: Линии ABC

Добавлено: 06 мар 2016, 17:52
Gerig
Чего то я совсем не понимаю, что вы хотите...