Можно к индикатору добавить звуковой сигнал?
Veronika:
Можно к индикатору добавить звуковой сигнал?
Можно к индикатору добавить звуковой сигнал?
Можно.
Только для начала надо подправить его, что бы несуществующий
бар не рассчитывал.
Ниже исправленный и со звуком:
//+------------------------------------------------------------------+ //| ADXcrosses_true_with_sound.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red #property indicator_width1 1 #property indicator_width2 1 //---- input parameters extern bool Sound = true; extern int ADXcrossesPeriod = 14; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //---- double b4plusdi, b4minusdi, nowplusdi, nowminusdi, nShift; datetime uplast=0; datetime dnlast=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0, DRAW_ARROW); SetIndexArrow(0, 233); SetIndexBuffer(0, ExtMapBuffer1); //---- SetIndexStyle(1, DRAW_ARROW); SetIndexArrow(1, 234); SetIndexBuffer(1, ExtMapBuffer2); //---- name for DataWindow and indicator subwindow label IndicatorShortName("ADXcrosses(" + ADXcrossesPeriod + ")"); SetIndexLabel(0, "ADXcrUp"); SetIndexLabel(1, "ADXcrDn"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars = IndicatorCounted(); //---- check for possible errors if(counted_bars < 0) return(-1); //---- last counted bar will be recounted if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars; //---- for(int i = 0; i < limit; i++) { b4plusdi = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_PLUSDI, i); nowplusdi = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_PLUSDI, i + 1); b4minusdi = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_MINUSDI, i); nowminusdi = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_MINUSDI, i + 1); nShift = iATR(NULL,0,100,i)*0.5; ExtMapBuffer1[i] = 0.0; ExtMapBuffer2[i] = 0.0; //---- if(b4plusdi > b4minusdi && nowplusdi < nowminusdi) ExtMapBuffer1[i] = Low[i] - nShift; //---- if(b4plusdi < b4minusdi && nowplusdi > nowminusdi) ExtMapBuffer2[i] = High[i] + nShift; } //---- Sound if(ExtMapBuffer1[0]!=0.0 && Time[i]>uplast && Sound==true) { PlaySound("alert.wav"); uplast=Time[i]; } if(ExtMapBuffer2[0]!=0.0 && Time[i]>dnlast && Sound==true) { PlaySound("alert.wav"); dnlast=Time[i]; } //---- return(0); } //+------------------------------------------------------------------+
Collector, я на основе некоторых Ваших индикаторов сделала для себя
стратегию торговли, за пару недель не одного лося, причем на
реале. Но есть некоторые вопросы. Хотелось бы их оговорить и
кое-что доработать. А то я в написание индикаторов полный "ноль".
Отзовитесь пожалуйста мне на e-mail kimru777@list.ru
Вероника.
Вероника.
Красивый график. А вот как идет торговля по его сигналам. Причем, если некоторым горизонтальным стрелочкам нет соответсвующих вертикальных, это вовсе не означает, что их там и не было. Так же, горизонтальные стрелки уточняют в какой именно момент появляются вертикальные. А впрочем, сосем не плохо, если вспомнить, что ADX просто указывает силу тренда.
А вот что получается если построить аналогичный индикатор на основе Envelopes.
//+------------------------------------------------------------------+ //| ADXcrosses_true_with_sound.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Yellow #property indicator_color2 Orange #property indicator_width1 1 #property indicator_width2 1 //---- input parameters extern bool Sound = true; extern int ADXcrossesPeriod = 14,tip=0; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //---- double b4plusdi, b4minusdi, nowplusdi, nowminusdi, nShift; datetime uplast=0; datetime dnlast=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0, DRAW_ARROW); SetIndexArrow(0, 233); SetIndexBuffer(0, ExtMapBuffer1); //---- SetIndexStyle(1, DRAW_ARROW); SetIndexArrow(1, 234); SetIndexBuffer(1, ExtMapBuffer2); //---- name for DataWindow and indicator subwindow label IndicatorShortName("ADXcrosses(" + ADXcrossesPeriod + ")"); SetIndexLabel(0, "ADXcrUp"); SetIndexLabel(1, "ADXcrDn"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars = IndicatorCounted(); //---- check for possible errors if(counted_bars < 0) return(-1); //---- last counted bar will be recounted if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars; //---- for(int i = 0; i < limit; i++) { int MA=14; double Deviation=0.15; int Mode=MODE_SMA;//0-sma, 1-ema, 2-smma, 3-lwma int Price=PRICE_CLOSE;//0-close, 1-open, 2-high, 3-low, 4-median, 5-typic, 6-wieight double envH0, envL0, m0; double envH1, envL1, m1; envH0=iEnvelopes(NULL, 0, MA, Mode, 0, Price, Deviation, MODE_UPPER, i); envL0=iEnvelopes(NULL, 0, MA, Mode, 0, Price, Deviation, MODE_LOWER, i); envH1=iEnvelopes(NULL, 0, MA, Mode, 0, Price, Deviation, MODE_UPPER, i+1); envL1=iEnvelopes(NULL, 0, MA, Mode, 0, Price, Deviation, MODE_LOWER, i+1); m0 = (Low[i]+High[i])/2; m1 = (Low[i+1]+High[i+1])/2; //----- условия для совершения операции //для открытия if (envL0>m0 && envL1>m1 && (tip==2 || tip==0)) { ExtMapBuffer1[i] = Low[i] - nShift; tip=1;} if (envH0<m0 && envH1<m1 && (tip==1 || tip==0)) { ExtMapBuffer2[i] = High[i] + nShift;tip=2;} //для закрытия if (envH0<m0 && envH1<m1 && tip==1) {ExtMapBuffer2[i] = High[i];}//Closse return (OP_BUY); if (envL0>m0 && envL1>m1 && tip==2) {ExtMapBuffer1[i] = Low[i]; }//Closse return (OP_SELL); } //---- Sound if(ExtMapBuffer1[0]!=0.0 && Time[i]>uplast && Sound==true) { PlaySound("alert.wav"); uplast=Time[i]; } if(ExtMapBuffer2[0]!=0.0 && Time[i]>dnlast && Sound==true) { PlaySound("alert.wav"); dnlast=Time[i]; } //---- return(0); } //+------------------------------------------------------------------+
Здравствуйте.А можно сделать так что бы бары раскрашивались в таком алгоритме: если
текущее значение ADX больше предыдущего и +(плюсовая линия) выше
минусовой то бар красится в зеленный, но если текущее значение ADX
меньше предыдущего значения то бар окрашивается в серый(тут уже не важно
где находится плюсовая линия), ну и наконец если текущее значение ADX
больше предыдущего ADX и - (минусовая линия) выше плюсовой то бар
красится в красный. А то просто раскрашивание в синий и красный ни как
не облегчает ситуацию. или просто что бы можно было задать значение ADX выше которого стрелки не рисовались, а то очень много стрелок.спасибо.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ADXcrosses:
Author: Collector