Advertisement
Maurizio-Ciullo

Strategia Mean Reversal Calcolo Posizione Forex EUR/USD FATTA DAMIANO DOTT non Finita

Jul 22nd, 2021
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //@version=4
  2. strategy(title="BB_Mean_Reversal",
  3.      overlay=true,
  4.      margin_long=0,
  5.      margin_short=0,
  6.      default_qty_type=strategy.cash,
  7.      initial_capital=10000,
  8.      currency="EUR")
  9.      
  10. in_valuta         =input(title="valuta", type=input.string, defval="EUR", options=["EUR", "CAD", "JPY", "NZD", "GBP", "CHF"])
  11. risk_per_trade    =input(title="risk_per_trade_%", type=input.float, defval=1.0, minval=0.1, maxval=100, step=0.1)
  12.  
  13. in_atr_periodo    =input(title="Periodicità_Atr", type=input.integer, defval=7, minval=5, maxval=500, step=1)
  14. in_atr_min        =input(title="Min_Atr", type=input.float, defval=0.0015, minval=0.0001, maxval=500, step=0.0001)
  15.  
  16. in_tp_short       =input(title="TP_Short", type=input.float, defval=1.3, step=0.1)
  17. in_tp_long        =input(title="TP_Long", type=input.float, defval=1.3, step=0.1)
  18. in_solo_long      =input(title="Solo_Long", type=input.bool, defval=false)
  19.  
  20. hourTrading       =input(title="Sesione_Valida_Di_Trading", type=input.string, defval="0600-2300:23456")
  21. range_Trading     =time(timeframe.period, hourTrading)
  22.  
  23. valuta_Base_Uguale= in_valuta == syminfo.basecurrency
  24. valuta_Secondaria_Uguale = in_valuta == syminfo.currency
  25.  
  26. nessuna_Valuta = not valuta_Secondaria_Uguale and not valuta_Base_Uguale
  27.  
  28. conversione_Coppia = valuta_Secondaria_Uguale ? syminfo.tickerid : in_valuta + syminfo.currency
  29. conversione_Tasso_Cambio = security(symbol=conversione_Coppia, resolution="D", expression=close)
  30.  
  31. //Calcolo Position Size
  32.  
  33. getVolumePosizione(stopLossSizePoints) =>
  34.     riskAmount = (strategy.equity * (risk_per_trade / 100)) * (valuta_Base_Uguale or nessuna_Valuta ? conversione_Tasso_Cambio : 1.0)
  35.     riskPerPoint = (stopLossSizePoints * syminfo.pointvalue)
  36.     positionSize = (riskAmount / riskPerPoint) / (syminfo.mintick * 10)
  37.     round(positionSize)
  38.    
  39. atr = atr(in_atr_periodo)
  40. [bb_media, bb_sup, bb_inf] = bb(close, 20, 2)
  41.  
  42. plMedia = plot(bb_media, title="Bande di Bollinger - media", color=color.green, linewidth=1)
  43. plSup = plot(bb_sup, title="Bande di Bollinger - banda sup", color=color.green, linewidth=1)
  44. plInf = plot(bb_inf, title="Bande di Bollinger - banda inf", color=color.green, linewidth=1)
  45. fill(plSup, plInf, color=color.green)
  46.  
  47. if crossunder(close, bb_sup) and strategy.opentrades == 0 and atr >= in_atr_min and not in_solo_long and range_Trading
  48.     shortSLPrezzo = high + atr
  49.     shortSLPips = ((shortSLPrezzo - close) / syminfo.mintick / 10)
  50.    
  51.     size = getVolumePosizione(shortSLPips)
  52.    
  53.     strategy.entry("short", false, qty=size)
  54.     strategy.exit("short", stop=shortSLPrezzo, profit=shortSLPips * in_tp_short * 10)
  55.  
  56. if crossover(close, bb_inf) and strategy.opentrades == 0 and atr >= in_atr_min and range_Trading
  57.     longSLPrezzo = close - atr
  58.     longSLPips = ((close - longSLPrezzo) / syminfo.mintick / 10)
  59.    
  60.     size = getVolumePosizione(longSLPips)
  61.    
  62.     strategy.entry("long", true, qty=size)
  63.     strategy.exit("long", stop=longSLPrezzo, profit=longSLPips * in_tp_long * 10)
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement