Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

indicator-master

Members
  • Content Count

    2
  • Joined

  • Last visited

Posts posted by indicator-master


  1. {

    This indicator:

    (1) INSERTS DnTL's/UpTL's connecting each new SwingHi/SwingLo with the next most

    recent higher/lower SwingHi/SwingLo within the last 10 SwingHi's/SwingLo's;

    (2) EXTENDS each new TL to the right and SETS it's color and alert type;

    (3) TRUNCATES a DnTL/UpTL on the right when the next new DnTL/UpTL is drawn (if the

    History input is set to "Yes"), or BarsPast bars after it has been breached,

    whichever comes first.

    (4) DELETES a DnTL/UpTL when the next new DnTL/UpTL is drawn, if the History input

    is set to "No".

     

    NOTE: This indicator may not work well with low-count tick bars, such as 10-tick bars,

    etc., because the time resolution of the bars may not be high enough for each bar to

    have a distinct time stamp.

    }

     

    inputs:

    SwHiStrength( 4 ),

    SwLoStrength( 4 ),

    BarsPast( 10 ),

    History( "Yes" ),

    DnTLColor( Red ),

    UpTLColor( Cyan ),

    AlertType( "IntraBar" ) ;

     

    variables:

    DnTLRef( -1 ),

    DnTLEndBar( 0 ),

    DnTLBreak( false ),

    DnTLColorNum( DnTLColor ),

     

    UpTLRef( -1 ),

    UpTLEndBar( 0 ),

    UpTLBreak( false ),

    UpTLColorNum( UpTLColor ),

     

    Index( 0 ),

    BarNum( 0 ),

    HistoryTF( false ),

    AlertTypeCAPS( UpperStr( AlertType ) ) ;

     

    arrays:

    SwHiDate[10]( 0 ),

    SwHiTime[10]( 0 ),

    SwHiVal[10]( -1000000 ),

    SwLoDate[10]( 0 ),

    SwLoTime[10]( 0 ),

    SwLoVal[10]( 1000000 ) ;

     

    if CurrentBar = 1 then

    HistoryTF = UpperStr( History ) = "YES" or UpperStr( History ) = "Y" ;

    { should also be able to do this via declaration above }

     

    BarNum = BarNumber ;

     

    if SwingHighBar( 1, High, SwHiStrength, SwHiStrength + 1 ) = SwHiStrength then

    { ie, if just confirmed SwHi }

    begin

     

    { push arrays back }

    for Value1 = 9 downto 0

    begin

    SwHiDate[ Value1 + 1 ] = SwHiDate[Value1] ;

    SwHiTime[ Value1 + 1 ] = SwHiTime[Value1] ;

    SwHiVal[ Value1 + 1 ] = SwHiVal[Value1] ;

    end ;

     

    { read in parameters of new SwHi into 0-elements of arrays }

    SwHiDate[0] = Date[swHiStrength] ;

    SwHiTime[0] = Time[swHiStrength] ;

    SwHiVal[0] = High[swHiStrength] ;

     

    { find and save the index of the next-most-recent higher SwHi if it exists }

    for Value2 = 1 to 10

    begin

    if SwHiVal[Value2] > SwHiVal[0] then

    begin

    Index = Value2 ;

    Value2 = 11 ; { short circuit the looping with 11 instead of 10; the 11

    will become 12 in the final pass }

    end ;

    end ;

     

    if Value2 = 12 then { ie, if next-most-recent higher SwHi exists }

    begin

    if DnTLRef >= 0 then { ie, if previous DnTL exists }

    begin

    if HistoryTF and DnTLBreak = false then

    { if history reqd and most recent DnTL not already truncated

    elsewhere, truncate it now }

    begin

    TL_SetEnd( DnTLRef, Date, Time, TL_GetValue( DnTLRef, Date, Time ) ) ;

    TL_SetExtRight( DnTLRef, false ) ;

    end

    else if HistoryTF = false then

    { if history not reqd, delete most recent DnTL }

    TL_Delete( DnTLRef ) ;

    end ;

    { draw new DnTL, reset break flag, save endbar, set extents/color/alert }

    DnTLRef = TL_New( SwHiDate[index], SwHiTime[index], SwHiVal[index],

    SwHiDate[0], SwHiTime[0], SwHiVal[0] ) ;

    if DnTLBreak = true then

    DnTLBreak = false ;

    DnTLEndBar = BarNum - SwHiStrength ;

    TL_SetExtLeft( DnTLRef, false ) ;

    TL_SetExtRight( DnTLRef, true ) ;

    if DnTLColorNum <> 99 then

    TL_SetColor( DnTLRef, DnTLColorNum ) ;

    if AlertTypeCAPS = "ONCLOSE" then

    TL_SetAlert( DnTLRef, 2 )

    else if AlertTypeCAPS = "INTRABAR" then

    TL_SetAlert( DnTLRef, 1 )

    else

    TL_SetAlert( DnTLRef, 0 ) ;

    end ;

    end ;

     

    if SwingLowBar( 1, Low, SwLoStrength, SwLoStrength + 1 ) = SwLoStrength then

    { ie, if just confirmed SwLo }

    begin

     

    { push arrays back }

    for Value1 = 9 downto 0

    begin

    SwLoDate[Value1+1] = SwLoDate[Value1] ;

    SwLoTime[Value1+1] = SwLoTime[Value1] ;

    SwLoVal[Value1+1] = SwLoVal[Value1] ;

    end ;

     

    { read in parameters of new SwLo into 0-elements of arrays }

    SwLoDate[0] = Date[swLoStrength] ;

    SwLoTime[0] = Time[swLoStrength] ;

    SwLoVal[0] = Low[swLoStrength] ;

     

    { find and save the index of the next-most-recent lower SwLo if it exists }

    for Value2 = 1 to 10

    begin

    if SwLoVal[Value2] < SwLoVal[0] then

    begin

    Index = Value2 ;

    Value2 = 11 ;{ short circuit the looping with 11 instead of 10; the 11

    will become 12 in the final pass }

    end ;

    end ;

     

    if Value2 = 12 then { ie, if next-most-recent lower SwLo exists }

    begin

    if UpTLRef >= 0 then { ie, if previous UpTL exists }

    begin

    if HistoryTF and UpTLBreak = false then

    { if history reqd and most recent UpTL not already truncated

    elsewhere, truncate it now }

    begin

    TL_SetEnd( UpTLRef, Date, Time, TL_GetValue( UpTLRef, Date, Time ) ) ;

    TL_SetExtRight( UpTLRef, false ) ;

    end

    else if HistoryTF = false then

    { if history not reqd, delete most recent UpTL }

    TL_Delete( UpTLRef ) ;

    end ;

    { draw new UpTL, reset break flag, save endbar, set extents/color/alert }

    UpTLRef = TL_New( SwLoDate[index], SwLoTime[index], SwLoVal[index],

    SwLoDate[0], SwLoTime[0], SwLoVal[0] ) ;

    if UpTLBreak = true then

    UpTLBreak = false ;

    UpTLEndBar = BarNum - SwLoStrength ;

    TL_SetExtLeft( UpTLRef, false ) ;

    TL_SetExtRight( UpTLRef, true ) ;

    if UpTLColorNum <> 99 then

    TL_SetColor( UpTLRef, UpTLColorNum ) ;

    if AlertTypeCAPS = "ONCLOSE" then

    TL_SetAlert( UpTLRef, 2 )

    else if AlertTypeCAPS = "INTRABAR" then

    TL_SetAlert( UpTLRef, 1 )

    else

    TL_SetAlert( UpTLRef, 0 ) ;

    end ;

    end ;

     

    { if most recent DnTL/UpTL exists AND has not yet been truncated here AND was drawn

    at least BarsPast ago AND was breached BarsPast bars ago THEN truncate it here and

    set break flag }

     

    if DnTLRef >= 0

    and DnTLBreak = false

    and BarNum > DnTLEndBar + SwHiStrength + BarsPast

    and ( Close > TL_GetValue( DnTLRef, Date, Time ) )[barsPast]

    then

    begin

    TL_SetEnd( DnTLRef, Date, Time, TL_GetValue( DnTLRef, Date, Time ) ) ;

    TL_SetExtRight( DnTLRef, false ) ;

    DnTLBreak = true ;

    end ;

     

    if UpTLRef >= 0

    and UpTLBreak = false

    and BarNum > UpTLEndBar + SwLoStrength + BarsPast

    and ( Close < TL_GetValue( UpTLRef, Date, Time ) )[barsPast]

    then

    begin

    TL_SetEnd( UpTLRef, Date, Time, TL_GetValue( UpTLRef, Date, Time ) ) ;

    TL_SetExtRight( UpTLRef, false ) ;

    UpTLBreak = true ;

    end ;

     

     

    { ** Copyright © 1991-2003 TradeStation Technologies, Inc. All rights reserved. **

    ** TradeStation reserves the right to modify or overwrite this analysis technique

    with each release. ** }


  2. this is what i have in my system:

     

     

     

     

     

     

    [LegacyColorValue = true];

     

    {=======================================HEADER=======================

     

    Study based on Connors & Raschke's "Wolfe Waves"

     

    ================================== DECLARATIONS =======================}

     

    INPUTS:

    TICKCHG(0), {Change (number of ticks) required to set up a new swing high/low.}

    PCTCHG(.2), {Percent change in price to set up a new swing high/low}

    OCCUR(1),

    PLOTBARS(20),

    ETALINE(TRUE),

    ZIGZAG(TRUE);

     

     

    ARRAY:

    PBAR[50](0),

    P[50](0);

     

    VARS:

    X(0),

    PP(1),

    JA_SLOPE1(0),

    JLA_CTR(0),

    JLA_LINE(0),

    JAIRHBAR(0), { LAST SWING HIGH BAR}

    JAIRLBAR(0), {LAST SWING LOW BAR}

    LOWSEEK(FALSE), {LOOKING FOR A LOW OR A HIGH?}

    W(0), {COUNTER}

    JLA_IRH(0), {LAST SWING HIGH VALUE}

    JLA_IRL(99999), {LAST SWING LOW VALUE}

    JA_SLOPE2(0),

    JA_SLOPE3(0),

    JLA_PT1(0),

    WOLFE(0);

     

     

    {==================MAIN PROGRAM=========================}

     

    IF CURRENTBAR = 1 THEN P[50] = C;

     

    IF LOWSEEK = FALSE AND P[50] <= H THEN

    BEGIN

    P[50] = H;

    PBAR[50] = 0;

    END;

     

     

    IF LOWSEEK = TRUE AND P[50] >= L THEN

    BEGIN

    P[50] = L;

    PBAR[50] = 0;

    END;

     

    IF (LOWSEEK = FALSE AND PBAR[50] <> 0) THEN

    BEGIN

    IF (TICKCHG = 0

    AND L < P[50] * ( 1 - PCTCHG / 100) )

    OR (TICKCHG <> 0

    AND L < ( P[50] - tickchg * minmove points)) THEN

    BEGIN

    IF ZIGZAG = TRUE THEN PLOT4[PBAR[50]](P[50],"SWINGS");

     

    LOWSEEK = TRUE;

     

    FOR W = 1 TO 49

    BEGIN

    PBAR[W] = PBAR[W+1];

    P[W] = P[W+1];

    END;

     

    P[50] = L;

    PBAR[50] = 0;

    END;

    END;

     

    IF (LOWSEEK = TRUE AND PBAR[50] <> 0) THEN

    BEGIN

    IF (TICKCHG = 0

    AND H> P[50] * ( 1 + PCTCHG / 100))

    OR (TICKCHG <> 0

    AND H > (P[50] + tickchg * minmove points )) THEN

    BEGIN

    IF ZIGZAG = TRUE THEN PLOT4[PBAR[50]](P[50],"SWINGS");

    LOWSEEK = FALSE;

     

    FOR W = 1 TO 49

    BEGIN

    PBAR[W] = PBAR[W+1];

    P[W] = P[W+1];

    END;

     

    P[50] = H;

    PBAR[50] = 0;

    END;

    END;

     

     

    IF TIME = LASTCALCTIME

    AND DATE = LASTCALCDATE

    AND P[48 - PP] <> 0 THEN

    BEGIN

    PP = -1;

    WOLFE = 0;

    WHILE WOLFE < OCCUR AND PP < 46

    BEGIN

    PP = PP + 1;

    VALUE1 = P[47-PP];

    VALUE2 = P[48-PP];

    VALUE3 = P[49-PP];

    VALUE4 = P[50-PP];

     

    CONDITION1 =

    VALUE2 > VALUE1

    AND VALUE4 > VALUE3

    AND VALUE4 < VALUE2

    AND VALUE3 < VALUE1

    AND VALUE4 > VALUE1;

     

    CONDITION2 =

    VALUE2 < VALUE1

    AND VALUE4 < VALUE3

    AND VALUE4 > VALUE2

    AND VALUE3 > VALUE1

    AND VALUE4 < VALUE1;

     

    IF CONDITION1 OR CONDITION2 THEN WOLFE = WOLFE + 1;

    END;

     

     

     

    JA_SLOPE1 = (P[49-PP] - P[47-PP]) / (PBAR[47-PP] - PBAR[49-PP]);

    JA_SLOPE2 = (P[50-PP] - P[47-PP]) / (PBAR[47-PP] - PBAR[50-PP]);

     

     

    {LINE 1-3}

    VALUE90 = TL_New(DATE[PBAR[47-PP]],TIME[PBAR[47-PP]],P[47-PP],

    DATE[PBAR[49-PP]], TIME[PBAR[49-PP]],P[49-PP]);

    Value14=TL_SetColor(VALUE90, 5);

    {VALUE93 = TL_SetExtRight(VALUE90,TRUE);}

    VALUE94 = TL_SETEND(VALUE90,DATE[PBAR[49-PP]-PLOTBARS],TIME[PBAR[49-PP]-PLOTBARS],TL_GETVALUE(VALUE90,DATE[PBAR[49-PP]-PLOTBARS],TIME[PBAR[49-PP]-PLOTBARS]));

     

    {LINE 1-4}

    VALUE91 = TL_NEW(DATE[PBAR[47-PP]],TIME[PBAR[47-PP]],P[47-PP],

    DATE[PBAR[50-PP]], TIME[PBAR[50-PP]],P[50-PP]);

    Value14=TL_SetColor(VALUE91, 16);

    TL_SETEND(VALUE91,DATE[PBAR[49-PP]-PLOTBARS],TIME[PBAR[49-PP]-PLOTBARS],TL_GETVALUE(VALUE91,DATE[PBAR[49-PP]-PLOTBARS],TIME[PBAR[49-PP]-PLOTBARS]));

     

    {ETA LINE}

     

    IF ETALINE THEN

    BEGIN

    VALUE92 = TL_NEW(DATE[PBAR[48-PP]],TIME[PBAR[48-PP]],P[48-PP],

    DATE[PBAR[50-PP]], TIME[PBAR[50-PP]],P[50-PP]);

    Value14=TL_SetColor(VALUE92, 4);

    TL_SETEND(VALUE92,DATE[PBAR[50-PP]-PLOTBARS],TIME[PBAR[50-PP]-PLOTBARS],TL_GETVALUE(VALUE92,DATE[PBAR[50-PP]-PLOTBARS],TIME[PBAR[50-PP]-PLOTBARS]));

     

    END;

    END;

     

    IF DATE = LASTCALCDATE

    AND TIME = LASTCALCTIME

    AND ZIGZAG = TRUE THEN

    BEGIN

    JA_SLOPE3 = (P[50] - P[49]) / (PBAR[49] - PBAR[50]);

    FOR JLA_CTR = PBAR[49] DOWNTO PBAR[50]

    BEGIN

    PLOT4[JLA_CTR](P[49] + (PBAR[49] - JLA_CTR) * JA_SLOPE3,"Swings");

    END;

    END;

     

    FOR W = 1 TO 50

    BEGIN

    PBAR[W] = PBAR[W]+1;

    END;

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.