Drzhy

OCC

Jan 5th, 2020
398
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // === INPUTS ===
  2. useRes      = input(defval = true, title = "Use Alternate Resolution?")
  3. intRes      = input(defval = 3,    title = "Multiplier for Alernate Resolution")
  4. stratRes    = ismonthly? tostring(interval*intRes,"###M") : isweekly? tostring(interval*intRes,"###W") : isdaily?   tostring(interval*intRes,"###D") : isintraday ? tostring(interval*intRes,"####") : '60'
  5. basisType   = input(defval = "SMMA", title = "MA Type: ", options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMMA", "HullMA", "LSMA", "ALMA", "SSMA", "TMA"])
  6. basisLen    = input(defval = 8, title = "MA Period", minval = 1)
  7. offsetSigma = input(defval = 6, title = "Offset for LSMA / Sigma for ALMA", minval = 0)
  8. offsetALMA  = input(defval = 0.85, title = "Offset for ALMA", minval = 0, step = 0.01)
  9. scolor      = input(false, title="Show coloured Bars to indicate Trend?")
  10. delayOffset = input(defval = 0, title = "Delay Open/Close MA (Forces Non-Repainting)", minval = 0, step = 1)
  11. tradeType   = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])
  12. // === /INPUTS ===
  13.  
  14. // Constants colours that include fully non-transparent option.
  15. green100 = '#008000FF'
  16. lime100  = '#00FF00FF'
  17. red100   = '#FF0000FF'
  18. blue100  = '#0000FFFF'
  19. aqua100  = '#00FFFFFF'
  20. darkred100 = '#8B0000FF'
  21. gray100 = '#808080FF'
  22.  
  23. // === BASE FUNCTIONS ===
  24. // Returns MA input selection variant, default to SMA if blank or typo.
  25. variant(type, src, len, offSig, offALMA) =
  26.     v1 = sma(src, len)                                                 // Simple
  27.     v2 = ema(src, len)                                                 // Exponential
  28.     v3 = 2 * v2 - ema(v2, len)                                         // Double Exponential
  29.     v4 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)               // Triple Exponential
  30.     v5 = wma(src, len)                                                 // Weighted
  31.     v6 = vwma(src, len)                                                // Volume Weighted
  32.     v7 = 0.0
  33.     v7 = na(v7[1]) ? sma(src, len) : (v7[1] * (len - 1) + src) / len     // Smoothed
  34.     v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))    // Hull
  35.     v9 = linreg(src, len, offSig)                                      // Least Squares
  36.     v10 = alma(src, len, offALMA, offSig)                               // Arnaud Legoux
  37.     v11 = sma(v1,len)                                                  // Triangular (extreme smooth)
  38.     // SuperSmoother filter
  39.     // © 2013  John F. Ehlers
  40.     a1 = exp(-1.414*3.14159 / len)
  41.     b1 = 2*a1*cos(1.414*3.14159 / len)
  42.     c2 = b1
  43.     c3 = (-a1)*a1
  44.     c1 = 1 - c2 - c3
  45.     v12 = 0.0
  46.     v12 = c1*(src + nz(src[1])) / 2 + c2*nz(v12[1]) + c3*nz(v12[2])
  47.     type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : type=="SMMA"?v7 : type=="HullMA"?v8 : type=="LSMA"?v9 : type=="ALMA"?v10 : type=="TMA"?v11: type=="SSMA"?v12: v1
  48.  
  49. // security wrapper for repeat calls
  50. reso(exp, use, res) = use ? security(tickerid, res, exp, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on) : exp
  51.  
  52. // === /BASE FUNCTIONS ===
  53.  
  54. // === SERIES SETUP ===
  55. closeSeries     = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA)
  56. openSeries      = variant(basisType, open[delayOffset], basisLen, offsetSigma, offsetALMA)
  57. // === /SERIES ===
  58.  
  59. // === PLOTTING ===
  60.  
  61. // Get Alternate resolution Series if selected.
  62. closeSeriesAlt = reso(closeSeries, useRes, stratRes)
  63. openSeriesAlt = reso(openSeries, useRes, stratRes)
  64. //
  65. trendColour = (closeSeriesAlt > openSeriesAlt) ? green : red
  66. bcolour     = (closeSeries > openSeriesAlt) ? lime100 : red100
  67. barcolor(scolor?bcolour:na, title = "Bar Colours")
  68. closeP=plot(closeSeriesAlt, title = "Close Series", color = trendColour, linewidth = 2, style = line, transp = 20)
  69. openP=plot(openSeriesAlt, title = "Open Series", color = trendColour, linewidth = 2, style = line, transp = 20)
  70. fill(closeP,openP,color=trendColour,transp=80)
  71.  
  72. // === /PLOTTING ===
  73. //
  74.  
  75. //
  76. // === ALERT conditions
  77. xlong       = crossover(closeSeriesAlt, openSeriesAlt)
  78. xshort      = crossunder(closeSeriesAlt, openSeriesAlt)
  79. longCond    = xlong   // alternative: longCond[1]? false : (xlong or xlong[1]) and close>closeSeriesAlt and close>=open
  80. shortCond   = xshort  // alternative: shortCond[1]? false : (xshort or xshort[1]) and close<closeSeriesAlt and close<=open
  81. // === /ALERT conditions.
  82.  
  83. // === STRATEGY ===
  84. // stop loss
  85. slPoints    = input(defval = 0, title = "Initial Stop Loss Points (zero to disable)", minval = 0)
  86. tpPoints    = input(defval = 0, title = "Initial Target Profit Points (zero for disable)", minval = 0)
  87. // Include bar limiting algorithm
  88. ebar            = input(defval = 10000, title="Number of Bars for Back Testing", minval=0)
  89. dummy           = input(false,         title="- SET to ZERO for Daily or Longer Timeframes" )
  90. //
  91. // Calculate how many mars since last bar
  92. tdays       = (timenow-time)/60000.0   // number of minutes since last bar
  93. tdays       = ismonthly? tdays/1440.0/5.0/4.3/interval : isweekly? tdays/1440.0/5.0/interval : isdaily? tdays/1440.0/interval : tdays/interval // number of bars since last bar
  94. //
  95. //set up exit parameters
  96. TP = tpPoints>0?tpPoints:na
  97. SL = slPoints>0?slPoints:na
  98.  
  99. // Make sure we are within the bar range, Set up entries and exit conditions
  100. if ((ebar==0 and tdays<=ebar) and tradeType!="NONE")
  101.     strategy.entry("long", strategy.long, when=longCond==true and tradeType!="SHORT")
  102.     strategy.entry("short", strategy.short, when=shortCond==true and tradeType!="LONG")
  103.     strategy.close("long", when = shortCond==true and tradeType=="LONG")
  104.     strategy.close("short", when = longCond==true and tradeType=="SHORT")
  105.     strategy.exit("XL", from_entry = "long", profit = TP, loss = SL)
  106.     strategy.exit("XS", from_entry = "short", profit = TP, loss = SL)
  107.  
  108. // === /STRATEGY ===
  109. // eof
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×