Can some one please post the code for this [Pennant Brkout UP] indicator for Radarscreen. I am running TS2000i so an ELD won't cut it - need it in text form so I can cut and past into PowerEditor and make any changes necessary to convert to TS2000i. It's supposed to be posted on the forum but in ELD format and I could not find it. PM me with it if you don't want Los hermanos Cruz to see.
Aw, c'mon, someone must have it. Just a quick copy and paste would really help me. WRT to intellectual property, as far as I am aware this indicator is based on the code in an article on scanning for pennants by Marcos Katsanos in TASC. He provided the Metastock code and in other articles of his TS provided the TS code, but with this particular one for some reason did not (missed deadline?).
Code: { 1. NOT DESIGNED TO UPDATE AT EVERY TICK. 2. CAN BE USED AS A VALIDATION TOOL FOR THE RADARSCREEN INDICATORS: PENNANT BRKOUT UP PENNANT BRKOUT DN This ShowMe will draw each pennant formation identified, and also plot the up or down breakout from each pennant, whichever comes first, if it occurs within BarsPast bars of the completion of the pennant. Pennant extensions for the BarsPast bars are plotted as points. The breakouts are plotted as cross ShowMe's. If a new pennant is identified within BarsPast bars of the previous pennant, the new pennant supersedes the previous pennant, but if pennant graphics are being drawn (DrawLines = true ), the previous pennant graphics are not removed. If there is a breakout from the most recent pennant within BarsPast bars of its completion, plotted as a ShowMe, the pennant lines are drawn in a wider width. This helps to distinguish it from any other pennants nearby. For more information about how the Pennant function works, please refer to the in-line documentation included in the function code. } inputs: Length( 7 ), MaxConsolIndex( 1.5 ), BarsPast( 5 ), DrawLines( true ), DrawExtensions( true ), Color1( Red ), Color2( Magenta ) ; { Color1 and Color2 are used in an alternating fashion each time a new pennant is found } variables: LengthMinus1( Length - 1 ), oTLHiStartPr( 0 ), oTLHiEndPr( 0 ), oTLLoStartPr( 0 ), oTLLoEndPr( 0 ), Color( Color2 ), TLHi( 0 ), TLLo( 0 ) ; Value1 = Pennant( Length, MaxConsolIndex, BarsPast, oTLHiStartPr, oTLHiEndPr, oTLLoStartPr, oTLLoEndPr ) ; if Value1 = 1 then begin { switch to alternate color } if Color = Color2 then Color = Color1 else Color = Color2 ; if DrawLines then begin TLHi = TL_New( Date[LengthMinus1], Time[LengthMinus1], oTLHiStartPr, Date, Time, oTLHiEndPr ) ; TL_SetExtLeft( TLHi, false ) ; TL_SetExtRight( TLHi, false ) ; TL_SetColor( TLHi, Color ) ; TLLo = TL_New( Date[LengthMinus1], Time[LengthMinus1], oTLLoStartPr, Date, Time, oTLLoEndPr ) ; TL_SetExtLeft( TLLo, false ) ; TL_SetExtRight( TLLo, false ) ; TL_SetColor( TLLo, Color ) ; end ; end else if Value1 = 2 or Value1 = 3 then begin if DrawLines then begin TL_SetSize( TLHi, 2 ) ; TL_SetSize( TLLo, 2 ) ; end ; if Value1 = 2 then Plot1( High, "PenBrkoutUp" ) else if Value1 = 3 then Plot2( Low, "PenBrkoutDn" ) ; end ; if DrawExtensions then begin if oTLHiEndPr > 0 then Plot3( oTLHiEndPr, "HiExt", Color ) ; if oTLLoEndPr > 0 then Plot4( oTLLoEndPr, "LoExt", Color ) ; end ; { ** Copyright (c) 1991-2003 TradeStation Technologies, Inc. All rights reserved. ** ** TradeStation reserves the right to modify or overwrite this analysis technique with each release. ** }
Code: { Grid indicator. Apply to intraday data. This indicator will trigger an alert, in real time, at the bar that makes the first upside breakout from the pennant if a downside breakout does not occur first. INDICATOR PLOTS Column1 - HiLine: Starting with the bar that a pennant is confirmed on, and continuing for a total of up to BarsPast bars, this column displays the value of the high-line of the pennant at that bar. This value is updated at each bar of the BarsPast period as the high-line is extended to the right, and sets the trigger for the Pennant Brkout Up alert for the next bar. Starting with the bar after an alert is triggered, Column1 switches to a display of the number of bars that have elapsed since the alert, with a negative sign. This second display continues until ColorBars bars have elapsed, at which time (or at the end of BarsPast bars if there was no alert) the display turns blank again until the next pennant is identified. For more information on how this indicator works, please refer to the in-line documentation included in the companion ShowMe "Pennant Brkout". } inputs: Length( 7 ), { number of bars in pennant } MaxConsolIndex( 1.5 ), { enter a value in the 1-to-Length range; the lower this value, the tighter the consolidation pattern } BarsPast( 5 ), { the indicator will look for a pennant breakout for this many bars after the pennant is identified } AlertFGColor( Black ), AlertBGColor( Yellow ), PlotBars( 5 ), { number of bars on which to display a value in cell once pennant is confirmed } ColorBars( 5 ) ; { number of bars the alert colors will persist; set to 0 for no cell alert coloring } variables: oTLHiStartPr( 0 ), oTLHiEndPr( 0 ), oTLLoStartPr( 0 ), oTLLoEndPr( 0 ), BarNum( 0 ), AlertBarNum( 0 ), BarsSinceAlert( 0 ), PlotThisBar( false ), ColorThisBar( false ) ; Value1 = Pennant( Length, MaxConsolIndex, BarsPast, oTLHiStartPr, oTLHiEndPr, oTLLoStartPr, oTLLoEndPr ) ; BarNum = BarNumber ; if Value1 = 2 then begin Alert( "Pennant brkout up" ) ; AlertBarNum = BarNum ; end ; BarsSinceAlert = BarNum - AlertBarNum ; PlotThisBar = AlertBarNum > 0 and BarsSinceAlert < PlotBars + 1 ; ColorThisBar = ColorBars > 0 and BarsSinceAlert < ColorBars + 1 ; if PlotThisBar and BarsSinceAlert > 0 then begin Plot1( -BarsSinceAlert, "HiLine" ) ; if ColorThisBar then begin SetPlotColor( 1, AlertFGColor ) ; SetPlotBGColor( 1, AlertBGColor ) ; SetPlotColor( 2, AlertFGColor ) ; SetPlotBGColor( 2, AlertBGColor ) ; end ; end else if oTLHiEndPr > 0 then begin Plot1( oTLHiEndPr, "HiLine" ) ; if ColorThisBar then begin SetPlotColor( 1, AlertFGColor ) ; SetPlotBGColor( 1, AlertBGColor ) ; SetPlotColor( 2, AlertFGColor ) ; SetPlotBGColor( 2, AlertBGColor ) ; end ; end ;
Skepticaltrader, thanks, very much appreciated but it is the Radarscreen version that I really need and from what you posted it would seem that I need the function code as well. Nana, do you have the accompanying function code (which I suspect is needed - but i could be wrong)
I think the function code is in a function called pennant - just tried to verify Nana's code and 'pennant' in the body of Nana's code was flagged as not recognised by easylanguage - suggesting it is a missing function.
The code above from TS8.2, they always do some changes to some indicators from version to version and may be function not there in TS2000i. check PM
Does this help? Pennant (Series Function) Disclaimer For the purposes of this study, a pennant is defined as a converging consolidation pattern on a bar chart. This includes cases where the two straight lines bounding the pattern's highs and lows are sloping in opposite directions as well as in the same direction, as long as they are converging. The limiting case of when the two lines are parallel is included. Note that this definition automatically includes certain consolidation patterns that may otherwise be known as "flags". Algorithm Check if the Consolidation Index (True Price Channel/Average True Range) is low enough (i.e., < MaxConsolIndex) to indicate a significant degree of price consolidation. ConsolIndex values can range between 1 and Length. Low values indicate price consolidation, high values indicate price extension. To identify reasonable consolidation patterns, some suitable combinations of Length/ MaxConsolIndex could be 7/1.5 and 15/2. (Also see the RS_PriceExtension function, which looks for high values of ConsolIndex.) If price consolidation is confirmed, outline the pattern by "drawing" a linear regression line through the pattern's highs and a second such line through the pattern's lows, and check if the lines are converging. If the lines are converging, a pennant exists; finish defining the pennant by shifting the lines outwards as much as necessary to fully enclose all the bars in the consolidation pattern. For the next BarsPast bars, or until the pennant converges, whichever comes first, look for the price to breakout of the pennant, up or down, whichever comes first. (Simultaneous up and down breakouts are ignored.) Usage Value1 = PennantLength, MaxConsolIndex, BarsPast, oTLHiStartPr, oTLHiEndPr, oTLLoStartPr, oTLLoEndPr); Returns 1 if a pennant has just been identified. (The start and end prices of the defining lines are returned as outputs.) 2 if the price has broken out above the most recently completed pennant within the previous BarPast bars. 3 if the price has broken out below the most recently completed pennant within the previous BarPast bars. -1 if none of the above. Parameters Length (Input) The number of bars in the pennant. MaxConsolIndex (Input) See algorithm step 1 above. BarPast (Input) See algorithm step 4 above. oTLHiStartPr (Output) Start price of current pennantâs hi-line. oTLHiEndPr (Output) End price of current pennantâs hi-line (this continues to be updated for BarsPast bars after the pennant is confirmed). oTLLoStartPr (Output) Start price of current pennantâs lo-line. oTLLoEndPr (Output) End price of current pennantâs lo-line (this continues to be updated for BarsPast bars after the pennant is confirmed). Remarks If a new pennant is identified within BarsPast bars of the previous pennant, the new pennant supersedes the previous pennant. Example inputs: Length(7), MaxConsolIndex(1.5), BarsPast(5) ; variables: oTLHiStartPr(0), oTLHiEndPr(0), oTLLoStartPr(0), oTLLoEndPr(0) ; Value1 = Pennant(Length, MaxConsolIndex, BarsPast, oTLHiStartPr, oTLHiEndPr, oTLLoStartPr, oTLLoEndPr) ; Plot1(Value1) ;
Yes it does help, but it is not the actual function - it is the explanatory notes - just being accurate here, not ungrateful