728x90_Header

Collapse

Announcement

Collapse

Extrenal link

Use Code Tag for every link you post Code: link

[code ]your link here[/code ]

All link not using this method will be deleted 15/09/2018
See more
See less

Alert not working!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alert not working!

    hi,

    can anyone see why the alerts on this indicator aren't working?

    thanks in advance

    /*



    ************************************************** *******************



    RSI with Trend Catcher signal





    by Matsu

    based on codes from various sources



    ************************************************** *******************



    */





    #property indicator_separate_window

    #property indicator_buffers 5

    #property indicator_color1 Lime

    #property indicator_color2 Red

    #property indicator_color3 Lime

    #property indicator_color4 Red

    #property indicator_color5 Gold



    #property indicator_level1 60

    #property indicator_level2 50

    #property indicator_level3 40



    int BBPrd=20;

    double BBDev=2.0;

    int SBPrd=13;

    int SBATRPrd=21;

    double SBFactor=2;

    int SBShift=1;

    extern int RSIPeriod=12;

    extern int BullLevel=55;

    extern int BearLevel=45;

    extern bool AlertOn = true;



    double RSI[];

    double DnRSI[];

    double Buy[];

    double Sell[];

    double Squeeze[];







    int init()

    {



    IndicatorBuffers(5);



    SetIndexStyle(0,DRAW_LINE);

    SetIndexBuffer(0,RSI);



    SetIndexStyle(1,DRAW_LINE);

    SetIndexBuffer(1,DnRSI);



    SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID);

    SetIndexArrow(2,159);

    SetIndexBuffer(2,Buy);



    SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID);

    SetIndexArrow(3,159);

    SetIndexBuffer(3,Sell);



    SetIndexStyle(4,DRAW_ARROW,STYLE_SOLID);

    SetIndexArrow(4,159);

    SetIndexBuffer(4,Squeeze);



    IndicatorShortName("RSI("+RSIPeriod+")");

    IndicatorDigits(2);



    return(0);



    }







    int start()

    {



    int counted_bars=IndicatorCounted();

    int shift,limit,ob,os;

    double BBMA, SBMA, TopBBand, BotBBand, TopBBandPrev, BotBBandPrev, TopSBand, BotSBand;

    bool dn = false;

    double BuyNow, BuyPrevious, SellNow, SellPrevious;

    static datetime prevtime = 0;





    if (counted_bars<0) return(-1);

    if (counted_bars>0) counted_bars--;

    limit=Bars-31;

    if(counted_bars>=31) limit=Bars-counted_bars-1;



    for (shift=limit;shift>=0;shift--)

    {



    RSI[shift]=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,shift);

    ob = indicator_level1;

    os = indicator_level3;



    // ========= Two-tone RSI



    if (dn==true)

    {

    if (RSI[shift]>BullLevel)

    {

    dn=false;

    DnRSI[shift]=EMPTY_VALUE;

    }

    else

    {

    dn=true;

    DnRSI[shift]=RSI[shift];

    }



    }

    else

    {

    if (RSI[shift]<BearLevel)

    {

    dn=true;

    DnRSI[shift]=RSI[shift];

    }

    else

    {

    dn=false;

    DnRSI[shift]=EMPTY_VALUE;

    }



    }



    // ========= Two-tone RSI Ends



    // ========= Squeeze Signals



    BBMA = iMA(NULL,0,BBPrd,0,MODE_SMA,PRICE_CLOSE,shift);

    SBMA = iMA(NULL,0,SBPrd,0,MODE_EMA,PRICE_CLOSE,shift+SBSh ift);

    TopBBand = iBands(NULL,0,BBPrd,BBDev,0,PRICE_CLOSE,MODE_UPPER ,shift);

    BotBBand = iBands(NULL,0,BBPrd,BBDev,0,PRICE_CLOSE,MODE_LOWER ,shift);

    TopSBand = SBMA + (SBFactor * iATR(NULL,0,SBATRPrd,shift+SBShift));

    BotSBand = SBMA - (SBFactor * iATR(NULL,0,SBATRPrd,shift+SBShift));

    TopBBandPrev = iBands(NULL,0,BBPrd,BBDev,0,PRICE_CLOSE,MODE_UPPER ,shift+1);

    BotBBandPrev = iBands(NULL,0,BBPrd,BBDev,0,PRICE_CLOSE,MODE_LOWER ,shift+1);



    if (TopBBand<TopSBand && BotBBand>BotSBand) Squeeze[shift]=50;



    // ========= Squeeze Signals Ends



    // ========= BB Breakout Signals



    //if(Squeeze[shift+2]==55 && RSI[shift]>55 && BotBBand<BotSBand)

    if((Squeeze[shift+2]==55 || Squeeze[shift+1]==55) && RSI[shift]>55 && BotBBand<BotSBand)

    {

    Buy[shift]=ob;

    Sell[shift]=EMPTY_VALUE;

    }

    else

    //if(Squeeze[shift+2]==45 && RSI[shift]<45 && TopBBand>TopSBand)

    if((Squeeze[shift+2]==45 || Squeeze[shift+1]==45) && RSI[shift]<45 && TopBBand>TopSBand)

    {

    Buy[shift]=EMPTY_VALUE;

    Sell[shift]=os;

    }

    else

    if(Buy[shift+1]==ob && BotBBand<BotBBandPrev && RSI[shift]>55)

    {

    Buy[shift]=ob;

    Sell[shift]=EMPTY_VALUE;

    }

    else

    if(Sell[shift+1]==os && TopBBand>TopBBandPrev && RSI[shift]<45)

    {

    Buy[shift]=EMPTY_VALUE;

    Sell[shift]=os;

    }

    else

    {

    Buy[shift]=EMPTY_VALUE;

    Sell[shift]=EMPTY_VALUE;

    }



    // ========= BB Breakout Signals Ends



    }





    // ======= Alert =========



    if(AlertOn)

    {

    if(prevtime == Time[0])

    {

    return(0);

    }

    prevtime = Time[0];



    BuyNow = Buy[1];

    BuyPrevious = Buy[2];

    SellNow = Sell[1];

    SellPrevious = Sell[2];



    if((BuyNow ==ob) && (BuyPrevious ==EMPTY_VALUE) )

    {

    Alert(Symbol(), " M", Period(), " Buy Alert");

    }

    else

    if((SellNow ==os) && (SellPrevious ==EMPTY_VALUE) )

    {

    Alert(Symbol(), " M", Period(), " Sell Alert");

    }



    IndicatorShortName("RSI("+RSIPeriod+") (Alert on)");



    }



    // ======= Alert Ends =========







    return(0);



    }

  • #2
    What kindof Alert are you looking for?

    Comment


    • #3
      I think he is try to develop an alert signal to BUY or SELL..

      Comment

      Working...
      X