Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=4
- strategy(title="Strategia con Bollinger Bands",
- overlay=true,
- pyramiding=0,
- initial_capital=100000,
- default_qty_value=1,
- commission_type=strategy.commission.cash_per_order,
- commission_value=1,
- slippage=2)
- //2. Parametri di input della strategia (vedi funzione input(.......))
- sorgente = input(title="Source", type=input.source, defval=close)
- sma = input(title="Media mobile Semplice", type=input.integer, minval=5, maxval=200, defval=20)
- dev = input(title="Deviazione Standard", type=input.float, minval=0.1, maxval= 20, defval=2.0)
- //3. Calcolo e disegno degli indicatori / variabili
- BB_sma = sma(sorgente, sma)
- BB_offset = offset(sorgente, 1)
- BB_deviazione = dev * stdev(sorgente, sma)
- bb_bands(media_mobile, deviazione_standard) =>
- banda_sup = media_mobile + deviazione_standard
- banda_inf = media_mobile - deviazione_standard
- [banda_sup,banda_inf]
- [BB_superiore, BB_inferiore] = bb_bands(BB_sma, BB_deviazione)
- plotBB_sma = plot(BB_sma, color=color.black)
- plotBB_superiore = plot(BB_superiore, color = color.green)
- plotBB_inferiore = plot(BB_inferiore, color = color.green)
- fill(plotBB_inferiore, plotBB_superiore, color = color.green, transp = 80)
- //Determinazione Stop Loss low o hign - Atr girono precedente
- stop_loss_long = (low - atr(14)) [1]
- stop_loss_short = (high + atr(14)) [1]
- plot(stop_loss_long)
- plot(stop_loss_short)
- //4. Determinazione condizioni di entrata Long
- cond_long = crossover(close, BB_inferiore)
- strategy.entry("operazioneLong", true, when = cond_long)
- //5. Determinazione condizioni di entrata Short
- cond_short= crossunder(close, BB_superiore)
- strategy.entry("operazioneShort", false, when = cond_short)
- //6. Determinazione condizioni chiusura delle operazioni Long
- cond_exitlong= crossover(close, BB_sma)
- strategy.close("operazioneLong", when = cond_exitlong)
- //7. Determinazione condizioni chiusura delle operazioni Short
- cond_exitshort=crossunder(close, BB_sma)
- strategy.close("operazioneShort", when = cond_exitshort)
- //Determinazione Esecuzione Exit Stop Long Con Condizioni If
- if (low < BB_inferiore) and strategy.position_size != 0
- strategy.exit("operazioneLong", stop= stop_loss_long)
- //Determinazione Esecuzione Exit Stop Long Con Condizioni If
- if (high > BB_superiore) and strategy.position_size != 0
- strategy.exit("operazioneShort", stop= stop_loss_short)
- //Creazione di una label con la condizione di apparizione solo sull'entrata e non su tutte le candele
- //Il txt e label.new in questo caso è indentata con if e per funzionare deve avere tutti gli spazi corretti e non solo, i caratteri che sembrano dei commenti come:
- //"Entry_L: " oppure : "\nStop_Long:" in particolare: "\n......titolo....: + sono parte del codice "\n è parte del codice e se scritta male o omessa il cosice non
- //funzionerà.
- if cond_long and strategy.opentrades !=0
- stop_loss_long_pip = (stop_loss_long - close) / syminfo.mintick / 10 //Calcolo Stop Loss in Pip
- //La size della posizione non la so ancora calcolare
- //size = getVolumePosizione(stop_loss_long_pip) Dovrebbe calcolare autmaticamente la size in base allo stop
- txt = "Entry_L: " + tostring(close)
- +"\nStop_Long: " + tostring(stop_loss_long)
- +"\nEquity: " + tostring(strategy.equity)
- +"\nStop_Loss_Long_Pips: " + tostring(round(stop_loss_long_pip))
- // +"\nSize: " + tostring(size)
- +"\nValore_Point: " + tostring(syminfo.pointvalue)
- +"\nMin_Tick: " + tostring(syminfo.mintick)
- //Label new vuole almeno 2 parametri obbligatori x ed y i primi 2. Il 2 non lo abbiamo inserito perchè
- // y (series) Viene considerato solo se yloc=yloc.price ed il nostro yloc= è un above bar, in ogni modo dobbiamo riempire il campo con na altrimenti ci darà errore.
- label.new(bar_index, na, text=txt, yloc=yloc.abovebar, color=color.red)
- //Creazine di una label come sopra ma per lo shrort
- if cond_short and strategy.opentrades !=0
- stop_loss_short_pip = (stop_loss_short - close) / syminfo.mintick / 10
- //La size della posizione non la so ancora calcolare
- //size = getVolumePosizione(stop_loss_long_pip)
- txt = "Entry_S: " + tostring(close)
- +"\nStop_Short: " + tostring(stop_loss_short)
- +"\nEquity: " + tostring(strategy.equity)
- +"\nStop_Loss_Short_Pips: " + tostring(round(stop_loss_short_pip))
- //+"\nSize: " + tostring(size)
- +"\nValore_Point: " + tostring(syminfo.pointvalue)
- +"\nMin_Tick: " + tostring(syminfo.mintick)
- label.new(bar_index, na, text=txt, yloc=yloc.abovebar, color=color.red)
Add Comment
Please, Sign In to add comment