Advertisement
NKactive

Untitled

Nov 8th, 2023
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
  2. // © NKactive
  3. //@version=5
  4.  
  5. strategy("NK Trend Trigger Factor", overlay=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, slippage=1)
  6. import EliCobra/CobraMetrics/4 as cobra
  7. //// PLOT DATA
  8. disp_ind = input.string ("None" , title = "Display Curve" , tooltip = "Choose which data you would like to display", options=["Strategy", "Equity", "Open Profit", "Gross Profit", "Net Profit", "None"], group = "🐍 𝓒𝓸𝓫𝓻𝓪 𝓜𝓮𝓽𝓻𝓲𝓬𝓼 🐍")
  9. pos_table = input.string("Middle Left", "Table Position", options = ["Top Left", "Middle Left", "Bottom Left", "Top Right", "Middle Right", "Bottom Right", "Top Center", "Bottom Center"], group = "🐍 𝓒𝓸𝓫𝓻𝓪 𝓜𝓮𝓽𝓻𝓲𝓬𝓼 🐍")
  10. type_table = input.string("None", "Table Type", options = ["Full", "Simple", "None"], group = "🐍 𝓒𝓸𝓫𝓻𝓪 𝓜𝓮𝓽𝓻𝓲𝓬𝓼 🐍")
  11. plot(cobra.curve(disp_ind))
  12. cobra.cobraTable(type_table, pos_table)
  13. //
  14. // ****************************************************************************************************************************************************************
  15. //
  16.  
  17. length=input(15)
  18. bt = input( 100, title="Buy Trigger")
  19. st = input( -100, title="Sell Trigger")
  20. markCrossovers = input.bool(false, title="Mark Cross Overs")
  21.  
  22. prev(s,i) =>
  23. y=math.abs(math.round(i))
  24. s[y]
  25.  
  26. calc_ttf( periods ) =>
  27. bp = ta.highest( high, periods ) - prev( ta.lowest( low, periods ), - periods )
  28. sp = prev( ta.highest( high, periods ), - periods ) - ta.lowest( low, periods )
  29. 100 * (bp - sp) / ( 0.5*( bp + sp) )
  30.  
  31. ttf = calc_ttf( length )
  32.  
  33. // Plot gray chart boundaries bt and bs
  34. plot(0, color=color.gray)
  35. btl=plot(bt, color=color.gray, linewidth = 3)
  36. stl=plot(st, color=color.gray, linewidth = 3)
  37.  
  38. long_f = ta.cross( ttf, st ) and ta.rising(ttf, 1)
  39. short_f = ta.cross(ttf, bt ) and ta.falling(ttf, 1)
  40.  
  41. bs = (ttf > bt) ? bt : ttf
  42. us = (ttf < st) ? st : ttf
  43. bl=plot(bs, color=color.white)
  44. ul=plot(us, color=color.white)
  45. tl=plot(ttf, title="TTF", color=markCrossovers ? (long_f ? color.green : short_f ? color.red : color.blue) : color.maroon, linewidth=2)
  46. fill(bl, tl, color.new(color.green, 75))
  47. fill(ul, tl, color.new(color.red, 75))
  48.  
  49. // ****************************************************************************************************************************************************************
  50.  
  51.  
  52.  
  53.  
  54. // ****************************************************************************************************************************************************************
  55. // Call combine signals and execute buy/sell positions within timeframe
  56. //.****************************************************************************************************************************************************************
  57. // Date Range To Include
  58. startDate = timestamp("2018-01-01T00:00")
  59. endDate = time
  60. // Check if the current timestamp is within the restricted range
  61. inRestrictedRange = time >= startDate and time <= endDate
  62. //
  63. // Buy Signals on overbought and oversold
  64. //
  65. if inRestrictedRange and long_f // ADD OTHER BUY SIGNAL BOOLS
  66. strategy.entry("My Long Entry Id", strategy.long, 100)
  67. if inRestrictedRange and short_f // ADD OTHER BUY SIGNAL BOOLS
  68. strategy.entry("My Short Entry Id", strategy.short, 100)
  69.  
  70.  
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement