Ответить
15.02.2013, 11:54
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
Когда я начинал делать свои манипуляции, то я так и делал если я конечно правильно вас понял. Но у меня получалось что громоздилась куча переменных.
i,i1,i2,i3
limit,limit1,limit2,limit3
и так далее.
А функцией старт просто дублирую нечего не переименовывая. Мне казалось так правильней. О варианте без повторяющихся функций старт я думал, но хочется сделать как правильней. И я думал что решение надо искать именно с проблемой сведение буфера до простой переменной.
15.02.2013, 13:29
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
А зачем городить limit'ы и start'ы? Всё гораздо проще. Начинаешь цикл... При каждой новой свече заполняешь массив и потом сравниваешь Arr[i] с Arr[i+1] и по результату сравнения дальнейшие действия.
15.02.2013, 13:39
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
Спасибо! Циклы объединить удалось. Действительно ничего сложного. С остальным еще придется ковыряться. Посмотрим что получится? Еще раз огромное спасибо!
15.02.2013, 13:57
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
Вот еще такой вопрос тогда возник:
Предположим я далее объявлю новые переменные
double buf7_2=double buf7[i];
double buf8_2=double buf8[i];
Но вот тут у меня загвоздка. Как им назначить ТФ?
Я не знаю как это записать?
Предполагаю что что надо объявить их через custom.
Но даже если так, то я все равно не знаю как это сделать?
15.02.2013, 14:14
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
Вот еще такой вопрос тогда возник:
Предположим я далее объявлю новые переменные
double buf7_2=double buf7[i];
double buf8_2=double buf8[i];

Но вот тут у меня загвоздка. Как им назначить ТФ?
Я не знаю как это записать?
Предполагаю что что надо объявить их через custom.
Но даже если так, то я все равно не знаю как это сделать?
Ну такая запись абсолютно неверна...
А мыслишь ты в правильном направлении. iCustom(символ, ТаймФрем, имяИндикатора, набор входящих параметров через запятую, буфер, бар)
Нулевой бар будет правильно воспринят кодом к любому ТФ.
15.02.2013, 14:54
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
PHP код:
double buf12iCustom(Symbol(), TimeFrame1,"StormTrooper2"D2StochPer,D3tunnelPer,hot,sigsmoothbuf1i
Думаю что так.
Но все равно не знаю как это оформить, В каком месте вставить?
Мне это в диковинку.
15.02.2013, 20:56
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
PHP код:
double buf12iCustom(Symbol(), TimeFrame1,"StormTrooper2"D2StochPer,D3tunnelPer,hot,sigsmoothbuf1i
Думаю что так.
Но все равно не знаю как это оформить, В каком месте вставить?
Мне это в диковинку.
Не совсем так, buf1 как я понял это твой динамический массив для отображения индикатора. А тебе надо определить какой буфер индикатора "StormTrooper2" тебе нужен. Если только один, то всё просто там буфер только 0.
17.02.2013, 06:21
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
AlexeyVik: А вы не могли бы посмотреть еще один индикатор? Я что то в нем напортачил и теперь не знаю как выправить!

Последний раз редактировалось sergh67; 17.02.2013 в 06:30.
17.02.2013, 06:48
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
Давай так сделаем.
Ты сам начинаешь разбираться и в тех местах где совсем запутаешься спрашиваешь, а я подсказываю.
17.02.2013, 07:09
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
Спасибо за вебинар, -обязательно буду.
Что касается индикатора. Нашел давно некий 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>0counted_bars--;
limit=Bars-counted_bars;
for(
i=0i<limiti++)
buf2[i]=iMA(NULL,0,Periods2,0,MODE_EMA,PRICE_CLOSE,i);
for(
i=0;i<limiti++)
buf3[i]=iMAOnArray(buf2,Bars,Periods,0,MODE_EMA,i);
for(
i=0;i<limiti++)
buf2[i]=iMAOnArray(buf3,Bars,Periods,0,MODE_EMA,i);
for(
i=0;i<limit-1i++)
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; 17.02.2013 в 07:29.
17.02.2013, 07:29
Аватар для chocolate
chocolate chocolate вне форума Администратор
Регистрация: 18.06.2010 / Адрес: Россия/Тольятти / Сообщений: 3,630
Поблагодарили 3,144 раз(а) / Репутация: 3199
Только, пожалуйста, большой код прячьте под спойлер.
FAQ по форуму или ответы на все вопросы пользователей

Как вставить видео с Youtube?


Модератор - он не надзиратель, а дружественный пользователю участник. (с)

Есть вопросы по форуму? С радостью отвечу.

Биржевые линейки
17.02.2013, 07:33
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
Спасибо за вебинар, -обязательно буду.
Что касается индикатора. Нашел давно некий 2х буферный индикатор. Сделал из него то что, видимо в терминале. Но еще вчера он у меня состоял из восьми буферов, хоть и выводил три линии. И это мне не давало покоя несколько месяцев.
Наконец вчера всяческими математическими расчетами я удалил из него пять лишних буферов, сделал так нужную 0 разметку по центру и как всегда добавил 2 цветных и обрадовавшись, удалил исходник. А вот сегодня я запустил его в тестере и оказывается он теперь, не работает.
Он мне крайне нужен!
Подскажите хоть в каком направлении искать? Я в растерянности.
Вот и правильно думал... Там всё действительно проще.
Зачем ты разделил заполнение индикаторных массивов и кусок определения цвета на два разных цикла???
Собери всё в один цикл и будет тебе счастье.

А если подробней, то ошибка в том, что limit после завершения первого цикла уже будет = 1 и второй цикл исполняется только при значениях 1 и 0.
Ты потрясающе невнимателен. Или просто думаешь, что 2 цикла плохо а 6 самый раз?
Обо всех таких ошибках планировалось говорить на вебинаре. С твоего согласия я возьму этот код для примера.
17.02.2013, 07:37
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
Только, пожалуйста, большой код прячьте под спойлер.
Если вместо тега php пользоваться тегом code - это кнопка с изображением # то окно будет с вертикальной полосой прокрутки.
17.02.2013, 08:24
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
Я сделал еще раз что мог, но все равно нечего не понимаю? Не могу найти ошибку!
Собираю как вы говорите все в один цикл, но у меня то один цвет то другой пропадает. или вообще не отображаются. Убираю массив с раскраской, все равно не работает в тестере. Не пойму нечего.
17.02.2013, 09:35
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
Я уже раз 150 все перепробовал нечего не получается. Видать я от решения этой ошибки совсем долек.

Последний раз редактировалось sergh67; 17.02.2013 в 09:40.
17.02.2013, 14:39
Аватар для sergh67
sergh67 sergh67 вне форума Активный участник
Регистрация: 02.08.2012 / Сообщений: 193
Поблагодарили 50 раз(а) / Репутация: 51
Ты потрясающе невнимателен. Или просто думаешь, что 2 цикла плохо а 6 самый раз?
Обо всех таких ошибках планировалось говорить на вебинаре. С твоего согласия я возьму этот код для примера.
AlexeyVik: может что нибудь по конкретнее подскажите?
Я уже все циклы менял объединял заново опять разделял 150 раз. Убирал раскраску и переставлял ее во все возможные места и тому подобное.
Нечего не выходит.
17.02.2013, 16:16
Аватар для ale002
ale002 ale002 вне форума ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,510 раз(а) / Репутация: 2536
limit=Bars-counted_bars;

на

limit=Bars;

заменить не пробовали?
17.02.2013, 16:20
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
limit=Bars-counted_bars;

на

limit=Bars;

заменить не пробовали?
А что из этого получится представить можешь?
17.02.2013, 16:22
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
AlexeyVik: может что нибудь по конкретнее подскажите?
Я уже все циклы менял объединял заново опять разделял 150 раз. Убирал раскраску и переставлял ее во все возможные места и тому подобное.
Нечего не выходит.
Всё это запланировано на вебинар. Это как раз и есть те ошибки которые повторяются из раза в раз.
17.02.2013, 16:22
Аватар для ale002
ale002 ale002 вне форума ::: __,,,^._.^,,,__ :::
Регистрация: 28.02.2010 / Сообщений: 1,246
Поблагодарили 2,510 раз(а) / Репутация: 2536
А что из этого получится представить можешь?
Заработает
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 02:51. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO