modifying a code

To add comments, please log in or register
Abubakar Saidu
1026
Abubakar Saidu  
 a buy signal arrow appears on bullish candle and disappear when the candle becomes bearish... it will keep blinking if the candle goes up and down..
is there a way to make show
//+------------------------------------------------------------------+
//|                                        Trendsignal version 2.mq4 |
//|                                                    Pankaj Bhaban |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "pankajbhaban@gmail.com"
#property link      "trendsignal.co.in"


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 DodgerBlue
#property indicator_color2 Magenta
#property indicator_color3 White

#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 2

//---- input parameters
extern int RISK=3;
extern int SSP=9;
 int CountBars=500;
 int Alert_Delay_In_Seconds=0;
extern bool Enablemail = false;
 string subjectUp="Buy signal";
 string subjectDown="Sell signal";
 string textUp="Long ";
 string textDown="Short ";

int PrevAlertTime=0;

//---- buffers
double val1[];
double val2[];
double alertBar;
double Mainbuffer[];
double UpperBuffer[];
double LowerBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
   IndicatorDigits( Digits );
   
   string short_name;
   //---- indicator line
   IndicatorBuffers(5);
   
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,233);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,234);
   SetIndexBuffer(0,val1);
   SetIndexBuffer(1,val2);
   
   //---- drawing settings
   SetIndexStyle(2,DRAW_SECTION);
   //---- indicator buffers mapping
   SetIndexBuffer(2,Mainbuffer);
   SetIndexBuffer(3,UpperBuffer);
   SetIndexBuffer(4,LowerBuffer);
   
   SetIndexLabel(0, "UP");
   SetIndexLabel(1, "DOWN");
   SetIndexLabel(2, "Potential targets");
   
   SetIndexEmptyValue(0, 0);
   SetIndexEmptyValue(1, 0);
   SetIndexEmptyValue(2, 0);
   
   //----
   return( 0 );
}
//+------------------------------------------------------------------+
//| 
//+------------------------------------------------------------------+
int start()
{
Comment("Free usage allowed Property of www.trendsignal.co.in");

   if (CountBars>=Bars) CountBars=Bars;
   SetIndexDrawBegin(0,Bars-CountBars+SSP);
   SetIndexDrawBegin(1,Bars-CountBars+SSP);
   int i,shift,counted_bars=IndicatorCounted();
   int i1,i2,K;
   double Range,AvgRange,smin,smax,SsMax,SsMin,price;
   bool uptrend,old;
   //----
   
   if(Bars<=SSP+1) return(0);
   //---- initial zero
   if( counted_bars < SSP+1 ) {
      for(i=1;i<=SSP;i++) val1[CountBars-i]=0.0;
      for(i=1;i<=SSP;i++) val2[CountBars-i]=0.0;
   }
   //----
   
   K = 33-RISK;
   for( shift = CountBars-SSP; shift>=0; shift-- ) {
      Range=0;
      AvgRange=0;
      
      for( i1=shift; i1<=shift+SSP; i1++ ) {
         AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]);
      }
      Range = AvgRange/(SSP+1);
      
      SsMax = High[shift]; SsMin=Low[shift];
      
      for( i2=shift;i2<=shift+SSP-1;i2++ ) {
         price=High[i2];
         if(SsMax<price) SsMax=price;
         price=Low[i2];
         if(SsMin>=price) SsMin=price;
      }
      
      smin = SsMin+(SsMax-SsMin)*K/100;
      smax = SsMax-(SsMax-SsMin)*K/100;
      val1[shift]=0;
      val2[shift]=0;
      
      if( Close[shift]<smin ) {
         uptrend = false;
      }
      if( Close[shift]>smax ) {
         uptrend = true;
      }
      
      if( uptrend != old  &&  uptrend == true ) {
         val1[shift]=Low[shift]-Range*0.5;
         Mainbuffer[shift]=val1[shift];
         if( Bars>alertBar && shift==0 && (CurTime() - PrevAlertTime > Period()*Alert_Delay_In_Seconds) ) {
         
         Alert("Trendsignal V2.0 ",Period(),""," Mins Timeframe",Symbol()," BUY @", Ask,"");alertBar = Bars;
if(Enablemail == true) {SendMail(subjectDown+" "+ Symbol(),textDown+" "+ Close[1]+" "+ Symbol()); }
            PrevAlertTime = CurTime();
         }
      }
      
      if( uptrend!=old && uptrend==false ) {
         
         val2[shift]=High[shift]+Range*0.5;
         Mainbuffer[shift]=val2[shift];
         if( Bars>alertBar && shift==0 && (CurTime() - PrevAlertTime > Period()*Alert_Delay_In_Seconds) ) {
         
         Alert("Trendsignal V2.0 ",Period(),"","Mins Timeframe ",Symbol()," SELL @", Bid,"");alertBar = Bars;
if(Enablemail == true) {SendMail(subjectUp +" "+ Symbol(),textUp+" "+ Close[1]+" " + Symbol());}
            PrevAlertTime = CurTime();
         }
      }
      
      Print(shift);
      old=uptrend;
   }
   
   return(0);
}
//+------------------------------------------------------------------+
on candle close after arrow signal
Keith Watford
Moderator
20585
Keith Watford  
Abubakar Saidu:
a buy signal arrow appears on bullish candle and disappear when the candle becomes bearish... it will keep blinking if the candle goes up and down..
is there a way to edit the coding for the arrow to show after the candle closed

I have not looked at your code in depth but try replacing

 for( shift = CountBars-SSP; shift>=0; shift-- )

with

 for( shift = CountBars-SSP; shift>0; shift-- )

This is only a suggestion for a quick solution, I would do it a different way if I had the time.

Keith Watford
Moderator
20585
Keith Watford  

Don't double post.

I have deleted your other topic.

Keith Watford
Moderator
20585
Keith Watford  
Keith Watford:

Don't double post.

I have deleted your other topic.

I have deleted 6 duplicated topics.

This is very selfish of you as people can spend time replying only to find that you have already been given the answer.

You want help, but please don't think that your problem is so important that you can flood the forum.

Abubakar Saidu
1026
Abubakar Saidu  
Am sorry for that... i thought the forums are different.
Abubakar Saidu
1026
Abubakar Saidu  
Keith Watford:

I have deleted 6 duplicated topics.

This is very selfish of you as people can spend time replying only to find that you have already been given the answer.

You want help, but please don't think that your problem is so important that you can flood the forum.

Keith Watford:

I have not looked at your code in depth but try replacing

with

This is only a suggestion for a quick solution, I would do it a different way if I had the time.

Wow...i don't know how i will pay you back..

Thank  you... thank you... thank you...

Abubakar Saidu
1026
Abubakar Saidu  
Hello... thanks a lot for your help...
the guide you gave me worked..

(*I have not looked at your code in depth but try replacing

for( shift = CountBars-SSP; shift>=0; shift-- )

with

for( shift = CountBars-SSP; shift>0; shift-- )

This is only a suggestion for a quick solution, I would do it a different way if I had the time.)


but on back testing The EA, it will not open any order
The EA will only open orders after i put back the (=) in the code

i also created another EA using the indicator without the(=) still did not work... but worked when i replaced the (=)..

Thanks a lot for your help...
2019.08.20 21:34
this [for( shift = CountBars-SSP; shift>0; shift-- ] and [for( shift = CountBars-SSP; shift>=1; shift-- ]
also seems the same
Seng Joo Thio
1219
Seng Joo Thio  
Abubakar Saidu:
but on back testing The EA, it will not open any order
The EA will only open orders after i put back the (=) in the code
i also created another EA using the indicator without the(=) still did not work... but worked when i replaced the (=)..

If the last parameter of your iCustom() call is '0', you'll have to change it to '1'.

To add comments, please log in or register