senszevs Опубликовано 21 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 21 февраля, 2020 Всем добрый день. Срочно нужна ваша помощь. Помогите прикрутить алерт в сплывающем окне к индикатарам BrainTrend2Sig.ex4 BrainTrend2Sig.mq4 LabTrend1_v4.ex4 LabTrend1_v4.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
TheBestA Опубликовано 21 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 21 февраля, 2020 В 14.02.2020 в 22:36, Rever27 сказал: попробуй такой вариант: строки 114-122 Color Levels z.mq4 52 \u043a\u0411 · 0 загрузок Спасибо! Не совсем коректно задал вопрос, мне нужна была центровка только по Х (но может еще передумаю ). Исправил в такой вариант : Прикреплю исправленный исходник, может кому-то понадобиться. Color Levels c.mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MakarFX Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 Всем привет. Нужна помощь. Есть индикатор Я его чуток подредактировал ExtMapBuffer1[i]=iRSI(NULL,TimeFrame,RSIperiod,applied_price,y); if (ExtMapBuffer1[i] > LevUpRSI) { UpRSI[i]=ExtMapBuffer1[i]; DnRSI[i]=EMPTY_VALUE; } else if (ExtMapBuffer1[i] < LevDnRSI) { DnRSI[i]=ExtMapBuffer1[i]; UpRSI[i]=EMPTY_VALUE; } и получилось это Хочу добавить стрелки на график, пробовал это ExtMapBuffer1[i]=iRSI(NULL,TimeFrame,RSIperiod,applied_price,y); if (ExtMapBuffer1[i] > LevUpRSI) { UpRSI[i]=ExtMapBuffer1[i]; DnRSI[i]=EMPTY_VALUE; ObjectCreate(0,"ArUpRSI",OBJ_ARROW,0,Time[i],High[i]+100*Point); ObjectSet("ArUpRSI",OBJPROP_ARROWCODE,218); ObjectSet("ArUpRSI",OBJPROP_COLOR,clrCrimson); } else if (ExtMapBuffer1[i] < LevDnRSI) { DnRSI[i]=ExtMapBuffer1[i]; UpRSI[i]=EMPTY_VALUE; ObjectCreate(0,"ArDnRSI",OBJ_ARROW,0,Time[i],Low[i]); ObjectSet("ArDnRSI",OBJPROP_ARROWCODE,217); ObjectSet("ArDnRSI",OBJPROP_COLOR,clrTeal); } но не рисует все стрелки( Кто знает, подскажите, пожалуйста, что не так. Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MakarFX Дай код свое ЧУДА. Где нужно прорисовать чудо, на графике ли в под окне? Изменено 23 февраля, 2020 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
MakarFX Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MikR0ReR Вот код Спойлер //+------------------------------------------------------------------+ //| MTF_RSI.mq4 | //| Copyright © 2006, Keris2112 | //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Keris2112" #property link "http://www.forex-tsd.com" //---- #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 DodgerBlue #property indicator_level1 30 #property indicator_level2 70 #property indicator_minimum 0 #property indicator_maximum 100 //---- extern int TimeFrame=0; extern int RSIperiod=14; extern int applied_price=0; //---- double ExtMapBuffer1[]; double UpRSI[]; double DnRSI[]; int LevUpRSI = 70; int LevDnRSI = 30; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicator line SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_ARROW,0,2,clrTeal); SetIndexLabel(1,"DnRSI"); SetIndexBuffer(1,DnRSI); SetIndexArrow(1,159); SetIndexStyle(2,DRAW_ARROW,0,2,clrCrimson); SetIndexLabel(2,"UpRSI"); SetIndexBuffer(2,UpRSI); SetIndexArrow(2,159); //---- name for DataWindow and indicator subwindow label switch(TimeFrame) { case 1 : string TimeFrameStr="Period_M1"; break; case 5 : TimeFrameStr="Period_M5"; break; case 15 : TimeFrameStr="Period_M15"; break; case 30 : TimeFrameStr="Period_M30"; break; case 60 : TimeFrameStr="Period_H1"; break; case 240 : TimeFrameStr="Period_H4"; break; case 1440 : TimeFrameStr="Period_D1"; break; case 10080 : TimeFrameStr="Period_W1"; break; case 43200 : TimeFrameStr="Period_MN1"; break; default : TimeFrameStr="Current Timeframe"; } IndicatorShortName("MTF_RSI("+(string)RSIperiod+") ("+TimeFrameStr+")"); return(0); } //---- //+------------------------------------------------------------------+ //| MTF RSI | //+------------------------------------------------------------------+ int start() { datetime TimeArray[]; int i,limit,y=0,counted_bars=IndicatorCounted(); // Plot defined time frame on to current time frame ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); limit=Bars-counted_bars; for(i=0,y=0;i<limit;i++) { if (Time[i]<TimeArray[y]) y++; //---- ExtMapBuffer1[i]=iRSI(NULL,TimeFrame,RSIperiod,applied_price,y); if (ExtMapBuffer1[i] > LevUpRSI) { UpRSI[i]=ExtMapBuffer1[i]; DnRSI[i]=EMPTY_VALUE; ObjectCreate(0,"ArUpRSI",OBJ_ARROW,0,Time[i],High[i]+100*Point); ObjectSet("ArUpRSI",OBJPROP_ARROWCODE,218); ObjectSet("ArUpRSI",OBJPROP_COLOR,clrCrimson); } else if (ExtMapBuffer1[i] < LevDnRSI) { DnRSI[i]=ExtMapBuffer1[i]; UpRSI[i]=EMPTY_VALUE; ObjectCreate(0,"ArDnRSI",OBJ_ARROW,0,Time[i],Low[i]); ObjectSet("ArDnRSI",OBJPROP_ARROWCODE,217); ObjectSet("ArDnRSI",OBJPROP_COLOR,clrTeal); } } //---- return(0); } //----------------------------+ void deinit() { ObjectDelete("ArDnRSI"); ObjectDelete("ArUpRSI"); return; } //+------------------------------------------------------------------+ Стрелки нужны на графике. Изменено 23 февраля, 2020 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MakarFX Блок "Код" предназначен для вставки части кода, а не всего индикатора. ObjectCreate(0,"ArUpRSI",OBJ_ARROW,0,Time[i],High[i]+100*Point); ObjectSet("ArUpRSI",OBJPROP_ARROWCODE,218); ObjectSet("ArUpRSI",OBJPROP_COLOR,clrCrimson); При работе с объектами их имена должны быть уникальными. У тебя же только два имени, поэтому отображаются только две последние стрелки. Чтоб создать "Чудик имя" поступим так Вот это имя будет уникальное всегда. ObjectCreate(0,"ArDnRSI"+Time[i],OBJ_ARROW,0,Time[i],Low[i]-100*Point); Вот это не будет работать после первого прохода (просчета) после запуска индикатора, поэтому не уникальное имя. ObjectCreate(0,"ArDnRSI"+i,OBJ_ARROW,0,Time[i],Low[i]-100*Point); Да, в ObjectSet() не забудь обратится к вновь испеченному имени. Чуди дальше. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MakarFX Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MikR0ReR Спасибо. Я понял ошибку. А как теперь задать правильно удаление объектов? Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MakarFX StringFind(), ObjectName(), ObjectsTotal(), ArUpRSI как минимум так. Ссылка на сообщение Поделиться на другие сайты More sharing options...
MakarFX Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MikR0ReR Спасибо, но то, что Вы написали для меня "китайская грамота". Спасибо за помощь. Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MakarFX Значит с этим справился, ObjectCreate() ObjectSet() ObjectCreate(0,"ArUpRSI"+Time[i],OBJ_ARROW,0,Time[i],High[i]+100*Point); ObjectSet("ArUpRSI",OBJPROP_ARROWCODE,218); ObjectSet("ArUpRSI",OBJPROP_COLOR,clrCrimson); а с тем нет? Ссылка на сообщение Поделиться на другие сайты More sharing options...
MakarFX Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MikR0ReR Предыдущие функции хорошо описаны в справочнике( с примерами), а эти StringFind(), ObjectName(), ObjectsTotal() обстрактно(для меня). Вопрос решил так void deinit() { ObjectsDeleteAll(0,0,OBJ_ARROW); return; } Возможно не по правилам, но работает) Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MakarFX Все по правилам! Я думаю не будет для тебя секретом, что удалятся и другие обьектя от других индикаторов. Смысл таков получаем общее количество обьектов ObjectsTotal() в цикле получаем имя обьекта ObjectName() сравниваем полученное имя с искомым StringFind(), искомое имя ArDnRSI и ArUpRSI т.е мы проверяем присутствие ArDnRSI и ArUpRSI в тех полученных именах присутствие есть, значит удаляем 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MakarFX Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MikR0ReR Вот в справочнике написано int ObjectsDeleteAll( long chart_id, // идентификатор графика const string prefix, // префикс имени объекта int sub_window=EMPTY, // индекс окна int object_type=EMPTY // тип объекта для удаления ); но когда я делаю так(указываю префикс) ObjectsDeleteAll(0,"Ar",0,OBJ_ARROW); Другие объекты тоже удаляются( Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 22 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 22 февраля, 2020 @MakarFX Значит у них имя начинается тоже на AR 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MakarFX Опубликовано 23 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 23 февраля, 2020 @MikR0ReR Да, спасибо!!! Поменял имя и все работает. Еще раз большое спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 23 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 23 февраля, 2020 @MakarFX в моем случае я искал OBJ_HLINE и название линий у меня хранилось в LineName int nL = ObjectsTotal(); string name; for(int n = nL-1; n >=0; n--) { name = ObjectName(n); if(ObjectType(name)!=OBJ_HLINE) continue; int nch = StringFind(name, LineName); if(nch == 0) ObjectDelete(name); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
agimat81 Опубликовано 29 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 29 февраля, 2020 Добрый день! Перешел на мт5 но есть проблема мой грааааль)) для мт4! Помогите конвертировать на мт5 люди добрые не оставляйте сироту в беде( Заранее премного благодарен! Flexi_bars_swing_v2_Alert(trueforex.pp.ua).mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 29 февраля, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 29 февраля, 2020 @agimat81 Данная ветка предназначена для доработки, помощи,а не для написания с нуля. Попробуй перевести сам код, где не получится, помогу. Учись! Я посмотрел код, там всего лишь 10% нужно подправить под MQL5. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
alexavb Опубликовано 1 марта, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 1 марта, 2020 Уважаемые гуру! Можно прикрутить алерты на уровни 6 и 9 к данному индикатору? Сама система ручной торговли в архиве. Там же и мануал. 88_filter.mq4 ТС Static Pips.zip Ссылка на сообщение Поделиться на другие сайты More sharing options...
sforex58 Опубликовано 1 марта, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 1 марта, 2020 Добрый день. Помогите доработать индикатор. Он отображает на графике зоны одинаковые на все дни недели. Нужно чтобы была возможность задать зоны на каждый день недели отдельно. Спойлер //+------------------------------------------------------------------+ //| 2 ЗОНЫ.mq4 | //| | //| | //| | //| 2017 | //+------------------------------------------------------------------+ #property indicator_chart_window //--- day of week enum dayOfWeek { S=0, // Sunday M=1, // Monday T=2, // Tuesday W=3, // Wednesday Th=4, // Thursday Fr=5, // Friday, St=6, // Saturday }; //--- input parameters input dayOfWeek swapday=W; //------- Внешние параметры индикатора ------------------------------- extern int NumberOfDays = 10; // Количество дней extern string Begin_1 = "09:00"; extern string End_1 = "15:00"; extern color Color_1 = PowderBlue; extern string Begin_2 = "03:00"; extern string End_2 = "07:00"; extern color Color_2 = Yellow; extern bool HighRange = true; //+------------------------------------------------------------------+ //| Custom indicator initialization function // Функция инициализации пользовательского индикатора | //+------------------------------------------------------------------+ void init() { DeleteObjects(); for (int i=0; i<NumberOfDays; i++) { CreateObjects("PWT1"+i, Color_1); CreateObjects("PWT2"+i, Color_2); } Comment(""); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ void deinit() { DeleteObjects(); Comment(""); } //+------------------------------------------------------------------+ //| Создание объектов индикатора | //| Параметры: | //| no - наименование объекта | //| cl - цвет объекта | //+------------------------------------------------------------------+ void CreateObjects(string no, color cl) { ObjectCreate(no, OBJ_RECTANGLE, 0, 0,0, 0,0); ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(no, OBJPROP_COLOR, cl); ObjectSet(no, OBJPROP_BACK, True); } //+------------------------------------------------------------------+ //| Удаление объектов индикатора | //+------------------------------------------------------------------+ void DeleteObjects() { for (int i=0; i<NumberOfDays; i++) { ObjectDelete("PWT1"+i); ObjectDelete("PWT2"+i); } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //| Итерации функции пользовательского индикатора | //+------------------------------------------------------------------+ void start() { datetime dt=CurTime(); for (int i=0; i<NumberOfDays; i++) { DrawObjects(dt, "PWT1"+i, Begin_1, End_1); DrawObjects(dt, "PWT2"+i, Begin_2, End_2); dt=decDateTradeDay(dt); while (TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt); } } //+------------------------------------------------------------------+ //| Прорисовка объектов на графике | //| Параметры: | //| dt - дата торгового дня | //| no - наименование объекта | //| tb - время начала сессии | //| te - время окончания сессии | //+------------------------------------------------------------------+ void DrawObjects(datetime dt, string no, string tb, string te) { datetime t1, t2, t3; double p1, p2, p3; int b1, b2; t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb); t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te); t3=StrToTime(TimeToStr(dt, TIME_DATE)+" ""23:00"); b1=iBarShift(NULL, 0, t1); //Поиск бара по времени b2=iBarShift(NULL, 0, t2); p1=High[iHighest(NULL, PERIOD_M5, MODE_HIGH, b1-b2, b2)]; // вставлено PERIOD_M5 вместо 0 p2=Low [iLowest (NULL, PERIOD_M5, MODE_LOW , b1-b2, b2)]; // вставлено PERIOD_M5 вместо 0 p3=p2; if (!HighRange) {p1=0; p2=2*p2;} ObjectSet(no, OBJPROP_TIME1 , t1); ObjectSet(no, OBJPROP_PRICE1, p1); ObjectSet(no, OBJPROP_TIME2 , t2); ObjectSet(no, OBJPROP_PRICE2, p2); ObjectSet(no, OBJPROP_TIME2 , t3); ObjectSet(no, OBJPROP_PRICE2, p3); } //+------------------------------------------------------------------+ //| Уменьшение даты на один торговый день | //| Параметры: | //| dt - дата торгового дня | //+------------------------------------------------------------------+ datetime decDateTradeDay (datetime dt) { int ty=TimeYear(dt); int tm=TimeMonth(dt); int td=TimeDay(dt); int th=TimeHour(dt); int ti=TimeMinute(dt); td--; if (td==0) { tm--; if (tm==0) { ty--; tm=12; } if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31; if (tm==2) if (MathMod(ty, 4)==0) td=29; else td=28; if (tm==4 || tm==6 || tm==9 || tm==11) td=30; } return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti)); } //+------------------------------------------------------------------+ 2 ЗОНЫ.ex4 2 ЗОНЫ.mq4 Изменено 1 марта, 2020 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
agimat81 Опубликовано 1 марта, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 1 марта, 2020 Я бы с радостью исправил но вот беда в mql5 я дуб) Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 1 марта, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 1 марта, 2020 @agimat81 Если есть понимание 4 то и 5 значит понимаешь. Эти языки, вот, ничем не отличаются. Изменено 1 марта, 2020 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
UncleSam Опубликовано 1 марта, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 1 марта, 2020 Здравствуйте. Пишу советник с использованием индикатора TMA+CG mladen. Нужно получить значения границ канала и средний линии. Вроде все логично, средняя линия = буфер 0, верхняя = буфер 1, нижняя = буфер 2 (скрин кода http://prntscr.com/r9sxd4) В советнике значения индикатора получаю на открытии бара. Гоняю в тестере для проверки. Получаю разные данные (то, что вижу на графике и то, что вижу в данных индикатора). Например, верхняя граница http://prntscr.com/r9szk4 Нижняя граница http://prntscr.com/r9szrv Средняя линия http://prntscr.com/r9t00l Настройки индикатора http://prntscr.com/r9t05s В тестере котировки тестируемой валюты m15 и h4 загружены Как получить значения линий? Или что-то не учел? Код самого индикатора прикладываю TMA+CG mladen.mq4 Изменено 1 марта, 2020 пользователем UncleSam Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 1 марта, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 1 марта, 2020 @alexavb Просмотрел индикатор 88, там есть алерт. Чем штатный не устраивает? По умолчанию он и настроен правильно, сигнал = 6. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
alexavb Опубликовано 1 марта, 2020 Поделиться Доработка индикаторов: общая тема Опубликовано 1 марта, 2020 9 минут назад, MikR0ReR сказал: @alexavb Просмотрел индикатор 88, там есть алерт. Чем штатный не устраивает? По умолчанию он и настроен правильно, сигнал = 6. Действительно есть. Видимо попутал со вторым индикатором. Вопрос в таком случае снят. Спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти