Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.


  • Content Count

  • Joined

  • Last visited

Personal Information

  • First Name
  • Last Name
  • City
  • Country
    United States
  • Gender

Trading Information

  • Vendor
  • Favorite Markets
  1. So going through the code... The help I need is to cause the lower bollinger band to stop once the close of the bar is greater than the BB value and the higher bollinger band to stop once the close of the bar is less than the BB value Thanks
  2. Good morning, I have an MQ4 indicator that I need to use in MultiCharts. It would be especiall asesome if I could get it in both 64 and NET versions, but if I had to pick 1, it would be for MC64 powerlanguage. Pic attached Thanks in advance Don //---- #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 Chartreuse #property indicator_color2 Orange #property indicator_color3 Chartreuse #property indicator_color4 Orange #property indicator_color5 Chartreuse #property indicator_color6 Orange //---- input parameters extern int Length=20; // Bollinger Bands Period extern int Deviation=2; // Deviation extern double MoneyRisk=1.00; // Offset Factor extern int Signal=1; // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals; extern int Line=1; // Display line mode: 0-no,1-yes extern int Nbars=1000; //---- indicator buffers double UpTrendBuffer[]; double DownTrendBuffer[]; double UpTrendSignal[]; double DownTrendSignal[]; double UpTrendLine[]; double DownTrendLine[]; double smax[],smin[],bsmax[],bsmin[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line SetIndexBuffer(0,UpTrendBuffer); SetIndexBuffer(1,DownTrendBuffer); SetIndexBuffer(2,UpTrendSignal); SetIndexBuffer(3,DownTrendSignal); SetIndexBuffer(4,UpTrendLine); SetIndexBuffer(5,DownTrendLine); SetIndexStyle(0,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); SetIndexStyle(2,DRAW_ARROW); SetIndexStyle(3,DRAW_ARROW); SetIndexStyle(4,DRAW_LINE); SetIndexStyle(5,DRAW_LINE); SetIndexArrow(0,159); SetIndexArrow(1,159); SetIndexArrow(2,108); SetIndexArrow(3,108); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); //---- name for DataWindow and indicator subwindow label short_name="BBands Stop("+Length+","+Deviation+")"; IndicatorShortName(short_name); SetIndexLabel(0,"UpTrend Stop"); SetIndexLabel(1,"DownTrend Stop"); SetIndexLabel(2,"UpTrend Signal"); SetIndexLabel(3,"DownTrend Signal"); SetIndexLabel(4,"UpTrend Line"); SetIndexLabel(5,"DownTrend Line"); //---- SetIndexDrawBegin(0,Length); SetIndexDrawBegin(1,Length); SetIndexDrawBegin(2,Length); SetIndexDrawBegin(3,Length); SetIndexDrawBegin(4,Length); SetIndexDrawBegin(5,Length); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,shift,trend; //---- /*for(shift=Nbars;shift>=0;shift--) { UpTrendBuffer[shift]=0; DownTrendBuffer[shift]=0; UpTrendSignal[shift]=0; DownTrendSignal[shift]=0; UpTrendLine[shift]=EMPTY_VALUE; DownTrendLine[shift]=EMPTY_VALUE; } */ int counted_bars = IndicatorCounted(); if(counted_bars < 0) return(-1); if(counted_bars > 0) counted_bars--; int limit = Bars - counted_bars; if(counted_bars==0) limit-=1+1; int xsize=ArraySize(UpTrendBuffer); ArrayResize(smax,xsize); ArrayResize(smin,xsize); ArrayResize(bsmax,xsize); ArrayResize(bsmin,xsize); for(shift=limit;shift>=0;shift--) { smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift); smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift); //---- if (Close[shift]>smax[shift+1]) trend=1; if (Close[shift]<smin[shift+1]) trend=-1; if(trend>0 && smin[shift]<smin[shift+1]) smin[shift]=smin[shift+1]; if(trend<0 && smax[shift]>smax[shift+1]) smax[shift]=smax[shift+1]; //---- bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]); //---- if(trend>0 && bsmin[shift]<bsmin[shift+1]) bsmin[shift]=bsmin[shift+1]; if(trend<0 && bsmax[shift]>bsmax[shift+1]) bsmax[shift]=bsmax[shift+1]; if (trend>0) { if (Signal>0 && UpTrendBuffer[shift+1]==-1.0) { UpTrendSignal[shift]=bsmin[shift]; UpTrendBuffer[shift]=bsmin[shift]; if(Line>0) UpTrendLine[shift]=bsmin[shift]; } else { UpTrendBuffer[shift]=bsmin[shift]; if(Line>0) UpTrendLine[shift]=bsmin[shift]; UpTrendSignal[shift]=-1; } if (Signal==2) UpTrendBuffer[shift]=0; DownTrendSignal[shift]=-1; DownTrendBuffer[shift]=-1.0; DownTrendLine[shift]=EMPTY_VALUE; } if (trend<0) { if (Signal>0 && DownTrendBuffer[shift+1]==-1.0) { DownTrendSignal[shift]=bsmax[shift]; DownTrendBuffer[shift]=bsmax[shift]; if(Line>0) DownTrendLine[shift]=bsmax[shift]; } else { DownTrendBuffer[shift]=bsmax[shift]; if(Line>0)DownTrendLine[shift]=bsmax[shift]; DownTrendSignal[shift]=-1; } if (Signal==2) DownTrendBuffer[shift]=0; UpTrendSignal[shift]=-1; UpTrendBuffer[shift]=-1.0; UpTrendLine[shift]=EMPTY_VALUE; } } return(0); } //+------------------------------------------------------------------+
  3. ZDO, Thanks... however if I understand you... I made a test indi.. TL_New(date[1], time[1], c[1], date, time, c[0] ) ; TL_SetBegin(0, Date, time, c[0] ); TL_SetEnd (0, date, CalcTime(time, BarInterval), c[0] + (c[0] - c[1])); Does not plot forward. Thank you! BR
  4. Hope I can get some help with this... Trying to expend indicator past the current bar(see pic). It is like a trend line, but instead of swinghigh / swinglow, it uses the current close and the close of "X" bars back None of the bars between. in any of these Easy Language, MultiCharts Net or Strategy Trader C Appreciate it! BR
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.