Advertisement
Maurizio-Ciullo

Study Reversal-Band ETH/PERP FTX 4H LONG E SHORT

Jan 13th, 2022 (edited)
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
  2. // ยฉ Maurizio-Ciullo
  3. // (Take Profit Long/Short= Market Close Sopra/Sotto Bande) (Take Profit Limit Long/Short= +12% Tradingview-Hub) (Stop Loss Limit Long= -9% Tradingview-Hub) (Stop Loss Limit Short= -7% Tradingview-Hub) (Stop Emergenza= No)
  4. //Il trading system completo - Study Reversal Band (Strategia Reversal) - parte 2
  5. // (Exchange= FTX) (Sottostante ETH-PERP) (Timeframe= 4H) (Direzione= LONG E SHORT) (Swing Posizione= SI) (Esclusione Ore=NO) (Esclusione Giorni=NO) (Esclusione Mesi=APRILE/AGOSTO)
  6. // (Take Profit Long/Short= Market Close Sopra/Sotto Bande) (Take Profit Limit Long/Short= +12% Tradingview-Hub) (Stop Loss Limit Long= -9% Tradingview-Hub) (Stop Loss Limit Short= -7% Tradingview-Hub)
  7. //@version=4
  8.  
  9. study(title="Study Reversal-Band ETH/PERP FTX 4H LONG E SHORT", overlay=false)
  10.  
  11.  
  12. input_stop_loss_long = input(title="stop_loss_long", type=input.float, defval=9, minval=0, maxval=100, step=0.1, group="Stop&Target")
  13. input_stop_loss_short = input(title="stop_loss_short", type=input.float, defval=7, minval=0, maxval=100, step=0.1, group="Stop&Target")
  14. input_target_long = input(title="target_long", type=input.float, defval=12, minval=0, maxval=100, step=0.1, group="Stop&Target")
  15. input_target_short = input(title="target_short", type=input.float, defval=12, minval=0, maxval=100, step=0.1, group="Stop&Target")
  16. input_risk = input(title="Percentuale rischio", type=input.float, defval=27.5, minval=0, maxval=100, step = 0.01, group="Stop&Target")
  17. input_sma_long = input(title="Media BB Long", type=input.integer, defval=30, minval=0, maxval=50, group="Bande")
  18. input_sma_short = input(title="Media BB Short", type=input.integer, defval=24, minval=0, maxval=50, group="Bande")
  19. deviazione_long = input(title="Deviazione Long", type=input.float, defval=1.5, step=0.1, group="Bande")
  20. deviazione_short = input(title="Deviazione Short", type=input.float, defval=1.5, step=0.1, group="Bande")
  21. input_ema_long = input(title="Media Long", type=input.integer, defval=55, minval=0, maxval=500, group="Medie")
  22. input_ema_short = input(title="Media Short", type=input.integer, defval=55, minval=0, maxval=500, group="Medie")
  23. lunghezza_adx_long = input(title="Lunghezza ADX Long", type=input.integer, defval=10, group="ADX")
  24. lunghezza_adx_short = input(title="Lunghezza ADX Short", type=input.integer, defval=9, group="ADX")
  25. differenziale_adx_long = input(title="Differenziale ADX Long", type=input.integer, defval=35, group="ADX")
  26. differenziale_adx_short = input(title="Differenziale ADX Short", type=input.integer, defval=31, group="ADX")
  27. only_Long = input(title="Solo long trade", type=input.bool, defval=false, inline="1", group="Direzione")
  28. only_Short = input(title="Solo short trade", type=input.bool, defval=false, inline="1", group="Direzione")
  29.  
  30.  
  31. // Calcolo del range del backtest
  32.  
  33. startDate = input(title="Start Date", type=input.integer,
  34.      defval=17, minval=1, maxval=31, group="Periodo")
  35. startMonth = input(title="Start Month", type=input.integer,
  36.      defval=08, minval=1, maxval=12, group="Periodo")
  37. startYear = input(title="Start Year", type=input.integer,
  38.      defval=2017, minval=1800, maxval=2100, group="Periodo")
  39.  
  40. endDate = input(title="End Date", type=input.integer,
  41.      defval=01, minval=1, maxval=31, group="Periodo")
  42. endMonth = input(title="End Month", type=input.integer,
  43.      defval=01, minval=1, maxval=12, group="Periodo")
  44. endYear = input(title="End Year", type=input.integer,
  45.      defval=2121, minval=1800, maxval=2100, group="Periodo")
  46.  
  47.  
  48. inDateRange = (time >= timestamp(syminfo.timezone, startYear,
  49.          startMonth, startDate, 0, 0)) and
  50.      (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
  51.  
  52.  
  53. ////Calcolo degli indicatori
  54.  
  55. // Medie Mobili
  56.  
  57. ema_long  = ema(close, input_ema_long)
  58. ema_short = ema(close,input_ema_short)
  59.  
  60. //// Bollinger Bands
  61.  
  62. //  Bollinger Bands Long
  63.  
  64. middle_Band_long   = sma(close, input_sma_long)
  65. deviazione_st_long = deviazione_long * stdev(close, input_sma_long)
  66. UpperBand_long     = middle_Band_long + deviazione_st_long
  67. LowerBand_long     = middle_Band_long - deviazione_st_long
  68.  
  69. // Bollinger Bands Short
  70.  
  71. middle_Band_short   = sma(close, input_sma_short)
  72. deviazione_st_short = deviazione_short * stdev(close, input_sma_short)
  73. UpperBand_short     = middle_Band_short + deviazione_st_short
  74. LowerBand_short     = middle_Band_short - deviazione_st_short
  75.  
  76. //// ADX
  77.  
  78. // ADX Long
  79.  
  80. [di_pos_long, di_neg_long, adx_long] = dmi(lunghezza_adx_long, lunghezza_adx_long)
  81.  
  82. //ADX Short
  83.  
  84. [di_pos_short, di_neg_short, adx_short] = dmi(lunghezza_adx_short, lunghezza_adx_short)
  85.  
  86.  
  87. ////Entry/Exit Conditions
  88.  
  89.  
  90. //Condizione Entry Long
  91. condEntryLong = crossover(close, LowerBand_long) and close < ema_long and adx_long < differenziale_adx_long and month !=4 and month!=8 and not only_Short and inDateRange
  92. //Condizione Uscita Long
  93. condExitLong = crossover(close, UpperBand_long)
  94.  
  95. // Condizione Entry Short: Crossunder di due medie con il prezzo di chiusura che รจ comunque sotto una terza media con differenziale delle medie
  96. condEntryShort = crossunder(close, UpperBand_short) and close > ema_short and adx_short < differenziale_adx_short and month !=4 and month!=8 and not only_Long and inDateRange
  97. // Condizione Exit Short
  98. condExitShort = crossunder(close, LowerBand_short)
  99.  
  100.  
  101. //Entry/Exit Orders
  102.  
  103.  
  104. //strategy.entry("long", true, when = condEntryLong)
  105. //strategy.close("long", when=condExitLong)
  106. //strategy.entry("short", false, when = condEntryShort)
  107. //strategy.close("short", when=condExitShort)
  108.  
  109.  
  110. //definizione variabili posizioni aperte
  111.  
  112. IsLongOpen = false
  113. IsLongOpen := condEntryLong[1] ? true : condExitLong[1] ? false : condEntryShort[1] ? false : IsLongOpen[1]
  114.  
  115. IsShortOpen = false
  116. IsShortOpen := condEntryShort[1] ? true : condExitShort[1] ? false : condEntryLong[1] ? false : IsShortOpen[1]
  117.  
  118. IsFlat = true
  119. IsFlat := not IsLongOpen and not IsShortOpen
  120.  
  121. //conversione bool -> float, per debug
  122.  
  123. IsLongOpenFloat = if IsLongOpen == true
  124.     1
  125. else
  126.     0
  127.  
  128. IsShortOpenFloat = if IsShortOpen == true
  129.     1
  130. else
  131.     0
  132.  
  133. IsFlatFloat = if IsFlat == true
  134.     1
  135. else
  136.     0
  137.  
  138. //plot posizioni aperte, per debug
  139.  
  140. //plot (IsLongOpenFloat)
  141. //plot (IsShortOpenFloat,color=color.yellow)
  142. //plot (IsFlatFloat,color=color.red)
  143.  
  144. //variabili apertura e chiusura posizione
  145.  
  146. OpenLong = condEntryLong //and not IsLongOpen
  147. CloseLong = condExitLong and IsLongOpen and not condEntryShort
  148.  
  149. OpenShort = condEntryShort //and not IsShortOpen
  150. CloseShort = condExitShort and IsShortOpen and not condEntryLong
  151.  
  152. //conversione bool -> float, per debug
  153.  
  154. OpenShortFloat = if OpenShort == true
  155.     1
  156. else
  157.     0
  158.  
  159. CloseShortFloat = if CloseShort == true
  160.     1
  161. else
  162.     0
  163.  
  164. OpenLongFloat = if OpenLong == true
  165.     1
  166. else
  167.     0
  168.  
  169. CloseLongFloat = if CloseLong == true
  170.     1
  171. else
  172.     0
  173.  
  174. //plot aperture ordini, per debug
  175.  
  176. plot (OpenShortFloat,color=color.red)
  177. plot (CloseShortFloat,color=color.yellow)
  178. plot (OpenLongFloat,color=color.blue)
  179. plot (CloseLongFloat,color=color.white)
  180.  
  181. //alert
  182.  
  183.  
  184. // Plot entry ed exit degli allert
  185. //plotshape(series=OpenLong, text="entry_long", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
  186. //plotshape(series=CloseLong, text="close_long", style=shape.triangleup, location=location.belowbar, color=color.olive, size=size.small)
  187. //plotshape(series=OpenShort, text="entry_short", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
  188. //plotshape(series=CloseShort, text="close_short", style=shape.triangledown, location=location.abovebar, color=color.purple, size=size.small)
  189.  
  190. alertcondition(OpenLong,title="Open Long")
  191. alertcondition(CloseLong,title="Close Long")
  192. alertcondition(OpenShort,title="Open Short")
  193. alertcondition(CloseShort,title="Close Short")
  194.  
  195.  
  196.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement