Зигзаг на основе данных стохастика - страница 2

 

Пока добавлен пустой цикл, его только предстоит наполнить :)

//---- last counted bar will be recounted
   i=Bars-draw_begin1-1;
   if(counted_bars>draw_begin1) i=Bars-counted_bars-1;
   while(i>0) {

//  Сюда нужно добавлять код 

    i--;
   }
//----
 
Candid писал(а) >>

Мы их ещё не нашли, мы только нарисовали линии стохастика.

А для отображения нужно будет в шапке заменить #property indicator_separate_window на #property indicator_chart_window, добавить буфер для зигзага а буферы стохастика превратить в рабочие (то есть сделать неотображаемыми). Но это можно в конце, типа "ёлочку украсить". Или проблема именно в этом

Мне хотелось бы видеть линии где перекается стохастик на графике торговли, есть еще условия но у меня проблема именно чтобы изначально этот так называемый зиг-заг основанный на стохастике был нарисован на графике...
 
egorval >>:
Мне хотелось бы видеть линии где перекается стохастик на графике торговли, есть еще условия но у меня проблема именно чтобы изначально этот так называемый зиг-заг основанный на стохастике был нарисован на графике...

Для индикатора в отдельном окне на графике можно рисовать только объектами. Нарисовать так ЗЗ вполне можно, хотя попыхтеть над кодом, я думаю, придётся.

Проще сделать для ЗЗ отдельный индикатор и вешать на график и его и стохастик.

 
Candid писал(а) >>

Для индикатора в отдельном окне на графике можно рисовать только объектами. Нарисовать так ЗЗ вполне можно, хотя попыхтеть над кодом, я думаю, придётся.

Проще сделать для ЗЗ отдельный индикатор и вешать на график и его и стохастик.

Вот и думаю как это сделать... суть ловить подъем стохастика выше 20-50% и падение с 80, стохастик можно сделать и невидимым можно и повешеть...

 
egorval >>:

Вот и думаю как это сделать... суть ловить подъем стохастика выше 20-50% и падение с 80, стохастик можно сделать и невидимым можно и повешеть...

Я так и не понял, что именно есть проблема: нарисовать с помощью OBJ_TREND рассчитанный ЗЗ или рассчитать его.

 
Candid писал(а) >>

Я так и не понял, что именно есть проблема: нарисовать с помощью OBJ_TREND рассчитанный ЗЗ или рассчитать его.

Я не знаю как это сделать и рассчитать на основании стохастика и нарисовать

 
egorval >>:

Я не знаю как это сделать и рассчитать на основании стохастика и нарисовать

Хорошо, тогда надо начинать с расчёта. Первый шаг - сделать так, чтобы индикатор нарисовал картинку, с которой вы начали тему. Хотя там многие пересечения пропущены, индикатор придётся отдельно учить таким пропускам.

Итак, у нас есть заполненные буфер основной линии MainBuffer[i] и буфер сигнальной линии SignalBuffer[i].

Нам придётся добавлять переменные, описывать их лучше глобально.

Для начала заведём переменные для текущего и предыдущего значений линий стохастика, пусть double MB1, MB2, SB1, SB2;

Далее заведём сигнальную переменную, пусть int Sgn = 0; и договоримся, что для пересечения "вверх" это будет -1, для пересечения "вниз" это будет +1, при отсутствии пересечения это будет 0.

Теперь внутри нашего добавленного цикла пишем:

    MB1 = MainBuffer[i];
    MB2 = MainBuffer[i+1];
    SB1 = SignalBuffer[i];
    SB2 = SignalBuffer[i+1];
    Sgn = 0;
// Ловим пересечения    
    if (MB2 >= SB2 && MB1 < SB1) Sgn = -1;
    if (MB2 <= SB2 && MB1 > SB1) Sgn = 1;


Осталось поставить стрелку в точке Time[i] если Sgn отлично от 0, это Вы должны сделать сами, я не собираюсь писать здесь индикатор полностью.
 
Candid писал(а) >>

Хорошо, тогда надо начинать с расчёта. Первый шаг - сделать так, чтобы индикатор нарисовал картинку, с которой вы начали тему. Хотя там многие пересечения пропущены, индикатор придётся отдельно учить таким пропускам.

Итак, у нас есть заполненные буфер основной линии MainBuffer[i] и буфер сигнальной линии SignalBuffer[i].

Нам придётся добавлять переменные, описывать их лучше глобально.

Для начала заведём переменные для текущего и предыдущего значений линий стохастика, пусть double MB1, MB2, SB1, SB2;

Далее заведём сигнальную переменную, пусть int Sgn = 0; и договоримся, что для пересечения "вверх" это будет -1, для пересечения "вниз" это будет +1, при отсутствии пересечения это будет 0.

Теперь внутри нашего добавленного цикла пишем:

Осталось поставить стрелку в точке Time[i] если Sgn отлично от 0, это Вы должны сделать сами, я не собираюсь писать здесь индикатор полностью.

Большое спасибо.... Когда я допишу полностью модуль я обязательно поделюсь. Просто немного разобраться необхадимо

Причина обращения: