Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=4
- strategy(title="BB_Mean_Reversal",
- overlay=true,
- margin_long=0,
- margin_short=0,
- default_qty_type=strategy.cash,
- initial_capital=10000,
- currency="EUR")
- in_valuta =input(title="valuta", type=input.string, defval="EUR", options=["EUR", "CAD", "JPY", "NZD", "GBP", "CHF"])
- risk_per_trade =input(title="risk_per_trade_%", type=input.float, defval=1.0, minval=0.1, maxval=100, step=0.1)
- in_atr_periodo =input(title="PeriodicitΓ _Atr", type=input.integer, defval=7, minval=5, maxval=500, step=1)
- in_atr_min =input(title="Min_Atr", type=input.float, defval=0.0015, minval=0.0001, maxval=500, step=0.0001)
- in_tp_short =input(title="TP_Short", type=input.float, defval=1.3, step=0.1)
- in_tp_long =input(title="TP_Long", type=input.float, defval=1.3, step=0.1)
- in_solo_long =input(title="Solo_Long", type=input.bool, defval=false)
- hourTrading =input(title="Sesione_Valida_Di_Trading", type=input.string, defval="0600-2300:23456")
- range_Trading =time(timeframe.period, hourTrading)
- valuta_Base_Uguale= in_valuta == syminfo.basecurrency
- valuta_Secondaria_Uguale = in_valuta == syminfo.currency
- nessuna_Valuta = not valuta_Secondaria_Uguale and not valuta_Base_Uguale
- conversione_Coppia = valuta_Secondaria_Uguale ? syminfo.tickerid : in_valuta + syminfo.currency
- conversione_Tasso_Cambio = security(symbol=conversione_Coppia, resolution="D", expression=close)
- //Calcolo Position Size
- getVolumePosizione(stopLossSizePoints) =>
- riskAmount = (strategy.equity * (risk_per_trade / 100)) * (valuta_Base_Uguale or nessuna_Valuta ? conversione_Tasso_Cambio : 1.0)
- riskPerPoint = (stopLossSizePoints * syminfo.pointvalue)
- positionSize = (riskAmount / riskPerPoint) / (syminfo.mintick * 10)
- round(positionSize)
- atr = atr(in_atr_periodo)
- [bb_media, bb_sup, bb_inf] = bb(close, 20, 2)
- plMedia = plot(bb_media, title="Bande di Bollinger - media", color=color.green, linewidth=1)
- plSup = plot(bb_sup, title="Bande di Bollinger - banda sup", color=color.green, linewidth=1)
- plInf = plot(bb_inf, title="Bande di Bollinger - banda inf", color=color.green, linewidth=1)
- fill(plSup, plInf, color=color.green)
- if crossunder(close, bb_sup) and strategy.opentrades == 0 and atr >= in_atr_min and not in_solo_long and range_Trading
- shortSLPrezzo = high + atr
- shortSLPips = ((shortSLPrezzo - close) / syminfo.mintick / 10)
- size = getVolumePosizione(shortSLPips)
- strategy.entry("short", false, qty=size)
- strategy.exit("short", stop=shortSLPrezzo, profit=shortSLPips * in_tp_short * 10)
- if crossover(close, bb_inf) and strategy.opentrades == 0 and atr >= in_atr_min and range_Trading
- longSLPrezzo = close - atr
- longSLPips = ((close - longSLPrezzo) / syminfo.mintick / 10)
- size = getVolumePosizione(longSLPips)
- strategy.entry("long", true, qty=size)
- strategy.exit("long", stop=longSLPrezzo, profit=longSLPips * in_tp_long * 10)
- plot(high + atr, color=color.black)
- plot(close - atr, color=color.black)
Add Comment
Please, Sign In to add comment