PINE LIBRARY

TA

Diupdate
Library "TA"
General technical analysis functions

div_bull(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, no_broken, pW, iW, hidW, regW)
  Test for bullish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    cp_length_after: Bars after current (divergent) pivot low to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot low to be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot low to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot low (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)

div_bear(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, no_broken, pW, iW, hidW, regW)
  Test for bearish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    cp_length_after: Bars after current (divergent) pivot high to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot highto be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot high (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)
Catatan Rilis
v2
Return absolute value of degree to handle series with negative values.
Catatan Rilis
v3
- Added support for lookback # of pivots for div_bull() and div_bear()
- Fixed divergence degree calculation when indicator series has negative values
- Changed default pivot lengths for div_bull() and div_bear()

Updated:
div_bull(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW)
  Test for bullish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    cp_length_after: Bars after current (divergent) pivot low to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot low to be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot low to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot low (optional int)
    lookback_pivs: Pivots back to search for prior pivot low (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)

div_bear(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW)
  Test for bearish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    cp_length_after: Bars after current (divergent) pivot high to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot highto be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot high (optional int)
    lookback_pivs: Pivots back to search for prior pivot high (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)
Catatan Rilis
v4
Changed divergence strength/degree calculation to use the angle of the divergence line divided by 90 degrees (as opposed to the % change in the indicator value). This will keep the unweighted strength value between 0 and 1 for the indicator portion of the calculation, which is desirable because different indicator series can have wildly different ranges.
Catatan Rilis
v5
Added chk_prev_bar flag as an argument to the divergence checks, which will check for divergence using the indicator value from the prior bar. This is necessary in some cases where the indicator is using a different price source than the one passed into the divergence function.

Updated:
div_bull(pS, iS, chk_prev_bar, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW)
  Test for bullish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    chk_prev_bar: Flag to check for divergence using the indicator value from the prior bar. This is necessary in some cases where the indicator is using a different price source than the one passed in pS.
    cp_length_after: Bars after current (divergent) pivot low to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot low to be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot low to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot low (optional int)
    lookback_pivs: Pivots back to search for prior pivot low (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)

div_bear(pS, iS, chk_prev_bar, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW)
  Test for bearish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    chk_prev_bar: Flag to check for divergence using the indicator value from the prior bar. This is necessary in some cases where the indicator is using a different price source than the one passed in pS.
    cp_length_after: Bars after current (divergent) pivot high to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot highto be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot high (optional int)
    lookback_pivs: Pivots back to search for prior pivot high (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)
Catatan Rilis
v6
When calculating the divergence strength on an indicator, Scale the X coordinates to a range similar to the Y scale (X and Y scales should be on the same order of magnitude for the angle value to be meaningful. e.g. if ΔY is 10,000,000 and ΔX is 12, the angle will always be very nearly 90 degrees, which makes for a meaningless value)
Catatan Rilis
v7
Adjusted multiplier in iDelta() to use the average Y value rather than the difference of the two Y values.
Catatan Rilis
v8
Now calculating divergence strength in terms of the standard deviation.
= Δ price/StDev + Δ indicator/stDev (multiplied by specified weights)
Catatan Rilis
v9
Catatan Rilis
v10
Changes to check more thoroughly for pivots on indicator series.

Updated:
div_bull(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW)
  Test for bullish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    cp_length_after: Bars after current (divergent) pivot low to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot low to be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot low to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot low (optional int)
    lookback_pivs: Pivots back to search for prior pivot low (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)

div_bear(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW)
  Test for bearish divergence
  Parameters:
    pS: Price series (float)
    iS: Indicator series (float)
    cp_length_after: Bars after current (divergent) pivot high to be considered a valid pivot (optional int)
    cp_length_before: Bars before current (divergent) pivot highto be considered a valid pivot (optional int)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    lookback: Bars back to search for prior pivot high (optional int)
    lookback_pivs: Pivots back to search for prior pivot high (optional int)
    no_broken: Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
    pW: Weight of change in price, used in degree of divergence calculation (optional float)
    iW: Weight of change in indicator, used in degree of divergence calculation (optional float)
    hidW: Weight of hidden divergence, used in degree of divergence calculation (optional float)
    regW: Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns: [flag,degree,type,lx1,ly1,lx2,ly2]
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)
Catatan Rilis
v11
div_bull() and div_bear() - adjusted indicator pivot checking to be more inclusive.
Catatan Rilis
v12
Added function for validating harmonic XABCD patterns: harmonic_validate_xabcd()

Added:
harmonic_validate_xabcd(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, pErr, pAsym, pivot_length, gart, bat, bfly, crab)
  Validate harmonic XABCD pattern
  Parameters:
    xX: X coordinate of point X (int)
    xY: Y coordinate of point X (float)
    aX: X coordinate of point A (int)
    aY: Y coordinate of point A (float)
    bX: X coordinate of point B (int)
    bY: Y coordinate of point B (float)
    cX: X coordinate of point C (int)
    cY: Y coordinate of point C (float)
    dX: X coordinate of point D (int)
    dY: Y coordinate of point D (float)
    pErr: Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
    pAsym: Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    gart: Flag to validate Gartley pattern (bool)
    bat: Flag to validate Bat pattern (bool)
    bfly: Flag to validate Butterfly pattern (bool)
    crab: Flag to validate Crab pattern (bool)
  Returns: [flag,t1,t2,t3,t4]
flag = true if valid harmonic
t1 = true if valid gartley
t2 = true if valid bat
t3 = true if valid butterfly
t4 = true if valid crab
Catatan Rilis
v13

Added pattern_xabcd() - determine if an XABCD pattern has just completed.

Added:
pattern_xabcd(x_is_low, pivot_length, source)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v14

Added:
pat_xabcd(x_is_low, pivot_length, source)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)

Removed:
pattern_xabcd(x_is_low, pivot_length, source)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
Catatan Rilis
v15
Fixed point D validation for harmonic XABCD pattern
Catatan Rilis
v16
Fixed harmonic XABCD ΔX symmetry validation
Catatan Rilis
v17

Added:
harmonic_xabcd_validate(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, pErr, pAsym, pivot_length, gart, bat, bfly, crab)
  Validate harmonic XABCD pattern
  Parameters:
    xX: X coordinate of point X (int)
    xY: Y coordinate of point X (float)
    aX: X coordinate of point A (int)
    aY: Y coordinate of point A (float)
    bX: X coordinate of point B (int)
    bY: Y coordinate of point B (float)
    cX: X coordinate of point C (int)
    cY: Y coordinate of point C (float)
    dX: X coordinate of point D (int)
    dY: Y coordinate of point D (float)
    pErr: Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
    pAsym: Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    gart: Flag to validate Gartley pattern (bool)
    bat: Flag to validate Bat pattern (bool)
    bfly: Flag to validate Butterfly pattern (bool)
    crab: Flag to validate Crab pattern (bool)
  Returns: [flag,t1,t2,t3,t4]
flag = true if valid harmonic
t1 = true if valid gartley
t2 = true if valid bat
t3 = true if valid butterfly
t4 = true if valid crab

harmonic_xabcd_prz(type, xY, aY, bY, cY)
  Get the potential reversal zone (PRZ) levels of a harmonic XABCD pattern
  Parameters:
    type: Harmonic pattern type (int - 1 = Gartley, 2 = Bat, 3 = Butterfly, 4 = Crab)
    xY: Y coordinate of point X (float)
    aY: Y coordinate of point A (float)
    bY: Y coordinate of point B (float)
    cY: Y coordinate of point C (float)
  Returns: [bc_u, bc_l, xa_u, xa_l]
bc_u = nearest BC retracement/extension level (nearest to point C)
bc_l = farthest BC retracement/extension level (nearest to point C)
xa_u = nearest XA retracement/extension level (or the only XA level, if applicable)
xa_l = farthest XA retracement/extension level (or na if not applicable)

Removed:
harmonic_validate_xabcd(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, pErr, pAsym, pivot_length, gart, bat, bfly, crab)
  Validate harmonic XABCD pattern
Catatan Rilis
v18
Fixed harmonic retracement validation
Catatan Rilis
v19

Added:
harmonic_xabcd_validateIncomplete(xX, xY, aX, aY, bX, bY, cX, cY, pErr, pAsym, pivot_length, gart, bat, bfly, crab)
  Validate the first 3 legs of a harmonic XABCD pattern
  Parameters:
    xX: X coordinate of point X (int)
    xY: Y coordinate of point X (float)
    aX: X coordinate of point A (int)
    aY: Y coordinate of point A (float)
    bX: X coordinate of point B (int)
    bY: Y coordinate of point B (float)
    cX: X coordinate of point C (int)
    cY: Y coordinate of point C (float)
    pErr: Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
    pAsym: Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    gart: Flag to validate Gartley pattern (bool)
    bat: Flag to validate Bat pattern (bool)
    bfly: Flag to validate Butterfly pattern (bool)
    crab: Flag to validate Crab pattern (bool)
  Returns: [flag,t1,t2,t3,t4]
flag = true if valid harmonic
t1 = true if valid gartley
t2 = true if valid bat
t3 = true if valid butterfly
t4 = true if valid crab
Catatan Rilis
v20
Fixed bug with pat_axbcd() algorithm, checking wrong pivot looking for point C in bearish patterns.
Catatan Rilis
v21
Fixed bug in pat_xabcd() where intermediate low wasn't being detected between points C and D
Catatan Rilis
v22

Added:
harmonic_xabcd_przClosest(l1, l2, l3, l4)
  Get the confluent PRZ levels (i.e. the two closest PRZ levels)
Order of arguments does not matter
  Parameters:
    l1: level 1 (float)
    l2: level 2 (float)
    l3: level 3 (float)
    l4: level 4 (optional, float)
  Returns: [lL,lH]
lL = lower confluent PRZ level
lH = higher confluent PRZ level
Catatan Rilis
v23

Added:
success(entry, stop, t1, t2)
  Determine if trade is successful
  Parameters:
    entry: Entry bar index (int)
    stop: Stop level (float)
    t1: Target 1 level (float)
    t2: Target 2 level (float)
  Returns: [t1Hit,t2Hit,t1x,t1y,t2x,t2y]
Catatan Rilis
v24

Added:
harmonic_xabcd_rAndE(type, l, l1, l2)
  Get the ratio of two pattern legs, and the percent error from the theoretical harmonic ratio
Order of arguments does not matter
  Parameters:
    type: Harmonic pattern type (int - 1 = Gartley, 2 = Bat, 3 = Butterfly, 4 = Crab)
    l: Leg ID ("xab", "abc", "bcd", or "xad") (string)
    l1: Line 1 height (float)
    l2: Line 2 height (float)
  Returns: [r,e]
Catatan Rilis
v25

Added:
harmonic_xabcd_przRange()
  Get upper and lower PRZ levels

harmonic_xabcd_eD()
  Measure closeness of D to either of the two closest PRZ levels, relative to height of the XA leg

przScore()
  Measure the closeness of the two closest PRZ levels, relative to the height of the XA leg

harmonic_xabcd_eAvg()
  Get the avg retracement ratio % error

harmonic_xabcd_targets()
  Get target level

pat_xabcd_asym()
  Get the avg asymmetry %
Catatan Rilis
v26

Added:
harmonic_xabcd_przScore()
  Measure the closeness of the two closest PRZ levels, relative to the height of the XA leg

Removed:
przScore()
  Measure the closeness of the two closest PRZ levels, relative to the height of the XA leg
Catatan Rilis
v27

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v28
Catatan Rilis
v29
Catatan Rilis
v30

Added:
harmonic_xabcd_score()
  Get score values for a pattern
Catatan Rilis
v31
Added Shark and Cypher XABCD patterns

Updated:
harmonic_xabcd_validate(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, pErr, pAsym, pivot_length, gart, bat, bfly, crab, shark, cyph)
  Validate harmonic XABCD pattern
  Parameters:
    xX: X coordinate of point X (int)
    xY: Y coordinate of point X (float)
    aX: X coordinate of point A (int)
    aY: Y coordinate of point A (float)
    bX: X coordinate of point B (int)
    bY: Y coordinate of point B (float)
    cX: X coordinate of point C (int)
    cY: Y coordinate of point C (float)
    dX: X coordinate of point D (int)
    dY: Y coordinate of point D (float)
    pErr: Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
    pAsym: Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    gart: Flag to validate Gartley pattern (bool)
    bat: Flag to validate Bat pattern (bool)
    bfly: Flag to validate Butterfly pattern (bool)
    crab: Flag to validate Crab pattern (bool)
    shark: Flag to validate Shark pattern (bool)
    cyph: Flag to validate Cypher pattern (bool)
  Returns: [flag,t1,t2,t3,t4,t5,t6]
flag = true if valid harmonic
t1 = true if valid gartley
t2 = true if valid bat
t3 = true if valid butterfly
t4 = true if valid crab
t5 = true if valid shark
t6 = true if valid cypher

harmonic_xabcd_validateIncomplete(xX, xY, aX, aY, bX, bY, cX, cY, pErr, pAsym, pivot_length, gart, bat, bfly, crab, shark, cyph)
  Validate the first 3 legs of a harmonic XABCD pattern
  Parameters:
    xX: X coordinate of point X (int)
    xY: Y coordinate of point X (float)
    aX: X coordinate of point A (int)
    aY: Y coordinate of point A (float)
    bX: X coordinate of point B (int)
    bY: Y coordinate of point B (float)
    cX: X coordinate of point C (int)
    cY: Y coordinate of point C (float)
    pErr: Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
    pAsym: Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
    pivot_length: Bars before and after prior pivot high to be considered valid pivot (optional int)
    gart: Flag to validate Gartley pattern (bool)
    bat: Flag to validate Bat pattern (bool)
    bfly: Flag to validate Butterfly pattern (bool)
    crab: Flag to validate Crab pattern (bool)
    shark: Flag to validate Shark pattern (bool)
    cyph: Flag to validate Cypher pattern (bool)
  Returns: [flag,t1,t2,t3,t4]
flag = true if valid harmonic
t1 = true if valid gartley
t2 = true if valid bat
t3 = true if valid butterfly
t4 = true if valid crab
t5 = true if valid shark
t6 = true if valid cypher
Catatan Rilis
v32

Updated:
harmonic_xabcd_przScore()
  Measure the closeness of the two closest PRZ levels, relative to the height of the XA leg
Catatan Rilis
v33

Added:
harmonic_xabcd_fibDispTxt()
  Get fib ratio display text
Catatan Rilis
v34

Added:
harmonic_xabcd_symbol()
  Get pattern symbol
Catatan Rilis
v35

Added:
harmonic_xabcd_scoreTot()
  Get total weighted score value for a pattern
Catatan Rilis
v36

Removed:
harmonic_xabcd_scoreTot()
  Get total weighted score value for a pattern

harmonic_xabcd_fibDispTxt()
  Get fib ratio display text

harmonic_xabcd_symbol()
  Get pattern symbol
Catatan Rilis
v37

Added:
harmonic_xabcd_scoreTot()
  Get pattern's total weighted score
Catatan Rilis
v38

Added:
harmonic_xabcd_fibDispTxt()
  Get fib ratio display text

harmonic_xabcd_symbol()
  Get pattern symbol
Catatan Rilis
v39
Catatan Rilis
v40
Catatan Rilis
v41
Catatan Rilis
v42

Added:
harmonic_xabcd_stop()
  Get stop level
Catatan Rilis
v43
Fixed bug with cypher validation of point D (retracement of XC, not XA)
Catatan Rilis
v44
Catatan Rilis
v45
Removed redundant "==true" comparisons
Catatan Rilis
v46
Fixed bug with cypher PRZ level
Catatan Rilis
v47

Added:
pat_xabcd_avgDev()
  Get the average % deviation of an XABCD pattern
Catatan Rilis
v48
Catatan Rilis
v49
Testing
Catatan Rilis
v50
Testing
Catatan Rilis
v51

Added:
pat_xabcd_validate(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, pErr, pAsym)
  Validate custom XABCD pattern
  Parameters:
    xX: X coordinate of point X (int)
    xY: Y coordinate of point X (float)
    aX: X coordinate of point A (int)
    aY: Y coordinate of point A (float)
    bX: X coordinate of point B (int)
    bY: Y coordinate of point B (float)
    cX: X coordinate of point C (int)
    cY: Y coordinate of point C (float)
    dX: X coordinate of point D (int)
    dY: Y coordinate of point D (float)
    pErr: Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
    pAsym: Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
  Returns: TRUE if pattern is valid

pat_xabcd_validateIncomplete(xX, xY, aX, aY, bX, bY, cX, cY, pErr, pAsym)
  Validate the first 3 legs of a custom XABCD pattern
  Parameters:
    xX: X coordinate of point X (int)
    xY: Y coordinate of point X (float)
    aX: X coordinate of point A (int)
    aY: Y coordinate of point A (float)
    bX: X coordinate of point B (int)
    bY: Y coordinate of point B (float)
    cX: X coordinate of point C (int)
    cY: Y coordinate of point C (float)
    pErr: Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
    pAsym: Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
  Returns: TRUE if first 3 legs are valid

pat_xabcd_prz(xY, aY, bY, cY)
  Get the potential reversal zone (PRZ) levels of a custom XABCD pattern
  Parameters:
    xY: Y coordinate of point X (float)
    aY: Y coordinate of point A (float)
    bY: Y coordinate of point B (float)
    cY: Y coordinate of point C (float)
  Returns: [xad_lvl,bcd_lvl,xcd_lvl]
Catatan Rilis
v52

Updated:
harmonic_xabcd_eAvg()
  Get the avg retracement ratio % error
Catatan Rilis
v53
Fixed bug with success(), extra checks on entry bar
Catatan Rilis
v54

Added:
tradeClosed()
  Determine if Target or Stop was hit on the current bar
Catatan Rilis
v55
Bug fix for closed trade check
Catatan Rilis
v56
Bug fix for closed trade check
Catatan Rilis
v57

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v58
Short circuit incomplete XABCD pattern search
Catatan Rilis
v59

Updated:
harmonic_xabcd_przRange()
  Get upper and lower PRZ levels
Catatan Rilis
v60

Added:
harmonic_xabcd_entry()
Catatan Rilis
v61

Added:
xabcd_entryHit()
  Determine if entry level was reached. Assumes pattern is active/not timed out.
Catatan Rilis
v62
Updated przClosest check to exclude values of 0 (only used when actual retracement value < 0)
Catatan Rilis
v63
backed out last change
Catatan Rilis
v64
test
Catatan Rilis
v65
dont allow entry value < 0
Catatan Rilis
v66
Updated to use latest version of Fib script (improved efficiency for precise fibs)
Catatan Rilis
v67
test

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v68
Reverted test changes

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v69
Test allowing divergence checks with pivot length of 0
Catatan Rilis
v70

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete, inc_skipC)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
    inc_skipC: skip incomplete patterns whose point C is at or before this bar index (to avoid returning the same pattern on consecutive bars)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v71
Catatan Rilis
v72

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete, inc_skipC)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
    inc_skipC: skip incomplete patterns whose point C is at this bar index (to avoid returning the same pattern on consecutive bars)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v73
Catatan Rilis
v74
Catatan Rilis
v75

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v76

Updated:
tradeClosed(eX, eY, stop, t1h, t2h, t1, t2)
  Determine if Target or Stop was hit on the current bar
  Parameters:
    eX
    eY
    stop
    t1h
    t2h
    t1
    t2
Catatan Rilis
v77

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
  Returns: [flag, x, a, b, c, d]
flag = true if valid XABCD pattern completed on previous bar
x = point X
a = point A
b = point B
c = point C
d = point D
Catatan Rilis
v78
test revert d.y to 0.0
Catatan Rilis
v79
Reverted changes using point object for pat_xabcd()

Updated:
pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete)
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
    incomplete: Flag to return an incomplete XABC pattern (bool, dft = false)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy,dx,dy]
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v80
Add stop flag to tradeClosed()
Catatan Rilis
v81

Added:
test_cd(cd, bc, xa, xc, ad, pErr, p_types)
  Validate CD leg of XABCD
  Parameters:
    cd
    bc
    xa
    xc
    ad
    pErr
    p_types
Catatan Rilis
v82

Added:
pat_xabcdIncomplete(x_is_low, pivot_length, source, conf_length)
  Determine if an XABCD pattern is in progress (point C was just confirmed)
  Parameters:
    x_is_low: Flag to determine if point X is a low pivot, i.e. bullish M pattern (bool, dft = true)
    pivot_length: Number of bars before and after a valid pivot (int, dft = 5)
    source: Source series (float, dft = na, will use high and low series)
    conf_length: Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
  Returns: [flag,xx,xy,ax,ay,bx,by,cx,cy]
flag = true if valid XABC pattern completed on bar_index[conf_length]
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
Catatan Rilis
v83

Added:
pat_xabcd_testSym(xax, abx, bcx, cdx, pAsym)
  Validate ΔX symmetry of XABCD pattern
  Parameters:
    xax
    abx
    bcx
    cdx
    pAsym
Catatan Rilis
v84
updated pat_xabcdIncomplete()
Catatan Rilis
v85
pat_xabcdIncomplete() bug fix
Divergenceharmonic_patternsstatisticstechindicatorxabcd

Perpustakaan pine

Dengan semangat TradingView yang sesungguhnya, penulis telah menerbitkan Kode Pine ini sebagai pustaka sumber terbuka sehingga programmer Pine lain dari komunitas kami dapat menggunakannya kembali. Hormat untuk penulis! Anda dapat menggunakan pustaka ini secara pribadi atau dalam publikasi sumber terbuka lainnya, namun penggunaan kembali kode ini dalam publikasi diatur oleh Tata Tertib.


Juga di:

Pernyataan Penyangkalan