Advertisement
JustUncleL

Fractals and Pivots R2-18

Feb 16th, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.30 KB | None | 0 0
  1. //@version=2
  2.  
  3. study(title="Fractals and Pivots R2-18 by JustUncleL", shorttitle="FRACTAL R2-18", overlay=true)
  4.  
  5. // By: JustUncleL
  6. // Date: 13-Feb-2017
  7. // Version: R2-18
  8. //
  9. // Description:
  10. // This indicator display fractals, fractal levels, Pivot Points and HH/LL points.
  11. // Fractals are only drawn after they have completed.
  12. //
  13. // references:
  14. // - [RS]Fractal Levels by RicardoSantos
  15. //
  16. // Modifications:
  17. // R1 - original.
  18. //
  19. //
  20. //
  21. ShowPivots = input(true)
  22. ShowPivotLabels = input(false)
  23. ShowPivotNumbers = input(false)
  24. ShowFractals = input(true)
  25. ShowFractalLevels= input(false)
  26. ShowHHLL_ = input(false)
  27. ShowHHLL = ShowPivots?false:ShowHHLL_
  28. //filterBW_ = input(false,"Show Ideal Fractals Only")
  29. StarShape = input(4,minval=1,maxval=4,title="Pivot Marker: 1=Star, 2=Dot, 3=Diamond, 4=Cross")
  30.  
  31. // Slow MA - type, source, length
  32. uMAf = input(false,title="Use MA Filter on Fractal Levels")
  33. uHHLLf = input(false,title="Use HH/LL Filter on Fractal Levels")
  34. // Fast MA - type, source, length
  35. fast_ma_type = input(defval="EMA", title="Fast MA Type: SMA, EMA, WMA, VWMA, SMMA, DEMA, TEMA, HullMA, ZEMA, TMA, SSMA ( case sensitive )", type=string)
  36. fast_ma_len = input(defval=8, title="Fast MA - Length", minval=1)
  37. fast_ma_src = input(close, title="Fast MA - Source")
  38. // Slow MA - type, source, length
  39. slow_ma_type = input(defval="EMA", title="Slow MA Type: SMA, EMA, WMA, VWMA, SMMA, DEMA, TEMA, HullMA, ZEMA, TMA, SSMA ( case sensitive )", type=string)
  40. slow_ma_len = input(defval=36, title="Slow MA - Length", minval=1)
  41. slow_ma_src = input(close, title="Slow MA - Source")
  42.  
  43. //
  44. close_ = security(ticker, period, close)
  45. open_ = security(ticker, period, open)
  46. high_ = security(ticker, period, high)
  47. low_ = security(ticker, period, low)
  48.  
  49. // - /INPUTS
  50.  
  51. //
  52. // --- CONSTANTS ---
  53. DodgerBlue = #1E90FF
  54. filterBW = ShowPivots?true: false
  55. // --- /CONTANTS ---
  56.  
  57. // - FUNCTIONS
  58.  
  59. // ||--- Fractal Recognition Functions: ---------------------------------------------------------------||
  60. // ||-----------------------------------------------------------------------------------------------------||
  61. // ||--- Fractal Recognition Functions: ---------------------------------------------------------------||
  62. isIdealFractal(mode) =>
  63. ret = mode == 1 ? high_[5] < high_[4] and high_[4] < high_[3] and high_[3] > high_[2] and high_[2] > high_[1] :
  64. mode == -1 ? low_[5] > low_[4] and low_[4] > low_[3] and low_[3] < low_[2] and low_[2] < low_[1] : false
  65.  
  66. isRegularFractal(mode) =>
  67. ret = mode == 1 ? high_[5] < high_[3] and high_[4] < high_[3] and high_[3] > high_[2] and high_[3] > high_[1] :
  68. mode == -1 ? low_[5] > low_[3] and low_[4] > low_[3] and low_[3] < low_[2] and low_[3] < low_[1] : false
  69.  
  70. // ||-----------------------------------------------------------------------------------------------------||
  71.  
  72. // Returns MA input selection variant, default to SMA if blank or typo.
  73. variant(type, src, len) =>
  74. v1 = sma(src, len) // Simple
  75. v2 = ema(src, len) // Exponential
  76. v3 = wma(src, len) // Weighted
  77. v4 = vwma(src, len) // Volume Weighted
  78. v5 = na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len // Smoothed
  79. v6 = 2 * v2 - ema(v2, len) // Double Exponential
  80. v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) // Triple Exponential
  81. v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) // Hull
  82. v11 = sma(sma(src,len),len) // Triangular
  83. // SuperSmoother filter
  84. // © 2013 John F. Ehlers
  85. a1 = exp(-1.414*3.14159 / len)
  86. b1 = 2*a1*cos(1.414*3.14159 / len)
  87. c2 = b1
  88. c3 = (-a1)*a1
  89. c1 = 1 - c2 - c3
  90. v9 = c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
  91. // Zero Lag Exponential
  92. ema1 = ema(src, len)
  93. ema2 = ema(ema1, len)
  94. v10 = ema1+(ema1-ema2)
  95. // return variant, defaults to SMA if input invalid.
  96. type=="EMA"?v2 : type=="WMA"?v3 : type=="VWMA"?v4 : type=="SMMA"?v5 : type=="DEMA"?v6 : type=="TEMA"?v7 : type=="HullMA"?v8 : type=="SSMA"?v9 : type=="ZEMA"?v10 : type=="TMA"? v11: v1
  97.  
  98. // - /FUNCTIONS
  99.  
  100. // - SERIES VARIABLES
  101.  
  102. // MA's
  103. fast_ma_series = variant(fast_ma_type, fast_ma_src, fast_ma_len)
  104. slow_ma_series = variant(slow_ma_type, slow_ma_src, slow_ma_len)
  105.  
  106. filteredtopf = filterBW ? isIdealFractal(1) : isRegularFractal(1)
  107. filteredbotf = filterBW ? isIdealFractal(-1) : isRegularFractal(-1)
  108.  
  109. //plotshape(ShowFractals? filteredtopf :na, title='Filtered Top Fractals', style=shape.triangleup, location=location.abovebar, color=green, offset=-3, transp=20)
  110. //plotshape(ShowFractals? filteredbotf :na, title='Filtered Bottom Fractals', style=shape.triangledown, location=location.belowbar, color=red, offset=-3, transp=20)
  111. topfractals = filteredtopf ? high_[3] : topfractals[1]
  112. botfractals = filteredbotf ? low_[3] : botfractals[1]
  113.  
  114. topfcolor = topfractals != topfractals[1] ? na : green
  115. botfcolor = botfractals != botfractals[1] ? na : red
  116.  
  117.  
  118.  
  119. // ||-----------------------------------------------------------------------------------------------------||
  120. // ||--- Higher Highs, Lower Highs, Higher Lows, Lower Lows -------------------------------------------||
  121. higherhigh = filteredtopf == false ? false : ( valuewhen(filteredtopf == true, high_[3], 1) < valuewhen(filteredtopf == true, high_[3], 0) and
  122. (ShowPivots or valuewhen(filteredtopf == true, high_[3], 2) < valuewhen(filteredtopf == true, high_[3], 0)))
  123. lowerhigh = filteredtopf == false ? false : ( valuewhen(filteredtopf == true, high_[3], 1) > valuewhen(filteredtopf == true, high_[3], 0) and
  124. (ShowPivots or valuewhen(filteredtopf == true, high_[3], 2) > valuewhen(filteredtopf == true, high_[3], 0)))
  125. higherlow = filteredbotf == false ? false : ( valuewhen(filteredbotf == true, low_[3], 1) < valuewhen(filteredbotf == true, low_[3], 0) and
  126. (ShowPivots or valuewhen(filteredbotf == true, low_[3], 2) < valuewhen(filteredbotf == true, low_[3], 0)))
  127. lowerlow = filteredbotf == false ? false : ( valuewhen(filteredbotf == true, low_[3], 1) > valuewhen(filteredbotf == true, low_[3], 0) and
  128. (ShowPivots or valuewhen(filteredbotf == true, low_[3], 2) > valuewhen(filteredbotf == true, low_[3], 0)))
  129.  
  130. // If selected Display the HH/LL above/below candle.
  131. plotshape(ShowHHLL ? higherhigh : na, title='HH', style=shape.square, location=location.abovebar, color=maroon, text="[HH]", offset=-3,transp=0)
  132. plotshape(ShowHHLL ? lowerhigh : na, title='LH', style=shape.square, location=location.abovebar, color=maroon, text="[LH]", offset=-3,transp=0)
  133. plotshape(ShowHHLL ? higherlow : na, title='HL', style=shape.square, location=location.belowbar, color=green, text="[HL]", offset=-3,transp=0)
  134. plotshape(ShowHHLL ? lowerlow : na, title='LL', style=shape.square, location=location.belowbar, color=green, text="[LL]", offset=-3,transp=0)
  135.  
  136. // If Selected Display Pivot points
  137. plotshape(ShowPivots and ShowPivotLabels? higherhigh : na, title='HH Label', style=shape.cross, location=location.abovebar, color=maroon, text="[HH]", offset=-3,transp=0)
  138. //plotshape(ShowPivots and not ShowPivotLabels? higherhigh? high :na : na, title='Higher High+', style=shape.cross, location=location.abovebar, color=maroon, offset=-3,transp=0)
  139. plotchar(ShowPivots and not ShowPivotLabels and StarShape==1? higherhigh?high:na: na, title='HH *', location=location.abovebar, color=maroon, offset=-3,transp=0)
  140. plotshape(ShowPivots and not ShowPivotLabels and StarShape==2? higherhigh?high:na: na, title='HH .', location=location.abovebar, color=maroon, style=shape.circle, offset=-3,transp=0)
  141. plotshape(ShowPivots and not ShowPivotLabels and StarShape==3? higherhigh?high:na: na, title='HH #', location=location.abovebar, color=maroon, style=shape.diamond, offset=-3,transp=0)
  142. plotshape(ShowPivots and not ShowPivotLabels and StarShape==4? higherhigh?high:na: na, title='HH +', location=location.abovebar, color=maroon, style=shape.cross, offset=-3,transp=0)
  143. //
  144. plotshape(ShowPivots and ShowPivotLabels? lowerhigh : na, title='LH Label', style=shape.cross, location=location.abovebar, color=maroon, text="[LH]", offset=-3,transp=0)
  145. //plotshape(ShowPivots and not ShowPivotLabels? lowerhigh? high : na : na, title='Lower High+', style=shape.cross, location=location.abovebar, color=maroon, offset=-3,transp=0)
  146. plotchar(ShowPivots and not ShowPivotLabels and StarShape==1? lowerhigh?high:na: na, title='LH *', location=location.abovebar, color=maroon, offset=-3,transp=0)
  147. plotshape(ShowPivots and not ShowPivotLabels and StarShape==2? lowerhigh?high:na: na, title='LH .', location=location.abovebar, color=maroon, style=shape.circle, offset=-3,transp=0)
  148. plotshape(ShowPivots and not ShowPivotLabels and StarShape==3? lowerhigh?high:na: na, title='LH #', location=location.abovebar, color=maroon, style=shape.diamond, offset=-3,transp=0)
  149. plotshape(ShowPivots and not ShowPivotLabels and StarShape==4? lowerhigh?high:na: na, title='LH +', location=location.abovebar, color=maroon, style=shape.cross, offset=-3,transp=0)
  150. //
  151. plotshape(ShowPivots and ShowPivotLabels? higherlow : na, title='HL Label', style=shape.cross, location=location.belowbar, color=green, text="[HL]", offset=-3,transp=0)
  152. //plotshape(ShowPivots and not ShowPivotLabels? higherlow? low: na : na, title='Higher Low+', style=shape.cross, location=location.belowbar, color=green, offset=-3,transp=0)
  153. plotchar(ShowPivots and not ShowPivotLabels and StarShape==1? higherlow?low:na: na, title='HL *', location=location.belowbar, color=green, offset=-3,transp=0)
  154. plotshape(ShowPivots and not ShowPivotLabels and StarShape==2? higherlow?low:na: na, title='HL .', location=location.belowbar, color=green, style=shape.circle, offset=-3,transp=0)
  155. plotshape(ShowPivots and not ShowPivotLabels and StarShape==3? higherlow?low:na: na, title='HL #', location=location.belowbar, color=green, style=shape.diamond, offset=-3,transp=0)
  156. plotshape(ShowPivots and not ShowPivotLabels and StarShape==4? higherlow?low:na: na, title='HL +', location=location.belowbar, color=green, style=shape.cross, offset=-3,transp=0)
  157. //
  158. plotshape(ShowPivots and ShowPivotLabels? lowerlow : na, title='LL Label', style=shape.cross, location=location.belowbar, color=green, text="[LL]", offset=-3,transp=0)
  159. //plotshape(ShowPivots and not ShowPivotLabels? lowerlow? low : na : na, title='Lower Low+', style=shape.cross, location=location.belowbar, color=green, offset=-3,transp=0)
  160. plotchar(ShowPivots and not ShowPivotLabels and StarShape==1? lowerlow?low:na: na, title='LL *', location=location.belowbar, color=green, offset=-3,transp=0)
  161. plotshape(ShowPivots and not ShowPivotLabels and StarShape==2? lowerlow?low:na: na, title='LL .', location=location.belowbar, color=green, style=shape.circle, offset=-3,transp=0)
  162. plotshape(ShowPivots and not ShowPivotLabels and StarShape==3? lowerlow?low:na: na, title='LL #', location=location.belowbar, color=green, style=shape.diamond, offset=-3,transp=0)
  163. plotshape(ShowPivots and not ShowPivotLabels and StarShape==4? lowerlow?low:na: na, title='LL +', location=location.belowbar, color=green, style=shape.cross, offset=-3,transp=0)
  164.  
  165. // Plot the Stars only when spot vacant
  166.  
  167.  
  168. //
  169. // Number the Pivot candle fractal positions above or below candles
  170. plotchar(ShowPivots and ShowPivotNumbers? filteredtopf: na, title='High 1u', location=location.abovebar, color=maroon, char="1", offset=-5,transp=0)
  171. plotchar(ShowPivots and ShowPivotNumbers? filteredtopf: na, title='High 2u', location=location.abovebar, color=maroon, char="2", offset=-4,transp=0)
  172. plotchar(ShowPivots and ShowPivotNumbers ? filteredtopf: na, title='High 2d', location=location.abovebar, color=maroon, char="2", offset=-2,transp=0)
  173. plotchar(ShowPivots and ShowPivotNumbers ? filteredtopf: na, title='High 1d', location=location.abovebar, color=maroon, char="1", offset=-1,transp=0)
  174. //
  175. plotchar(ShowPivots and ShowPivotNumbers ? filteredbotf: na, title='Low 1d', location=location.belowbar, color=green, char="1", offset=-5,transp=0)
  176. plotchar(ShowPivots and ShowPivotNumbers ? filteredbotf: na, title='Low 2d', location=location.belowbar, color=green, char="2", offset=-4,transp=0)
  177. plotchar(ShowPivots and ShowPivotNumbers ? filteredbotf: na, title='Low 2u', location=location.belowbar, color=green, char="2", offset=-2,transp=0)
  178. plotchar(ShowPivots and ShowPivotNumbers ? filteredbotf: na, title='Low 1u', location=location.belowbar, color=green, char="1", offset=-1,transp=0)
  179.  
  180. // Get All fractals
  181. topf = isRegularFractal(1)
  182. botf = isRegularFractal(-1)
  183.  
  184. havespot = not ShowPivots or (ShowPivots and not(higherhigh or lowerhigh or higherlow or lowerlow))
  185. plotshape(havespot and ShowFractals? topf :na, title='Regular Top Fractals', style=shape.triangleup, location=location.abovebar, color=red, offset=-3,transp=0)
  186. plotshape(havespot and ShowFractals? botf :na, title='Regular Bottom Fractals', style=shape.triangledown, location=location.belowbar, color=green, offset=-3,transp=0)
  187.  
  188. // ||--- Higher Highs, Lower Lows on All Fractals -------------------------------------------||
  189. HH = topf == false ? false : ( valuewhen(topf == true, high_[3], 1) < valuewhen(topf == true, high_[3], 0) and
  190. (valuewhen(topf == true, high_[3], 2) < valuewhen(topf == true, high_[3], 0)))
  191. LL = botf == false ? false : ( valuewhen(botf == true, low_[3], 1) > valuewhen(botf == true, low_[3], 0) and
  192. (valuewhen(botf == true, low_[3], 2) > valuewhen(botf == true, low_[3], 0)))
  193.  
  194. topfs = topf and (not uHHLLf or HH)? high_[3] : topfs[1]
  195. botfs = botf and (not uHHLLf or LL)? low_[3] : botfs[1]
  196.  
  197. topfc = (topfs != topfs[1]) or (uMAf and fast_ma_series<slow_ma_series)? na : green
  198. botfc = (botfs != botfs[1]) or (uMAf and fast_ma_series>slow_ma_series)? na : red
  199.  
  200. plot(ShowFractalLevels ? topfs : na, color=topfc, transp=0, linewidth=2, offset=-3, title="Top Levels")
  201. plot(ShowFractalLevels ? botfs : na, color=botfc, transp=0, linewidth=2, offset=-3, title="Bottom Levels")
  202.  
  203. //
  204. //EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement