Как вывести информер по всем таймфреймам (TF)?

sergh67

Активный участник
Когда я начинал делать свои манипуляции, то я так и делал если я конечно правильно вас понял. Но у меня получалось что громоздилась куча переменных.
i,i1,i2,i3
limit,limit1,limit2,limit3
и так далее.
А функцией старт просто дублирую нечего не переименовывая. Мне казалось так правильней. О варианте без повторяющихся функций старт я думал, но хочется сделать как правильней. И я думал что решение надо искать именно с проблемой сведение буфера до простой переменной.
 

AlexeyVik

Программист mql4 mql5
А зачем городить limit'ы и start'ы? Всё гораздо проще. Начинаешь цикл... При каждой новой свече заполняешь массив и потом сравниваешь Arr с Arr[i+1] и по результату сравнения дальнейшие действия.
 

sergh67

Активный участник
Спасибо! Циклы объединить удалось. Действительно ничего сложного. С остальным еще придется ковыряться. Посмотрим что получится? Еще раз огромное спасибо!
 

sergh67

Активный участник
Вот еще такой вопрос тогда возник:
Предположим я далее объявлю новые переменные
double buf7_2=double buf7;
double buf8_2=double buf8;
Но вот тут у меня загвоздка. Как им назначить ТФ?
Я не знаю как это записать?
Предполагаю что что надо объявить их через custom.
Но даже если так, то я все равно не знаю как это сделать?
 

AlexeyVik

Программист mql4 mql5
Вот еще такой вопрос тогда возник:
Предположим я далее объявлю новые переменные
double buf7_2=double buf7;
double buf8_2=double buf8;

Но вот тут у меня загвоздка. Как им назначить ТФ?
Я не знаю как это записать?
Предполагаю что что надо объявить их через custom.
Но даже если так, то я все равно не знаю как это сделать?

Ну такая запись абсолютно неверна...
А мыслишь ты в правильном направлении. iCustom(символ, ТаймФрем, имяИндикатора, набор входящих параметров через запятую, буфер, бар)
Нулевой бар будет правильно воспринят кодом к любому ТФ.
 

sergh67

Активный участник
PHP:
double buf12= iCustom(Symbol(), TimeFrame1,"StormTrooper2", D2StochPer,D3tunnelPer,hot,sigsmooth, buf1, i)
Думаю что так.
Но все равно не знаю как это оформить, В каком месте вставить?
Мне это в диковинку.
 

AlexeyVik

Программист mql4 mql5
PHP:
double buf12= iCustom(Symbol(), TimeFrame1,"StormTrooper2", D2StochPer,D3tunnelPer,hot,sigsmooth, buf1, i)
Думаю что так.
Но все равно не знаю как это оформить, В каком месте вставить?
Мне это в диковинку.
Не совсем так, buf1 как я понял это твой динамический массив для отображения индикатора. А тебе надо определить какой буфер индикатора "StormTrooper2" тебе нужен. Если только один, то всё просто там буфер только 0.
 

sergh67

Активный участник
AlexeyVik: А вы не могли бы посмотреть еще один индикатор? Я что то в нем напортачил и теперь не знаю как выправить!
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Давай так сделаем.
Ты сам начинаешь разбираться и в тех местах где совсем запутаешься спрашиваешь, а я подсказываю.
 

sergh67

Активный участник
Спасибо за вебинар, -обязательно буду.
Что касается индикатора. Нашел давно некий 2х буферный индикатор. Сделал из него то что, видимо в терминале. Но еще вчера он у меня состоял из восьми буферов, хоть и выводил три линии. И это мне не давало покоя несколько месяцев.
Наконец вчера всяческими математическими расчетами я удалил из него пять лишних буферов, сделал так нужную 0 разметку по центру и как всегда добавил 2 цветных и обрадовавшись, удалил исходник. А вот сегодня я запустил его в тестере и оказывается он теперь, не работает.
Он мне крайне нужен!
Подскажите хоть в каком направлении искать? Я в растерянности.

PHP:
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 White
#property indicator_color2 Yellow
#property indicator_color3 Silver
#property indicator_color4 C'0,45,0'
#property indicator_color5 FireBrick

#property indicator_width2 3
#property indicator_width4 3
#property indicator_width5 3

#property indicator_level1 0
#property indicator_levelstyle 0
#property indicator_levelcolor Silver

extern int Periods  = 5;
extern int Periods2 = 9;


double buf1[];
double buf2[];
double buf3[];
double buf4[];
double buf5[];



int init(){
IndicatorBuffers(5);
SetIndexStyle (0,DRAW_LINE);
SetIndexBuffer(0,buf1);
SetIndexStyle (1,DRAW_LINE);
SetIndexBuffer(1,buf2);
SetIndexStyle (2,DRAW_LINE);
SetIndexBuffer(2,buf3);
SetIndexStyle (3,DRAW_LINE);
SetIndexBuffer(3,buf4);
SetIndexStyle (4,DRAW_LINE);
SetIndexBuffer(4,buf5);




SetIndexDrawBegin(1,Periods);
SetIndexDrawBegin(3,Periods2);

IndicatorShortName("BendCourse");
return(0);
}
int start(){
int i,limit;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Bars<=Periods) return(0);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(i=0; i<limit; i++)
buf2[i]=iMA(NULL,0,Periods2,0,MODE_EMA,PRICE_CLOSE,i);
for(i=0;i<limit; i++)
buf3[i]=iMAOnArray(buf2,Bars,Periods,0,MODE_EMA,i);
for(i=0;i<limit; i++)
buf2[i]=iMAOnArray(buf3,Bars,Periods,0,MODE_EMA,i);
for(i=0;i<limit-1; i++)
buf1[i] = (buf3[i]-buf3[i+1])/buf3[i+1]*50000;
for(i=0;i<limit-1;i++)
buf3[i]=(buf2[i]-buf2[i+1])/buf2[i+1]*50000;
for(i=0;i<limit-1;i++)
buf2[i]=iMAOnArray(buf3,Bars,Periods2,0,MODE_SMA,i);
for(i=0;i<limit-1;i++){
 buf4[i]=buf1[i];       
if(buf1[i] < buf1[i+1])
      buf4[i] = EMPTY_VALUE;
       buf5[i]=buf1[i];       
if(buf1[i] > buf1[i+1])
      buf5[i] = EMPTY_VALUE;
}
return(0);}
 
Последнее редактирование модератором:

chocolate

Гуру форума
Только, пожалуйста, большой код прячьте под спойлер.
 

AlexeyVik

Программист mql4 mql5
Спасибо за вебинар, -обязательно буду.
Что касается индикатора. Нашел давно некий 2х буферный индикатор. Сделал из него то что, видимо в терминале. Но еще вчера он у меня состоял из восьми буферов, хоть и выводил три линии. И это мне не давало покоя несколько месяцев.
Наконец вчера всяческими математическими расчетами я удалил из него пять лишних буферов, сделал так нужную 0 разметку по центру и как всегда добавил 2 цветных и обрадовавшись, удалил исходник. А вот сегодня я запустил его в тестере и оказывается он теперь, не работает.
Он мне крайне нужен!
Подскажите хоть в каком направлении искать? Я в растерянности.
Вот и правильно думал... Там всё действительно проще.
Зачем ты разделил заполнение индикаторных массивов и кусок определения цвета на два разных цикла???
Собери всё в один цикл и будет тебе счастье.

А если подробней, то ошибка в том, что limit после завершения первого цикла уже будет = 1 и второй цикл исполняется только при значениях 1 и 0.
Ты потрясающе невнимателен. Или просто думаешь, что 2 цикла плохо а 6 самый раз?
Обо всех таких ошибках планировалось говорить на вебинаре. С твоего согласия я возьму этот код для примера.
 

sergh67

Активный участник
Я сделал еще раз что мог, но все равно нечего не понимаю? Не могу найти ошибку!
Собираю как вы говорите все в один цикл, но у меня то один цвет то другой пропадает. или вообще не отображаются. Убираю массив с раскраской, все равно не работает в тестере. Не пойму нечего.
 

sergh67

Активный участник
Я уже раз 150 все перепробовал нечего не получается. Видать я от решения этой ошибки совсем долек.
 
Последнее редактирование:

sergh67

Активный участник
Ты потрясающе невнимателен. Или просто думаешь, что 2 цикла плохо а 6 самый раз?
Обо всех таких ошибках планировалось говорить на вебинаре. С твоего согласия я возьму этот код для примера.

AlexeyVik: может что нибудь по конкретнее подскажите?
Я уже все циклы менял объединял заново опять разделял 150 раз. Убирал раскраску и переставлял ее во все возможные места и тому подобное.
Нечего не выходит.
 

AlexeyVik

Программист mql4 mql5
AlexeyVik: может что нибудь по конкретнее подскажите?
Я уже все циклы менял объединял заново опять разделял 150 раз. Убирал раскраску и переставлял ее во все возможные места и тому подобное.
Нечего не выходит.
Всё это запланировано на вебинар. Это как раз и есть те ошибки которые повторяются из раза в раз.
 
Верх