I think I found a way.
Please, use code and test if you are interested
#property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Green #property indicator_color2 Red //---- #define SIGNAL_NONE 0 #define SIGNAL_UP 1 #define SIGNAL_DOWN 2 input int ADXPeriod=14; input bool VoiceYN = true; input int ADXMainLevel=20; input string xx="Wait until next sound:... [Seconds]"; extern int PauseTimer=60; bool LimitFlag=false; bool AlarmFlagA,AlarmFlagB=false; int UDSignal=0; //---- double ExtBuffer1[]; double ExtBuffer2[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void XComment(string Text,bool ResetText=false) { static string ExistingComment = ""; if(ResetText) ExistingComment = ""; ExistingComment=ExistingComment+Text; Comment(ExistingComment); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,ExtBuffer1); SetIndexStyle(0,DRAW_HISTOGRAM,0,2); //---- SetIndexBuffer(1,ExtBuffer2); SetIndexStyle(1,DRAW_HISTOGRAM,0,2); //---- IndicatorShortName("Advanced_ADX ("+ADXPeriod+")"); PauseTimer=PauseTimer*1000; return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool NewBar() { static datetime dt = 0; if (dt != Time[0]) { dt = Time[0]; Sleep(100); // wait for tick return(true); } return(false); } int start() /*int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) */ { int i,limit,zz; double ADX0,ADX1,ADX2,ADXMain,ADX1_1,ADX2_1,ADX1_2,ADX2_2; int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- for(i=0; i<limit; i++) { ADX0 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MAIN, i); ADX1 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_PLUSDI, i); ADX2 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MINUSDI, i); ADXMain= iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MAIN,0); ADX1_1 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_PLUSDI, 0); ADX2_1 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MINUSDI, 0); ADX1_2 = iADX(NULL,0,ADXPeriod,PRICE_CLOSE, MODE_PLUSDI,1); ADX2_2 = iADX(NULL,0,ADXPeriod,PRICE_CLOSE, MODE_MINUSDI,1); //---- if(ADX1>=ADX2) { ExtBuffer1[i] = ADX0; ExtBuffer2[i] = 0; } else { ExtBuffer1[i] = 0; ExtBuffer2[i] = ADX0; } zz=0; if(ADX1_1>ADX2_1 && ADX1_2<ADX2_2) { UDSignal=SIGNAL_UP; zz++; } if(ADX1_1<ADX2_1 && ADX1_2>ADX2_2) { UDSignal=SIGNAL_DOWN; zz++; } if(ADXMain<ADXMainLevel) {LimitFlag=true;} else {LimitFlag=false; XComment("",true);} if(VoiceYN && !LimitFlag) { if(UDSignal==SIGNAL_UP) { if(NewBar())PlaySound("60sekcallup.wav"); UDSignal=SIGNAL_NONE; AlarmFlagA=true; } //return(0); if(UDSignal==SIGNAL_DOWN) { if(NewBar())PlaySound("60sekputdown.wav"); UDSignal=SIGNAL_NONE; AlarmFlagB=true; } // return(0); } //return(0); if(AlarmFlagA) XComment("\nUP HOCH! ",true); if(AlarmFlagB) XComment("\nDOWN TIEF! ",true); AlarmFlagA = false; AlarmFlagB = false; if(LimitFlag) XComment("\nADX_Main BELOW LIMIT: "+ADXMainLevel+" !!!!!",true); else XComment("\nADX_Main Limit: "+ADXMainLevel,true); XComment("\nSignal: "+UDSignal,false); XComment("\nZ: "+zz,false); //XComment("\nPauseTimer: "+PauseTimer,false); } return(0); } //+------------------------------------------------------------------+
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hi,
could someone help me please with that code. All I wanted is to get a spoken alarm when the two lines of the ADX Indicator (D+ and D-) cross over.
The code is repeating the sound file onevery tick - but I want it just to play one time.
Please, any ways to improve my code is welcome, thank you
Peter