Facebook
From Baby Curlew, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 183
  1. //@version=4
  2.  
  3. study("LIN2", shorttitle="LIN2", overlay=true)
  4.  
  5. src = input(close, title="Source")
  6. src1 = input(close, title="Source")
  7.  
  8. mult1 = input(2, minval=1, title="Base Line Periods")
  9. multdev = input(-2.0, title="Deviation",step=1)
  10. len2 = input(240, title="Lookback Period")
  11.  
  12.  
  13. mult2 = input(2, minval=1, title="Base Line Periods1")
  14. multdev1 = input(-1.0, title="Deviation2",step=1)
  15. len21 = input(240, title="Lookback Period2")
  16.  
  17. //REGRESSION SLOPE
  18. donchian(len) => avg(lowest(len), highest(len))
  19. baseLine = donchian(mult1)
  20. ext=input(true,title="Extend Lines")
  21. ln =ext?extend.right:extend.none
  22.  
  23. //REGRESSION SLOPE 1
  24. donchian1(len) => avg(lowest(len), highest(len))
  25. baseLine1 = donchian(mult2)
  26. ext1=input(true,title="Extend Lines")
  27. ln1 =ext1?extend.right:extend.none
  28.  
  29.  
  30. //-- MEAN
  31. calcSlope(src, len2) =>
  32.     if not barstate.islast
  33.         [float(na), float(na), float(na)]
  34.     else
  35.         sumX = 0.0
  36.         sumY = 0.0
  37.         sumXSqr = 0.0
  38.         sumXY = 0.0
  39.         for i = 0 to len2 - 1
  40.             val = src[i]
  41.             per = i + 1.0
  42.             sumX := sumX + per
  43.             sumY := sumY + val
  44.             sumXSqr := sumXSqr + per * per
  45.             sumXY := sumXY + val * per
  46.         slope = (len2 * sumXY - sumX * sumY) / (len2 * sumXSqr - sumX * sumX)
  47.         average2 = sumY / len2
  48.         intercept = average2 - slope * sumX / len2 + slope
  49.         [slope, average2, intercept]
  50. [s, a2, i] = calcSlope(src, len2)
  51.  
  52.  
  53.  
  54. //-- MEAN 1
  55. calcSlope1(src1, len21) =>
  56.     if not barstate.islast
  57.         [float(na), float(na), float(na)]
  58.     else
  59.         sumX1 = 0.0
  60.         sumY1 = 0.0
  61.         sumXSqr1 = 0.0
  62.         sumXY1 = 0.0
  63.         for ii = 0 to len21 - 1
  64.             val1 = src1[ii]
  65.             per1 = ii + 1.0
  66.             sumX1 := sumX1 + per1
  67.             sumY1 := sumY1 + val1
  68.             sumXSqr1 := sumXSqr1 + per1 * per1
  69.             sumXY1 := sumXY1 + val1 * per1
  70.         slope1 = (len21 * sumXY1 - sumX1 * sumY1) / (len21 * sumXSqr1 - sumX1 * sumX1)
  71.         average21 = sumY1 / len21
  72.         intercept1 = average21 - slope1 * sumX1 / len21 + slope1
  73.         [slope1, average21, intercept1]
  74. [ss, a22, ii] = calcSlope1(src1, len21)
  75.  
  76. //deviation code
  77. lrc = linreg(src, len2, 0)
  78. lrc1 = linreg(src,len2,1)
  79. lrSlope = (lrc-lrc1)
  80. lrIntercept = lrc - bar_index*lrSlope
  81. deviationSum = 0.0
  82. for z=0 to len2-1
  83.     deviationSum:= deviationSum + pow(src[z]-(lrSlope*(bar_index-z)+lrIntercept), 2)
  84. deviation = sqrt(deviationSum/(len2))
  85.  
  86. up = deviation * multdev //+lrc
  87. dn = deviation * multdev
  88.  
  89. startPrice = (i + s * (len2 - 1))
  90. endPrice = i
  91.  
  92. //deviation code 1
  93. lrc2 = linreg(src1, len21, 0)
  94. lrc3 = linreg(src1,len21,1)
  95. lrSlope1 = (lrc2-lrc3)
  96. lrIntercept1 = lrc2 - bar_index*lrSlope1
  97. deviationSum1 = 0.0
  98. for z=0 to len21-1
  99.     deviationSum1:= deviationSum1 + pow(src1[z]-(lrSlope1*(bar_index-z)+lrIntercept1), 2)
  100. deviation1 = sqrt(deviationSum1/(len21))
  101.  
  102. up1 = deviation1 * multdev1 //+lrc2
  103. dn1 = deviation1 * multdev1
  104.  
  105. startPrice1 = (ii + ss * (len21 - 1))
  106. endPrice1 = ii
  107.  
  108. ///////////////////
  109. var line baseLine5 = na
  110. if na(baseLine)
  111.     baseLine5 := line.new(bar_index - len2 + 1, startPrice, bar_index, endPrice, width=2, color=color.red, style=line.style_solid, extend=ln)
  112. else
  113.     line.set_xy1(baseLine5, bar_index - len2 + 1, startPrice)
  114.     line.set_xy2(baseLine5, bar_index, endPrice)
  115.     na //
  116.  
  117. ///////////////////
  118. var line baseLine3 = na
  119. if na(baseLine3)
  120.     baseLine3 := line.new(bar_index - len21 + 1, startPrice1, bar_index, endPrice1, width=2, color=color.red, style=line.style_solid, extend=ln)
  121. else
  122.     line.set_xy1(baseLine3, bar_index - len21 + 1, startPrice1)
  123.     line.set_xy2(baseLine3, bar_index, endPrice1)
  124.     na //
  125.  
  126.  //////////High Channel//////////////
  127. var line baseLine6 = na
  128. if na(baseLine6)
  129.     baseLine6 := line.new(bar_index - len2 + 1, startPrice + up, bar_index, endPrice + up, width=2, color=color.blue, style=line.style_solid, extend=ln)
  130. else
  131.     line.set_xy1(baseLine6, bar_index - len2 + 1, startPrice + up)
  132.     line.set_xy2(baseLine6, bar_index, endPrice + up)
  133.     na //
  134.      
  135.       ////////////////Low Channel///////////////////
  136. var line baseLine7 = na
  137.  
  138. if
  139. na(baseLine7)
  140.     baseLine7 := line.new(bar_index - len2 + 1, startPrice-dn, bar_index, endPrice-dn, width=2, color=color.blue, style=line.style_solid, extend=ln)
  141. else
  142.     line.set_xy1(baseLine7, bar_index - len2 + 1, startPrice- dn)
  143.     line.set_xy2(baseLine7, bar_index, endPrice- dn)
  144.     na //
  145.    
  146. //////////High Channel//////////////
  147. var line baseLine4 = na
  148. if na(baseLine4)
  149.     baseLine4 := line.new(bar_index - len21 + 1, startPrice1 + up1, bar_index, endPrice1 + up1, width=2, color=color.blue, style=line.style_solid, extend=ln)
  150. else
  151.     line.set_xy1(baseLine4, bar_index - len21 + 1, startPrice1 + up1)
  152.     line.set_xy2(baseLine4, bar_index, endPrice1 + up1)
  153.     na //
  154.  
  155.  ////////////////Low Channel///////////////////
  156. var line baseLine2 = na
  157. if na(baseLine2)
  158.     baseLine2 := line.new(bar_index - len21 + 1, startPrice1-dn1, bar_index, endPrice1-dn1, width=2, color=color.blue, style=line.style_solid, extend=ln)
  159. else
  160.     line.set_xy1(baseLine2, bar_index - len21 + 1, startPrice1- dn1)
  161.     line.set_xy2(baseLine2, bar_index, endPrice1- dn1)
  162.     na //

Replies to Untitled rss

Title Name Language When
Re: Untitled Crippled Bee text 3 Years ago.