//+------------------------------------------------------------------+ //| Solar wind clean XXX(based on Solar wind clean (FisherTransform)| //| revised by Mladen Copyright © 2005, MetaQuotes Software Corp. | //| ForexTSD mladen nittany mod fxbs ki http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/ www.ForexTSD.com" //---- indicator settings #property copyright "" #property link "" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Red extern bool AlertON=true; extern int period = 10; extern int smoozing = 2; double ExtBuffer0[]; double ExtBuffer1[]; double ExtBuffer2[]; double Value[]; double ExtBuffer3[]; int flagval1 = 0; int flagval2 = 0; int init() { IndicatorBuffers(5); SetIndexBuffer(0,ExtBuffer1); SetIndexBuffer(1,ExtBuffer2); SetIndexBuffer(2,ExtBuffer0); SetIndexBuffer(3,Value); SetIndexBuffer(4,ExtBuffer3); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_HISTOGRAM); //--- mod to show currency pair and Period by nittany1 forex-tsd // IndicatorShortName("SOLAR WIND Clean("+Symbol()+","+period+")"); IndicatorShortName("SOLARWIND CleanX ("+period+")("+smoozing+")"); IndicatorDigits(Digits+1); return(0); } int start() { int limit; int counted_bars=IndicatorCounted(); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=limit; i>=0; i--) { double MaxH = High[iHighest(NULL,0,MODE_HIGH,period,i)]; double MinL = Low [iLowest( NULL,0,MODE_LOW, period,i)]; double price = (High[i]+Low[i])/2; if (MaxH!=MinL) Value[i] = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5); else Value[i] = 0.00; Value[i] = MathMin(MathMax(Value[i],-0.999),0.999); ExtBuffer0[i]=0.5*MathLog((1+Value[i])/(1-Value[i])); } for( i=limit; i>=0; i--) { ExtBuffer3[i]=iMAOnArray(ExtBuffer0,0,smoozing,0,MODE_EMA,i); // // // // // if(ExtBuffer3[i]<0) { ExtBuffer2[i]=ExtBuffer3[i]; ExtBuffer1[i]=0.0; } else { ExtBuffer1[i]=ExtBuffer3[i]; ExtBuffer2[i]=0.0; } if ((ExtBuffer1[i] > 0) && (ExtBuffer2[i+1] > 0.0)) { if (i == 1 && flagval1==0) { flagval1=1; flagval2=0; if (AlertON) Alert("Crossing zero line up\n Time=",TimeToStr(TimeCurrent(),TIME_DATE)," ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent()),"\n Symbol=",Symbol()," Period=",Period()); } } else if ((ExtBuffer2[i] > 0) && (ExtBuffer1[i+1] > 0.0)) { if (i == 1 && flagval2==0) { flagval2=1; flagval1=0; if (AlertON) Alert("Crossing zero line up\n Time=",TimeToStr(TimeCurrent(),TIME_DATE)," ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent()),"\n Symbol=",Symbol()," Period=",Period()); } } } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen