Мультивалютный индикатор на основе индикатора ЗигЗага.
Параметры:
ZigZag Depth
ZigZag Deviation
ZigZag Backstep
Выбор таймфрейма для отслеживания графиков
Уведомление:
Push уведомление на смартфон/e-mail уведомление.
Звуковой сигнал с надписью на графике информации о символе, ТФ и т.д.
Индикация на графике соответствующей валютной пары/инструмента.
В параметрах индикаторы устанавливается список отслеживаемых валютных пар/инструментов. Индикатор запускается только на одном графике, но отслеживаются и отправляются уведомления по всем выбранным парам/инструментам. Уведомление по каждой валютной паре отправляются один раз в день.
Принцип работы.
Отслеживаем последние две точки (максимум и минимум) уже сформировавшихся линий ЗигЗага. Как только текущий цена обновляет максимум или минимум направляем уведомление на е-mail с содержанием: Символ, Таймфрем, High renewed /low renewed, и если запустить график этого символа то видем стрелку (отметку) на точке, где произошло обновление.
Заранее благодарен.
-
+5
- Просмотров: 4543
- 9 декабря 2016, 22:46
- izzatilla
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!
Комментарии (15)
35 AM2 Сообщений: 16665 - Андрей
5 izzatilla Автор Сообщений: 107 - telma
35 AM2 Сообщений: 16665 - Андрей
<code> //+------------------------------------------------------------------+ //| DT_ZZ.mq4 + //| + //| 20.03.16 добавил звук поручик + //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, klot." #property link "klot@mail.ru" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 clrMagenta #property indicator_color2 clrDeepPink #property indicator_color3 clrDodgerBlue #property indicator_width2 1 #property indicator_width3 1 //---- indicator parameters extern int ExtDepth = 12; extern bool alertsOn = true; extern bool alertsOnCurrent = true; extern bool alertsMessage = true; extern bool alertsSound = true; extern bool alertsEmail = false; extern bool use_sound = true; extern string up_sound = "Пробой_вверх"; extern string down_sound = "Пробой_вниз"; double zzL[]; double zzH[]; double zz[]; int init() { SetIndexBuffer(0,zz); SetIndexStyle(0,DRAW_SECTION); SetIndexBuffer(1,zzH); SetIndexStyle(1,DRAW_ARROW); SetIndexBuffer(2,zzL); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(1,236); SetIndexArrow(2,238); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); SetIndexEmptyValue(2,0.0); IndicatorShortName("DT_ZZ("+ExtDepth+")"); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos; double curlow,curhigh,lasthigh,lastlow; double min, max; ArrayInitialize(zz,0.0); ArrayInitialize(zzL,0.0); ArrayInitialize(zzH,0.0); lasthighpos=Bars; lastlowpos=Bars; lastlow=Low[Bars];lasthigh=High[Bars]; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift); curlow=Low[curlowpos]; curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift); curhigh=High[curhighpos]; //------------------------------------------------ if( curlow>=lastlow ) { lastlow=curlow; } else { //идем вниз if( lasthighpos>curlowpos ) { zzL[curlowpos]=curlow; ///* min=100000; pos=lasthighpos; for(i=lasthighpos; i>=curlowpos; i--) { if (zzL[i]==0.0) continue; if (zzL[i]<min) { min=zzL[i]; pos=i; } zz[i]=0.0; } zz[pos]=min; //*/ } lastlowpos=curlowpos; lastlow=curlow; } //--- high if( curhigh<=lasthigh ) { lasthigh=curhigh;} else { // идем вверх if( lastlowpos>curhighpos ) { zzH[curhighpos]=curhigh; ///* max=-100000; pos=lastlowpos; for(i=lastlowpos; i>=curhighpos; i--) { if (zzH[i]==0.0) continue; if (zzH[i]>max) { max=zzH[i]; pos=i; } zz[i]=0.0; } zz[pos]=max; //*/ } lasthighpos=curhighpos; lasthigh=curhigh; } } //--------------------------------------------------------------------- if (alertsOn) { if (alertsOnCurrent) int whichBar = 0; else whichBar = 1; if (zzH[whichBar] > 0) PlaySound("Пробой_вверх.wav"); if (zzL[whichBar] > 0) PlaySound("Пробой_вниз.wav"); } return(0); } //+------------------------------------------------------------------+ // // // // // void doAlert(string doWhat) { static string previousAlert="nothing"; static datetime previousTime; string message; if (previousAlert != doWhat || previousTime != Time[0]) { previousAlert = doWhat; previousTime = Time[0]; // message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," DT_ZZ ",doWhat); if (alertsMessage) Alert(message); if (alertsEmail) SendMail(StringConcatenate(Symbol()," DT_ZZ "),message); if (alertsSound) PlaySound("alert2.wav"); } } </code>Редактирован: 11 декабря 2016, 08:538 poruchik Сообщений: 139
А если хай выше последнего хая ZZ?
Нет идеальных ZZ
8 poruchik Сообщений: 139
0 arip777 Сообщений: 4
35 AM2 Сообщений: 16665 - Андрей
8 poruchik Сообщений: 139
Особенности ТЗ:
35 AM2 Сообщений: 16665 - Андрей
8 poruchik Сообщений: 139
— Строить Зиз-Заг по точкам закрытия свечей/баров Close
т.е. когда концы отрезков зиг-зага идут не между мин и макс, а между точками закрытия свечей,
это позволяем по-другому отслеживать состояние и «притормаживание», смену тренда/коррекций — крутизна линий меняеся по-другому.
Редактирован: 12 декабря 2016, 09:34
11 preasto Сообщений: 445
5 izzatilla Автор Сообщений: 107 - telma
35 AM2 Сообщений: 16665 - Андрей
5 izzatilla Автор Сообщений: 107 - telma
1 PavelMT4 Сообщений: 1
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий