В советнике индикатор прописан так:
double StochImpuls11=iCustom(NULL,0,"_my\\StochImpuls4",StochOverbought,StochOversold,StochKperiod,StochDperiod,StochSlowing,ModeAverage,0,1);
Открытие по сигналу:
if(StochImpuls11==1) { открывает ордер }
Код идникатора:
#property indicator_separate_window // Индик. рисуется в отдельном окне #property indicator_buffers 2 // Количество буферов #property indicator_color1 Lime // Цвет 1 линии #property indicator_color2 Red // Цвет 2 линии double Buf_0[],Buf_1[]; // Объявление массивов (под буферы индикатора) extern double StochOverbought=75; extern double StochOversold=25; extern int StochKperiod=14; // период линии K Стохастика extern int StochDperiod=3; // период линии D Стохастика extern int StochSlowing=3; // замедление Стохастика extern ENUM_MA_METHOD ModeAverage=MODE_LWMA; // Сглаживание Стохастика //-------------------------------------------------------------------- int init() // Специальная функция init() { SetIndexBuffer(0,Buf_0); // Назначение массива буферу SetIndexStyle (0,DRAW_HISTOGRAM,STYLE_SOLID,2);// Стиль линии SetIndexBuffer(1,Buf_1); // Назначение массива буферу SetIndexStyle (1,DRAW_HISTOGRAM,STYLE_SOLID,1);// Стиль линии return(INIT_SUCCEEDED); // Выход из спец. ф-ии init() } //-------------------------------------------------------------------- void start() // Специальная функция start() { int i, // Индекс бара Counted_bars; // Количество просчитанных баров //-------------------------------------------------------------------- Counted_bars=IndicatorCounted(); // Количество просчитанных баров i=100-Counted_bars-1; // Индекс первого непосчитанного (ограничение 100 баров) while(i>=0) // Цикл по непосчитанным барам { int UpSignal; int DownSignal; int UpMove; int DownMove; double st0=iStochastic(NULL,0,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i); // Значение Stochastic на текущем баре double st1=iStochastic(NULL,0,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i+1); // Значение Stochastic на предыдущем баре //-------------------------------------------------------------------- double DoneUpSignal; DoneUpSignal=0; int x1, sh1;//// номера баров x1=0; sh1=0; while (DoneUpSignal<1) { double w1st0=iStochastic(NULL,0,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i+sh1); // Значение Stochastic на текущем баре double w1st1=iStochastic(NULL,0,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i+sh1+1); // Значение Stochastic на предыдущем баре if (w1st0>StochOversold && w1st1<=StochOversold) { DoneUpSignal=1; x1=sh1; } sh1++; } UpSignal=x1; double DoneDownSignal; DoneDownSignal=0; int x2, sh2;//// номера баров x2=0; sh2=0; while (DoneDownSignal<1) { double w2st0=iStochastic(NULL,0,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i+sh2); // Значение Stochastic на текущем баре double w2st1=iStochastic(NULL,0,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i+sh2+1); // Значение Stochastic на предыдущем баре if (w2st0<StochOverbought && w2st1>=StochOverbought) { DoneDownSignal=1; x2=sh2; } sh2++; } DownSignal=x2; if(st0>StochOversold && st1<=StochOversold) { UpMove=1; } else { if(st0<StochOverbought && st1>=StochOverbought) { DownMove=2; } else { if(st0>StochOversold && UpSignal<DownSignal) { UpMove=1; } else { if(st0<StochOverbought && UpSignal>DownSignal) { DownMove=2; } } } } //-------------------------------------------------------------------- Buf_0[i]=UpMove; // Значение 0 буфера на i-ом баре Buf_1[i]=DownMove; // Значение 1 буфера на i-ом баре i--; // Расчёт индекса следующего бара } //-------------------------------------------------------------------- return; // Выход из спец. ф-ии start() }Подскажите почему не происходит открытия сделок? что не так с индикатором?
Integer:
В советнике через Print или через Comment выведите значение StochImpuls11, посмотрите что там. Упростите индикатор на время, закомментируйте основное и в буфер устанавливайте какой-нибудь значение, чтобы видеть в советнике если вообще связь с индикатором.
В советнике изменил условие на открытие...
Открытие по сигналу:
if(StochImpuls11>1) { открывает ордер }Сделки советник начал открывать. Таким образом. получается, что индикатор передает в советник совершенно другие значения, нежели те по которым индикатор строит гистограмму. Как такое может быть?
В советнике изменил условие на открытие...
Открытие по сигналу:
Сделки советник начал открывать.Таким образом. получается, что индикатор передает в советник совершенно другие значения, нежели те по которым индикатор строит гистограмму.Как такое может быть?а так:
if(StochImpuls11>1 && StochImpuls11 != EMPTY_VALUE) { открывает ордер }
а так:
Не открывает.
В советнике через Print выдает значение StochImpuls11=2147483647, при чем на каждом баре одно и тоже значение.При этом индикатор отображается корректно.В чем может быть проблема?
Это число означает пустой буфер EMPTY_VALUE, то есть индикаторный буфер пуст, возможно не к тому буферу обращаетесь раз на графике он работает.
В советнике идет обращение к буферу 0, вот код:
double StochImpuls11=iCustom(NULL,0,"_my\\StochImpuls4",StochOverbought,StochOversold,StochKperiod,StochDperiod,StochSlowing,ModeAverage,0,1);
В индикаторе Buf_0 строит зеленые столбцы - http://prntscr.com/8ilynh
Видимо проблема в чем то другом.
В советнике идет обращение к буферу 0, вот код:
В индикаторе Buf_0 строит зеленые столбцы - http://prntscr.com/8ilynh
Видимо проблема в чем то другом.
Проверьте чему равна i при первом запуске и последующих
//-------------------------------------------------------------------- Counted_bars=IndicatorCounted(); // Количество просчитанных баров i=100-Counted_bars-1; // Индекс первого непосчитанного (ограничение 100 баров)
В советнике через Print выдает значение StochImpuls11=2147483647, при чем на каждом баре одно и тоже значение.При этом индикатор отображается корректно.В чем может быть проблема?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сделал советника на самописном индикаторе.
Проблема в том, что советник не открывает сделки по сигналам индикатора.
Советник проверен на других индикаторах - все работает корректно.
Индикатор стоит визуализацию (гистограмму) правильно.
Получается проблема именно в связке советника с этим индикатором.
Подскажите в чем может быть проблема или как ее определить?