/* TSKPType 1, 2, or 3 setups
Type 1  Buy setup                                                               
                                                                Sell setup
                                A higher low is in place                        
                                                                A lower high is 
in place
                                A Blue Arrow below a bar                        
                                                                A Red Arrow 
above a bar
                                The bar is an up or dojii blue bar              
                                                The bar is an down or dojii red 
bar
                                A900 above Autostop                             
                                                                        A900 
below Autostop
                                Medium remained blue during the recent 
retracement                      Medium remained red during the recent 
retracement

Type 2  Buy setup                                                               
                                                                Sell setup
                                A higher low is in place                        
                                                                A lower high is 
in place
                                A Blue Arrow below a bar                        
                                                                A Red Arrow 
above a bar
                                The bar is an up or dojii blue bar              
                                                The bar is an down or dojii red 
bar
                                A900 above Autostop                             
                                                                        A900 
below Autostop
                                Price closed above KPWaterlevel                 
                                                Price closed below KPWaterlevel
                                Medium changed to red during the recent 
retracement             Medium changed to blue during the recent
                                AND was blue at the time when the Blue up arrow 
                        retracement AND was red at the time when the red
                                appeared.                                       
                                                                                
        up arrow appeared.

Type 3  Buy setup                                                               
                                                                Sell setup
                                A higher low is in place                        
                                                                A lower high is 
in place
                                A Blue Arrow below a bar                        
                                                                A Red Arrow 
above a bar
                                The bar is an up or dojii blue bar              
                                                The bar is an down or dojii red 
bar
                                A900 above Autostop                             
                                                                        A900 
below Autostop
                                Price closed above KPWaterlevel                 
                                                Price closed below KPWaterlevel
                                Medium changed to red during the recent         
                                Medium changed to blue during the recent
                                retracement, was still red at the time when the 
Blue            retracement, was still blue at the time when the Red
                                up arrow appeared but above the Moving Average  
                        down arrow appeared but below the Moving Average

*/
SetBarsRequired(350, -0);

//user parameters
parmPlotScoreCard = ParamToggle("Plot KPScoreCard", "No|Yes", 1);
parmPlotA900AutoStop = ParamToggle("Plot A900/AutoStop", "No|Yes", 0);
parmA900Color = ParamColor("A900 Color", colorWhite);
parmA900Style = ParamStyle("A900 Style", styleLine, maskAll);
parmAutoStopColor = ParamColor("AutoStop Color", colorYellow);
parmAutoStopStyle = ParamStyle("AutoStop Style", styleLine, maskAll);
parmPPTextColor = ParamColor("PP Text color", colorBlack);
parmPPTrndColorUp = ParamColor("PP Trend Up color", ColorRGB(167,224,243) );
parmPPTrndColorDn = ParamColor("PP Trend Dwn color", ColorRGB(255,192,203) );
parmPPTextOffSet = Param("PP OffSet", 0.60, 0.40, 1.5, 0.1);
parmTickMultipler = Param("M/W tick allowance", 1, 0, 10, 1);
parmA900AutoStopX = ParamToggle("Plot A900/AutoStop Cross", "No|Yes");
parmA900AutoStopColorX = ParamColor("A900/AutoStop Cross Color", colorBlack);
ParmSCThreshold = Param("ScoreCard Threshold", 3, 1, 9, 1);
parmVoice = ParamToggle("Voice 123 Setups", "No|Yes", 0);
parmAlert = ParamToggle("Alert 123 Setups", "No|Yes", 0);
parmPivotPop = ParamToggle("PivotPop", "No|Yes", 1);
parmBarCancel = Param("Bar Cancel", 7, 1, 20, 1);
parmWaterLevelColor = ParamColor("WalterLevel Color", ColorRGB(127,255,212));
parmWaterLevelStyle = ParamStyle("WaterLevel Style", styleLine, maskAll);
parmBBPeriod = Param("Bollinger Band Period", 10, 2, 30, 1);
parmBBSD = Param("bollinger Band SD", 0.8, 0.2, 3.0);
ParmPlotPPIndicators = ParamToggle("Plot Pivot Pop indicators", "No|Yes", 0);
parmBBColor = ParamColor("BBands Color", colorBlack);
parmBBStyle = ParamStyle("BBands Style", styleLine, maskAll);

ParmDebug = ParamToggle("Debug", "No|Yes", 0);

// constants
_N(PaneName = Name() + Interval(2)+ _SECTION_NAME());
_N(NewBarName = "NewBar" + PaneName);

//functions
function NewBarP()
{
        PrevDT = StaticVarGet( NewBarName);
        DT = LastValue(DateTime());
        StaticVarSet( NewBarName,DT);
        return DT != PrevDT;
}
function MRoundP(Number, Multiple )
{
        if(Multiple == 0 )
        {

                xMultiple = 0.01;       }
        else
        {
        xMultiple = Multiple; 
        }
        Divided = Number / xMultiple;
        intDivided = int(Divided);
        intDivided = intDivided + round(Divided - intDivided);
        return intDivided * xMultiple;
}

//miscellaneous setups
ObjAB = CreateObject("Broker.Application");
ticker = objAB.Stocks(Name() );
if(ticker.TickSize == 0)
        {
                TickValue = 0.01;       //set TickValue to a penney
        }
else
        {
                TickValue = ticker.TickSize;    // use Tick Size for this symbol
        }
NewBarSignal = NewBarP();
//  KP Indicators
KPA900 = E_TSKPA900 (Close);
KPAutoStop = E_TSKPAUTOSTOP (High,Low,Close);
Ctmpl = E_TSKPCOLORTMPL(Open,High,Low,Close,Volume);    //ScoreCard
KPScoreCard = 0;
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd0 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd1 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd2 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd3 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd4 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd5 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd6 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd7 > 0, 1, -1); 
KPScoreCard = KPScoreCard  + IIf(tskp_colortmplcnd8 > 0, 1, -1); 

if(parmDebug == 1)
        {
                printf("a900: %0.6f% \nAutoStop: %0.6f%\nScoreCard: %0.0f%\n", 
KPA900, KPAutoStop, KPScoreCard);
        }
if(parmPlotScoreCard == 1)
        {
                _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, 
Hi %g, Lo %g, Close %g% (%0.4f%) {{VALUES}}", O, H, L, C, SelectedValue( C - 
Ref(C, -1)) ));
                if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
                {
                        ToolTip=StrFormat("Open: %g\nHigh:  %g\nLow:   
%g\nClose:  %g (%.2f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( 
ROC( C, 1 )));
                }
                Color = IIf(KPScoreCard >= parmSCThreshold, colorBlue, 
IIf(KPScoreCard <= -parmSCThreshold, colorRed, colorYellow) );
                Plot( C, "Close", Color , styleNoTitle | ParamStyle("OHLC 
Style") | GetPriceStyle() ); 
        }
//user want A900/AutoStop plotted
if(parmPlotA900AutoStop == 1)
        {
                Plot(KPA900, "A900", parmA900Color, parmA900Style);
                Plot(KPAutoStop, "AutoStop", parmAutoStopColor, 
parmAutoStopStyle);
        }
// find A900/AutoStop cross over/under with ScoreCard confirmation.
XOUp = (KPA900 > KPAutoStop) AND (KPScoreCard >= parmSCThreshold);      // New 
Pivot Low
XODn = (KPA900< KPAutoStop) AND (KPScoreCard <= -parmSCThreshold); // New Pivot 
High
if(parmDebug == 1)
        {
                printf(WriteIf(XOUp, "before= XOUp: True", "before= XOUp: 
False") + WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
        }
//remove duplicate signals
XOUp = ExRem(XOUp, XODn);
XODn = ExRem(XODn, XOUp);

if(parmDebug == 1)
        {
                printf(WriteIf(XOUp, "after= XOUp: True", "after= XOUp: False") 
+ WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
        }
//find the current Pivot Points - PL and PH
//remember XOUp = 1 means a PL and XODn =1 means a PH
PLBars = IIf(XOUp, LowestSinceBars(XODn, L ,1), 0);     //find the bar that 
produced the Lowest Low
PHBars = IIf(XODn, HighestSinceBars(XOUp, H, 1),0);     //find the bar that 
produced the Highest High
//PLPrice = IIf(XOUp, Ref(L, -PLBars), 0);
//PHPrice = IIf(XODn, Ref(H, -PHBars),0);
PLPrice =  Ref(L, -PLBars);
PHPrice =  Ref(H, -PHBars);

//keep track of the previous Pivot Points
PrevPLBars = Ref(BarsSince(XOUp), -1) +1;
PrevPHBars =  Ref(BarsSince(XODn), -1) +1;
PrevPLPrice =  Ref(PLPrice, -prevPLBars);
PrevPHPrice =  Ref(PHPrice, -PrevPHBars );
PivotsCloseEnough = TickValue * parmTickMultipler;
PLDifference = MroundP(PLPrice - PRevPLPrice, ticker.TickSize);
PHDifference = MroundP(PHPrice - PrevPHPrice, ticker.TickSize);
PPTrend = IIf(XOUp AND (PLDifference > PivotsCloseEnough) AND PrevPHPrice > 
PrevPLPrice AND PRevPHPrice > PLPrice, 1, 
                                IIf(XOUp AND (PLDifference <  - 
PivotsCloseEnough) AND PRevPHPrice > PrevPLPrice AND PrevPHPrice > PLPrice, -1,
                                IIf(XODn AND (PHDifference > PivotsCloseEnough) 
AND PrevPLPrice < PrevPHprice AND PrevPLPrice < PHPrice, 1,
                                IIf(XODn AND (PHDifference < 
-PivotsCloseEnough) AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -1,
                                IIf(XOUp AND (abs(PLDifference) <= 
PivotsCloseEnough) AND PrevPHPrice > PrevPLPrice AND PRevPHPrice > PLPrice, 2,
                                IIf(XODn AND (abs(PHDifference) <= 
PivotsCloseEnough) AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -2, 
0)))) ));
if(ParmDebug)
        {
                printf("Current PH Bar: %g% /Price: %g%\n", PHBars, PHPrice);
                printf("Current PL Bar: %g% /Price: %g%\n", PLBars, PLPrice);
                printf("Previous PH Bar: %g% /Price: %g%\n", PrevPHBars, 
PrevPHPrice);
                printf("Previous PL Bar: %g% /Price: %g%\n", PrevPLBars, 
PrevPLPrice) ;
                printf("PP Trend: %g%\n", PPTrend);
                printf("PHPrice - PrevPHPrice: %g%\nPLPrice - PrevPLPrice: 
%g%\nPivotsCloseEnough: %g%", PHDifference, PLDifference, PivotsCloseEnough);
        }
//PLot pivots as  text
dist = parmPPTextOffSet * ATR(10);
//for( i = 0; i < BarCount -1; i++)
for( i = 0; i < BarCount ; i++)
        {
                if(XOUp[i ] == 1 AND abs(PPTrend[i]) != 2)      //cross up 
-plot the Pivot Low
                        {
                                PlotText("PL", i - PLBars[i], PLPrice[i] - 
dist[i] , parmPPTextColor, IIf(PPTrend[i] == 1, parmPPTrndColorUp, 
IIf(PPTrend[i] == -1, parmPPTrndColorDn, colorYellow) ));
                        }
                if(XODn[i ] == 1 AND abs(PPTrend[i]) != 2)      //cross down - 
plot the pivot high
                        {
                                PlotText("PH", i - PHBars[i], PHPrice[i] + 
dist[i], parmPPTextColor, IIf(PPTrend[i] == 1, parmPPTrndColorUp, 
IIf(PPTrend[i] == -1, parmPPTrndColorDn, colorYellow) ));
                        }
                if(XOUp[i ] == 1 AND (PPTrend[i]) == 2) // the Pivot Low is a W 
Bottom
                        {
                                PlotText("PW", i - PLBars[i], PLPrice[i] - 
dist[i] , parmPPTextColor,  colorYellow) ;
                        }
                if(XODn[i ] == 1 AND PPTrend[i] == -2)  //cross down -  pivot 
high is a M Top
                        {
                                PlotText("PM", i - PHBars[i], PHPrice[i] + 
dist[i], parmPPTextColor,  colorYellow) ;
                        }
        }       //end For
// Plot A900/AutoStop cross over/under
if(parmA900AutoStopX == 1)
        {
                PlotShapes(IIf(Cross(KPA900, KPAutoStop), shapeUpTriangle, 
shapeNone), parmA900AutoStopColorX, 0, L, -30);
                PlotShapes(IIf(Cross(KPAutoStop, KPA900), shapeDownTriangle, 
shapeNone), parmA900AutoStopColorX, 0, H , -30);
        }
//PHLine = LineArray(BarCount - LastValue(PHBars) -3, LastValue(PHPrice), 
BarCount - LastValue(PHBars) +2, LastValue(PHPrice), 0);
//Plot(PHLine, "PH", colorBlack, styleLine);
//PLLine = LineArray(BarCount - LastValue(PLBars) -3, LastValue(PLPrice), 
BarCount - LastValue(PLBars) +2, LastValue(PLPrice), 0);
//Plot(PLLine, "PL", colorBlack, styleLine);
// identify M, lazy M, W and Lazy W formations
//Pivot Pop code
if(parmPivotPop == 1)
        {
                //Kp indicators for Pivot Pop
                dummy = E_TSKPFAST2(Open, High, Low, Close, Volume);
                KPFast2 = IIf(tskp_fast2val1 > 0, 1, -1);
                //calculations
                BarsSinceXOUp =BarsSince(XOUp);
                BarsSinceXODn = BarsSince(XODn);
                UBB = BBandTop(C, parmBBPeriod, parmBBSD);
                LBB = BBandBot(C, parmBBPeriod, parmBBSD);
                PopFilter = True;
                if(parmDebug == 1)
                        {
                                printf("\nFast2: %1.0f% \nUBB: %0.6f%\nLBB: 
%0.6f%\nC: %g%\n", KPFast2, UBB, LBB, C);
                                printf("Bars since Last XOUp: %1.0f%\nBars 
since last XODn: %1.0f%\n", BarsSinceXOUp, BarsSinceXODn );
                                printf("Bars since PPTrnd =1: %1.0f%\nBars 
since PPTrnd = -1: %1.0f%\n", BarsSince(PPTrend ==1), BarsSince(PPTrend == -1) 
);    
                                
                }
                PPopUp = (BarsSince(PPTrend >= 1) < BarsSince(PPTrend <= -1)) 
AND (BarsSince(XOUp) <= parmBarCancel) AND (KPA900 >= KPAutoStop) AND(KPFast2 
== 1) AND (KPScoreCard >= 5)
                                 AND PopFilter AND (C > UBB) AND (C > O) ;
                PPopUp = IIf( PPopUp AND Sum(PPopUP, BarsSince(XOUp)+1) == 1, 
True, False );    //keep only the 1st signal
                PPopDn = (BarsSince(PPTrend <= -1) < BarsSince(PPTrend >= 1)) 
AND (BarsSince(XODn) <= parmBarCancel) AND (KPA900 <= KPAutoStop) AND(KPFast2 
== -1) AND (KPScoreCard <= -5)
                                 AND PopFilter AND (C < LBB) AND (C < O) ;
                PPopDn = IIf( PPopDn AND Sum(PPopDn, BarsSince(XODn) + 1) == 1, 
True, False);   //keep only the first signal
                if(parmDebug == 1)
                        {
                                printf(WriteIf(PPopUp,"PPopUp: True", "PPopUp: 
False") + WriteIf(PPopDn, " PPopDn: True\n", " PPopDn: False\n") );
                                printf("PPopUp sum: %1.0f% \nPPopDn sum: 
%1.0f%\n", Sum(PPopUP, BarsSince(XOUp)) , Sum(PPopDn, BarsSince(XODn)) );
                        }
                // Plots
                PlotShapes(IIf(PPopUp, shapeHollowUpArrow, shapeNone), 
colorDarkBlue, 0, L, -25);
                PlotShapes(IIf(PPopDn, shapeHollowDownArrow, shapeNone), 
colorDarkRed, 0, H, -25);
                
                if(ParmPlotPPIndicators == 1)   //plot the Pivot Pop Indicators
                        {
                                Plot(UBB, "Upper BB", parmBBColor, parmBBStyle);
                                Plot(LBB, "Lower BB", parmBBColor, parmBBStyle);
                                if(parmPlotA900AutoStop == 1)
                                        {
                                                Plot(KPA900, "A900", 
parmA900Color, parmA900Style);
                                                Plot(KPAutoStop, "AutoStop", 
parmAutoStopColor, parmAutoStopStyle);
                                        }
                                Plot( 0.5, "Fast2", IIf(tskp_fast2val1 > 0, 
parmPPTrndColorUp, parmPPTrndColorDn) , styleArea |  styleNoLabel | 
styleOwnScale , 0, 10);
                        }       //endif parmPlotPPIndicators
        }       // end if parmPivotPop
// Type 1, 2 or 3 setups
// kp indicators
KPWaterlevel = E_TSKPWATERLEVEL(Open,High,Low,Close,Volume);
dummy = E_TSKPMEDIUM(Close);            
KPMediumUp = tskp_mediumup;
KPMediumDn = tskp_mediumdown;
KPMediumMA = tskp_mediumma;
KPMedium = KPMediumUp + KPMediumDn;
//calculations
PLBars = IIf(XOUp, LowestSince(XODn, KPMedium ,1), 0);  //find the  Lowest Low
PHBars = IIf(XODn, HighestSinceBars(XOUp, KPMedium, 1),0);      //find the bar 
that produced the Highest High
PrevPLMedium =  Ref(KPMedium, -prevPLBars);
PrevPHMedium =  Ref(KPMEdium, -PrevPHBars );

Type1Filter = IIf(PPopUp AND (LowestSince(XODn, KPMedium, 1) > 0 ) AND 
(HighestSince(XODn, KPMedium, 1) > 0 ), True, IIf(PPopDn AND 
(HighestSince(XOUp, KPMedium ,1) < 0) AND (LowestSince(XOUp, KPMedium ,1) < 0), 
True, False));
Type2Filter = IIf(PPopUp AND LowestSince(XODn, KPMedium, 1) < 0 AND KPMedium > 
0, True, IIf(PPopDn  AND (HighestSince(XOUp, KPMedium ,1) > 0) AND KPMEdium < 
0, True, False));
Type3Filter = IIf(PPopUp AND LowestSince(XODn, KPMedium, 1) < 0 AND KPMedium < 
0 AND (KPMedium > KPMediumMA), True, IIf(PPopDn AND  (HighestSince(XOUp, 
KPMedium ,1) > 0) AND KPMEdium > 0  AND(KPMedium < KPMediumMA), True, False));

Type1Buy =      PPopUp AND ((Close - Open) >= 0) AND (KPScoreCard >= 
ParmSCThreshold) AND Type1Filter;
Type1Sell = PPopDn AND ((Close - Open) <= 0) AND (KPScoreCard <= 
-ParmSCThreshold) AND Type1Filter;
Type2Buy =      PPopUp AND ((Close - Open) >= 0) AND (KPScoreCard >= 
ParmSCThreshold) AND Type2Filter AND C > KPWaterLevel;
Type2Sell = PPopDn AND ((Close - Open) <= 0) AND (KPScoreCard <= 
-ParmSCThreshold) AND Type2Filter AND C < KPWaterLevel;
Type3Buy =      PPopUp AND ((Close - Open) >= 0) AND (KPScoreCard >= 
ParmSCThreshold) AND Type3Filter AND C > KPWaterLevel;
Type3Sell = PPopDn AND ((Close - Open) <= 0) AND (KPScoreCard <= 
-ParmSCThreshold) AND Type3Filter AND C < KPWaterLevel;


if(parmDebug == 1)
        {
                printf("Type1Filter: %g%\nType2Filter: %g%\nType3Filter: 
%g%\n", Type1Filter, Type2Filter, Type3Filter);
                printf("KPWaterlevel: %g%\n",  KPWaterLevel);
                printf("KPMedium: %g%\nKPMediumMA: %g%\n", KPMedium, 
KPMediumMA);
                printf("Highest XOUp Medium: %g%\nLowest XOUp Medium: %g%\n", 
HighestSince(XOUp, KPMedium, 1), LowestSince(XOUp, KPMedium ,1) );
                printf("Highest XODn Medium: %g%\nLowest XODn Medium: %g%\n", 
HighestSince(XODn, KPMedium, 1), LowestSince(XODn, KPMedium ,1) );
                printf("Prev PH Medium: %g%:Prev PL Medium: %g%\n", 
PrevPHMedium, PrevPLMedium);
                printf("Type1Buy: %g%:Type1Sell: %g%\n", Type1Buy, Type1Sell);
                printf("Type2Buy: %g%:Type2Sell: %g%\n", Type2Buy, Type2Sell);
                printf("Type3Buy: %g%:Type3Sell: %g%\n", Type3Buy, Type3Sell);
        }
                
// Plots
PlotShapes(IIf(Type1Buy, shapeDigit1 , IIf(Type1Sell, shapeDigit1, shapeNone)), 
IIf(Type1Buy, colorBlue, IIf(Type1Sell, colorRed, Null)), 0, IIf(Type1Buy, 
High, IIf(Type1Sell, L, O)), IIf(Type1Buy, 30, IIf(Type1Sell, -30, 0)) );
PlotShapes(IIf(Type2Buy, shapeDigit2 , IIf(Type2Sell, shapeDigit2, shapeNone)), 
IIf(Type2Buy, colorBlue, IIf(Type2Sell, colorRed, Null)), 0, IIf(Type2Buy, 
High, IIf(Type2Sell, L, O)), IIf(Type2Buy, 30, IIf(Type2Sell, -30, 0)) );
PlotShapes(IIf(Type3Buy, shapeDigit3 , IIf(Type3Sell, shapeDigit3, shapeNone)), 
IIf(Type3Buy, colorBlue, IIf(Type3Sell, colorRed, Null)), 0, IIf(Type3Buy, 
High, IIf(Type3Sell, L, O)), IIf(Type3Buy, 30, IIf(Type3Sell, -30, 0)) );

Plot(KPWaterLevel, "KPWaterLevel", parmWaterLevelColor, parmWaterLevelStyle);
// HMM how to print Medium on a price chart

//voice
if(parmVoice ==1)
        {
                if(NewBarSignal)
                {
                        if( LastValue(Ref(Type1Buy, -1)) == 1)  Say(Interval(2) 
+ " New Type one buy.");
                        if( LastValue(Ref(Type2Buy, -1)) == 1)  Say(Interval(2) 
+ " New Type two buy");
                        if( LastValue(Ref(Type3Buy, -1)) == 1)  Say(Interval(2) 
+ " New Type three buy.");

                        if( LastValue(Ref(Type1Sell,-1))  ==1)  Say(Interval(2) 
+ " New Type one sell.");
                        if( LastValue(Ref(Type2Sell,-1))  ==1)  Say(Interval(2) 
+ " New Type two sell.");
                        if( LastValue(Ref(Type3Sell,-1))  ==1)  Say(Interval(2) 
+ " New Type three sell.");
                }
        }
//alerts
if(parmAlert ==1)
        {
                AlertIf(NewbarSignal AND Ref(Type1Buy, -1), "", "Type 1 Buy.", 
1, 15, 0);
                AlertIf(NewbarSignal AND Ref(Type2Buy, -1), "", "Type 2 Buy.", 
1, 15, 0);
                AlertIf(NewbarSignal AND Ref(Type3Buy, -1), "", "Type 3 Buy.", 
1, 15, 0);
                AlertIf(NewbarSignal AND Ref(Type1Sell, -1), "", "Type 1 
Sell.", 2, 15, 0);
                AlertIf(NewbarSignal AND Ref(Type2Sell, -1), "", "Type 2 
Sell.", 2, 15, 0);
                AlertIf(NewbarSignal AND Ref(Type3Sell, -1), "", "Type 3 
Sell.", 2, 15, 0);
        }

Reply via email to