Jump to content

⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

How to create a double indicator with out putting it in your window twice...?


Recommended Posts

Posted (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 by k15hor
Posted

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...!

  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

×
×
  • Create New...