toddanderson Posted November 3, 2010 Report Share 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 Link to comment Share on other sites More sharing options...
scarface Posted November 4, 2010 Report Share 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-) Link to comment Share on other sites More sharing options...
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.