Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.93 KB | None | 0 0
  1. //@version=4
  2. strategy(title="Multiple WaveTrend with Ribbons [CryptoFarian]", shorttitle="MWT Ribbons", overlay = true,
  3. initial_capital=4000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type="percent", commission_value=0.0)
  4.  
  5.  
  6. showRibbons = input(false, title="Show EMA ribbons")
  7.  
  8. src = close
  9.  
  10. len1 = 05
  11. len2 = 11
  12. len3 = 15
  13. len4 = 18
  14. len5 = 21
  15. len6 = 25
  16. len7 = 28
  17. len8 = 32
  18.  
  19. len0 = 21
  20.  
  21.  
  22.  
  23. ema1 = ema(src, len1)
  24. ema2 = ema(src, len2)
  25. ema3 = ema(src, len3)
  26. ema4 = ema(src, len4)
  27. ema5 = ema(src, len5)
  28. ema6 = ema(src, len6)
  29. ema7 = ema(src, len7)
  30. ema8 = ema(src, len8)
  31.  
  32. ema0 = ema(src, len0)
  33.  
  34.  
  35.  
  36. //ema is smoothed to 2 periods, you can change smoothing by adjusting the number in the bracket below
  37. //example [1] would react quicker and [3] would increase smoothing
  38.  
  39. plot_color1 = ema1 >= ema1[2] ? #696969 : ema1 < ema1[2] ? color.white : na
  40. plot_color2 = ema2 >= ema2[2] ? #808080 : ema2 < ema2[2] ? #F5F5F5 : na
  41. plot_color3 = ema3 >= ema3[2] ? #A9A9A9 : ema3 < ema3[2] ? #DCDCDC : na
  42. plot_color4 = ema4 >= ema4[2] ? #C0C0C0 : ema4 < ema4[2] ? #D3D3D3 : na
  43. plot_color5 = ema5 >= ema5[2] ? #D3D3D3 : ema5 < ema5[2] ? #C0C0C0 : na
  44. plot_color6 = ema6 >= ema6[2] ? #DCDCDC : ema6 < ema6[2] ? #A9A9A9 : na
  45. plot_color7 = ema7 >= ema7[2] ? #F5F5F5 : ema7 < ema7[2] ? #808080 : na
  46. plot_color8 = ema8 >= ema8[2] ? color.white : ema8 < ema8[2] ? #696969 : na
  47.  
  48. plot_color0 = ema0 >= ema0[2] ? color.green : ema0 < ema0[2] ? color.yellow : na
  49.  
  50.  
  51. showWellowOrGray = input(false, title="Show Yellow or Gray Ribbon")
  52.  
  53.  
  54. pema1 = plot(showWellowOrGray and showRibbons ? ema1 : na, title="EMA Plot 1", style=plot.style_line, linewidth=2, color=plot_color1)
  55. pema2 = plot(showWellowOrGray and showRibbons ? ema2 : na, title="EMA Plot 2", style=plot.style_line, linewidth=2, color=plot_color2)
  56. pema3 = plot(showWellowOrGray and showRibbons ? ema3 : na, title="EMA Plot 3", style=plot.style_line, linewidth=2, color=plot_color3)
  57. pema4 = plot(showWellowOrGray and showRibbons ? ema4 : na, title="EMA Plot 4", style=plot.style_line, linewidth=2, color=plot_color4)
  58. pema5 = plot(showWellowOrGray and showRibbons ? ema5 : na, title="EMA Plot 5", style=plot.style_line, linewidth=2, color=plot_color5)
  59. pema6 = plot(showWellowOrGray and showRibbons ? ema6 : na, title="EMA Plot 6", style=plot.style_line, linewidth=2, color=plot_color6)
  60. pema7 = plot(showWellowOrGray and showRibbons ? ema7 : na, title="EMA Plot 7", style=plot.style_line, linewidth=2, color=plot_color7)
  61. pema8 = plot(showWellowOrGray and showRibbons ? ema8 : na, title="EMA Plot 8", style=plot.style_line, linewidth=2, color=plot_color8)
  62.  
  63. pema0 = plot(showWellowOrGray and showRibbons ? ema0 : na, title="EMA Plot 9", style=plot.style_line, linewidth=3, color=plot_color0)
  64.  
  65. fill(pema1, pema2, color=#555555, transp=52, title="Fill Ribbon 1-2")
  66. fill(pema2, pema8, color=#555555, transp=62, title="Fill Ribbon 2-8")
  67.  
  68.  
  69. //-----------------------------------------------------
  70. // Yellow ribbon
  71. //-----------------------------------------------------
  72.  
  73. dropn(src, n) =>
  74. na(src[n]) ? na : src[n]
  75.  
  76. length1 = 20
  77. length2 = 25
  78. length3 = 30
  79. length4 = 35
  80. length5 = 40
  81. length6 = 45
  82. length7 = 50
  83. length8 = 55
  84. length9 = 60
  85. //dropCandles = input(1, minval=0, title="Yellow EMA Drop First N Candles")
  86. dropCandles = 0
  87.  
  88. price = dropn(src, dropCandles)
  89.  
  90. yEMA1 = ema(price, length1)
  91. yEMA2 = ema(price, length2)
  92. yEMA3 = ema(price, length3)
  93. yEMA4 = ema(price, length4)
  94. yEMA5 = ema(price, length5)
  95. yEMA6 = ema(price, length6)
  96. yEMA7 = ema(price, length7)
  97. yEMA8 = ema(price, length8)
  98. yEMA9 = ema(price, length9)
  99.  
  100. yPEma1 = plot(not showWellowOrGray and showRibbons ? yEMA1 : na, title="Y EMA-1", color=#f5eb5d, transp=0, linewidth=2)
  101. yPEma2 = plot(not showWellowOrGray and showRibbons ? yEMA2 : na, title="Y EMA-2", color=#f5b771, transp=0, linewidth=2)
  102. yPEma3 = plot(not showWellowOrGray and showRibbons ? yEMA3 : na, title="Y EMA-3", color=#f5b056, transp=0, linewidth=2)
  103. yPEma4 = plot(not showWellowOrGray and showRibbons ? yEMA4 : na, title="Y EMA-4", color=#f57b4e, transp=0, linewidth=2)
  104. yPEma5 = plot(not showWellowOrGray and showRibbons ? yEMA5 : na, title="Y EMA-5", color=#f56d58, transp=0, linewidth=2)
  105. yPEma6 = plot(not showWellowOrGray and showRibbons ? yEMA6 : na, title="Y EMA-6", color=#f57d51, transp=0, linewidth=2)
  106. yPEma7 = plot(not showWellowOrGray and showRibbons ? yEMA7 : na, title="Y EMA-7", color=#f55151, transp=0, linewidth=2)
  107. yPEma8 = plot(not showWellowOrGray and showRibbons ? yEMA8 : na, title="Y EMA-8", color=#aa2707, transp=0, linewidth=2)
  108. yPEma9 = plot(not showWellowOrGray and showRibbons ? yEMA9 : na, title="Y EMA-9", color=#E62020, transp=0, linewidth=2)
  109.  
  110. fill(yPEma1, yPEma9, color = yEMA1 > yEMA9 ? color.green : color.red, transp=68, title="Fill Yellow Ribbon")
  111.  
  112. //-----------------------------------------------------
  113. // Yellow ribbon END
  114. //-----------------------------------------------------
  115.  
  116.  
  117.  
  118. //-----------------------------------------------------
  119. // Multi timeframes VWAP test
  120. //-----------------------------------------------------
  121.  
  122. //n1 = input(5, "VWAP Channel Length") // Default 10
  123. //n2 = input(14, "VWAP Average Length") // default 21
  124. n1 = 5
  125. n2 = 14
  126.  
  127. showChar = input(true, title="Show Symbol")
  128. showFirst = input(true, title="Show only First")
  129. confCandleNum = input(2, minval=0, title="Num of Candles for Confirmation")
  130.  
  131. resolution1 = input(defval="7", title="1st VWAP Timeframe (minutes)")
  132. resolution2 = input(defval="15", title="2nd VWAP Timeframe (minutes)")
  133. resolution3 = input(defval="30", title="3rd VWAP Timeframe (minutes)")
  134. resolution4 = input(defval="90", title="4th VWAP Timeframe (minutes)")
  135.  
  136. getVWAP(val1, val2, confCandleNum) =>
  137. ap = dropn(hlc3, confCandleNum)
  138. esa = ema(ap, val1)
  139. d = ema(abs(ap - esa), val1)
  140. ci = (ap - esa) / (0.015 * d)
  141. tci = ema(ci, val2)
  142.  
  143. wt1 = tci
  144. wt2 = sma(wt1, 4)
  145. myVWAP = wt1 - wt2
  146.  
  147.  
  148. haID = heikinashi(syminfo.tickerid)
  149. MyVWAP = getVWAP(n1, n2, confCandleNum)
  150. VWAP1 = security(haID, resolution1, MyVWAP, lookahead=barmerge.lookahead_off)
  151. VWAP2 = security(haID, resolution2, MyVWAP, lookahead=barmerge.lookahead_off)
  152. VWAP3 = security(haID, resolution3, MyVWAP, lookahead=barmerge.lookahead_off)
  153. VWAP4 = security(haID, resolution4, MyVWAP, lookahead=barmerge.lookahead_off)
  154.  
  155. crossUp = iff(VWAP1 > 0.0000000001, iff(VWAP2 > 0.0000000001, iff(VWAP3 > 0.0000000001, iff(VWAP4 > 0.0000000001, true, na), na), na), na)
  156. crossDown = iff(VWAP1 < -0.00000000001, iff(VWAP2 < -0.00000000001, iff(VWAP3 < -0.00000000001, iff(VWAP4 < -0.00000000001, true, na), na), na), na)
  157.  
  158. showCrossUp = false
  159. showCrossDown = false
  160. if (showFirst)
  161. ud = 0
  162. ud := crossUp ? 1 : crossDown ? 2 : nz(ud[1])
  163. showCrossUp := crossUp and ud != ud[1] ? true : false
  164. showCrossDown := crossDown and ud != ud[1] ? true : false
  165. else
  166. showCrossUp := crossUp ? true : false
  167. showCrossDown := crossDown ? true : false
  168.  
  169. barcolor(color = showCrossUp ? color.yellow : na, title="Bar Color Up")
  170. // size.auto, size.tiny, size.small, size.normal, size.large, size.huge
  171. plotchar(close, color = showCrossUp and showChar ? color.yellow : na, char="!", size=size.tiny, title="Char Color Up")
  172.  
  173. barcolor(color = showCrossDown ? #00FFFF : na, title="Bar Color Down")
  174. // size.auto, size.tiny, size.small, size.normal, size.large, size.huge
  175. plotchar(close, color = showCrossDown and showChar ? color.blue : na, char='❄', size=size.tiny, title="Char Color Down")
  176.  
  177.  
  178. udAlert = 0
  179. udAlert := crossUp ? 1 : crossDown ? 2 : nz(udAlert[1])
  180.  
  181. //alertcondition(crossUp and udAlert != udAlert[1] ? 1 : na, title='VWAP up', message='All VWAPs are up!')
  182. //alertcondition(crossDown and udAlert != udAlert[1] ? 1 : na, title='VWAP down', message='All VWAPs are down!')
  183.  
  184. OBstoch = input(80, title="OBstoch level")
  185. OSstoch = input(10, title="OSstoch level")
  186. stochmin = input(15, title="stoch TF in minutes (minutes and hours are summed, leave a zero in one of these")
  187. stochhours = input(0, title="stoch TF in hours")
  188.  
  189. stochtime = stochmin + (stochhours * 60)
  190.  
  191. rawk = sma(stoch(close, high, low, 14), 6)
  192.  
  193. k = security(syminfo.ticker, tostring(stochtime), rawk)
  194.  
  195. buy = k < OBstoch and crossUp and udAlert != udAlert[1] ? 1 : na
  196. sell =k > OSstoch and crossDown and udAlert != udAlert[1] ? 1 : na
  197.  
  198. // === BACKTEST RANGE ===
  199. FromMonth = input(defval = 8, title = "From Month", minval = 1)
  200. FromDay = input(defval = 22, title = "From Day", minval = 1)
  201. FromYear = input(defval = 2019, title = "From Year")
  202. ToMonth = input(defval = 1, title = "To Month", minval = 1)
  203. ToDay = input(defval = 1, title = "To Day", minval = 1)
  204. ToYear = input(defval = 9999, title = "To Year")
  205.  
  206. testPeriod() =>
  207. (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))
  208.  
  209.  
  210. strategy.entry("LONG", long=true, when=buy and testPeriod())
  211. //strategy.close("LONG", when=sell and not useShorts and testPeriod())
  212. strategy.entry("SHORT", long=false, when=sell and testPeriod())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement