k15hor Posted September 29, 2011 Report Share Posted September 29, 2011 (edited) hi, question to all you coders... how can you take two indicators and have merge them to create one indicator. and one signal... Edited October 23, 2011 by k15hor Quote Link to comment Share on other sites More sharing options...
k15hor Posted September 29, 2011 Author Report Share Posted September 29, 2011 Here is the second indicator "Tidane" //+------------------------------------------------------------------+ //| | //| | //| Modified version of Bollinger Bands | //| I'm not the original author of it. Code has been modified | //| from existing indiator by TrendLaboratory. | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 RoyalBlue #property indicator_color2 Red #property indicator_color3 RoyalBlue #property indicator_color4 Red #property indicator_color5 RoyalBlue #property indicator_color6 Red //---- input parameters extern int Length=20; // Bollinger Bands Period extern int Deviation=2; // Deviation was 2 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; double mykijun; double mytenkan; int ii; //---- indicator buffers double UpTrendBuffer[]; double DownTrendBuffer[]; double UpTrendSignal[]; double DownTrendSignal[]; double UpTrendLine[]; double DownTrendLine[]; extern bool SoundON=true; bool TurnedUp = false; bool TurnedDown = false; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { ObjectCreate("mywebsite",OBJ_LABEL,4,84,0); 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,0,1); SetIndexStyle(1,DRAW_ARROW,0,1); SetIndexStyle(2,DRAW_ARROW,0,1); SetIndexStyle(3,DRAW_ARROW,0,1); 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="Alert 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 deinit() { ObjectDelete("mywebsite"); } int start() { int i,shift,trend; double smax[25000],smin[25000],bsmax[25000],bsmin[25000]; 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; } for (shift=Nbars-Length-1;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]; if (SoundON==true && shift==0 && !TurnedUp) { Alert("-signal going up on ",Symbol(),"-",Period()); TurnedUp = true; TurnedDown = false; } } 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]; if (SoundON==true && shift==0 && !TurnedDown) { Alert("-Alert going Down on ",Symbol(),"-",Period()); TurnedDown = true; TurnedUp = false; } } 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; } } ObjectSetText("mywebsite"," Double tidane indicater", 10, "Arial", Red); ObjectSet("mywebsite",OBJPROP_XDISTANCE,2); ObjectSet("mywebsite",OBJPROP_YDISTANCE,15); ObjectSet("mywebsite", OBJPROP_CORNER, 0); return(0); } So my request is what coding is required to... 1, have 2 tadine indicators 2. with 1 VoltyChannel_Stop merged into 1 indicator... with signal to show where there is a 2 or 3 signal corrolation on a chart... thanks... any questions please let me know...! Quote Link to comment Share on other sites More sharing options...
tuoitrecuoi Posted October 27, 2011 Report Share Posted October 27, 2011 i think easy to do it. hi, question to all you coders... how can you take two indicators and have merge them to create one indicator. and one signal... Quote 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.