toddanderson Posted November 3, 2010 Report Posted November 3, 2010 Could someone please add a Invert option to this dollar index indicator so when you use it against the eurusd or usdchf you have a better view on the index verse the pair Thank you for any help //+------------------------------------------------------------------+ //| usdx histo | //| usdx histo.mq4 | //| | //+------------------------------------------------------------------+ #property copyright "copyleft mladen" #property link "[email protected]" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Green #property indicator_color3 DimGray #property indicator_width3 2 // // // // // extern int SmoothPeriod = 4; extern bool ShowHisto = true; // // // // // double gbuffer[]; double rbuffer[]; double mbuffer[]; double wbuffer[]; string symbols[] = {"EURUSD","USDJPY","GBPUSD","USDCAD","USDSEK","USDCHF"}; double weights[] = {-0.576,-0.136,-0.119,-0.091,-0.042,-0.036}; bool divide[] = {false,true,false,true,true,true}; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // int init() { IndicatorBuffers(4); SetIndexBuffer(0,rbuffer); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(1,gbuffer); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(2,mbuffer); SetIndexBuffer(3,wbuffer); IndicatorShortName("USDX "); return(0); } // // // // // int start() { int counted_bars=IndicatorCounted(); int i,limit; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; // // // // // for(i=limit; i>=0; i--) { double product = 0.00; bool error = false; // // // // // mbuffer = EMPTY_VALUE; wbuffer = EMPTY_VALUE; for (int k=0; k<6; k++) { double rateWeight = rateWeight(i,k,error); if ( error ) break; if ( product == 0.00) product = rateWeight; else product *= rateWeight; } if ( error ) continue; // // // // // wbuffer = product*50.14348112; mbuffer = smooth(i,SmoothPeriod); if (ShowHisto) { rbuffer = rbuffer[i+1]; gbuffer = gbuffer[i+1]; if (mbuffer > mbuffer[i+1]) { gbuffer = mbuffer; rbuffer = EMPTY_VALUE; } if (mbuffer < mbuffer[i+1]) { rbuffer = mbuffer; gbuffer = EMPTY_VALUE; } } } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // double rateWeight(int i, int k, bool& error) { double price = iClose(symbols[k],0,i); double weight = 0.00; if (price == 0) { error = true; return(0); } if (divide[k]) weight = 1/price; else weight = price; return(MathPow(weight,weights[k])); } // // // // // #define Pi 3.141592653589793238462643 double smoothCoeffs[]; double smoothDivisor; bool smoothInitialized = false; int smoothLength = 0; // // // // // double smooth(int i, int length) { // // // // // if (!smoothInitialized || length != smoothLength) { smoothInitialized = true; smoothLength = MathMax(length,1); // // // // // ArrayResize(smoothCoeffs, smoothLength); smoothCoeffs[0] = 1; smoothDivisor = 1; for (int k = 1; k < smoothLength; k++) { double temp = 1 << k / Pi; smoothCoeffs[k] = MathSin(temp) / temp; smoothDivisor += smoothCoeffs[k]; } } // // // // // double sum = 0; for (int l = 0; l < smoothLength; l++) sum += wbuffer[l+i]*smoothCoeffs[l]; return(sum/smoothDivisor); } Quote
scarface Posted November 4, 2010 Report Posted November 4, 2010 HI, Good day, Isn't better if you explain by pictures?? I can't try guess this way my friend. :) If you at least post a picture of the indicator, I may have one already inverted. Best wishes, SF Quote a New Year 2011 has come, and the challenge has just started 8-)
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.