Maurizio-Ciullo

9 Funzioni di debug avanzate (modalità replay, label e concatenazione di stringhe)

Jul 17th, 2021 (edited)
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //@version=4
  2. strategy(title="Strategia con Bollinger Bands",
  3.      overlay=true,
  4.      pyramiding=0,
  5.      initial_capital=100000,
  6.      default_qty_value=1,
  7.      commission_type=strategy.commission.cash_per_order,
  8.      commission_value=1,
  9.      slippage=2)
  10.  
  11. //2. Parametri di input della strategia (vedi funzione input(.......))
  12. sorgente = input(title="Source", type=input.source, defval=close)
  13. sma = input(title="Media mobile Semplice", type=input.integer, minval=5, maxval=200, defval=20)
  14. dev = input(title="Deviazione Standard", type=input.float, minval=0.1, maxval= 20, defval=2.0)
  15.  
  16. //3. Calcolo e disegno degli indicatori / variabili
  17. BB_sma = sma(sorgente, sma)
  18. BB_offset = offset(sorgente, 1)
  19. BB_deviazione = dev * stdev(sorgente, sma)
  20.  
  21. bb_bands(media_mobile, deviazione_standard) =>
  22.     banda_sup = media_mobile + deviazione_standard
  23.     banda_inf = media_mobile - deviazione_standard
  24.     [banda_sup,banda_inf]
  25.  
  26. [BB_superiore, BB_inferiore] = bb_bands(BB_sma, BB_deviazione)
  27.  
  28. plotBB_sma = plot(BB_sma, color=color.black)
  29. plotBB_superiore = plot(BB_superiore, color = color.green)
  30. plotBB_inferiore = plot(BB_inferiore, color = color.green)
  31. fill(plotBB_inferiore, plotBB_superiore, color = color.green, transp = 80)
  32.  
  33. //Determinazione Stop Loss low o hign - Atr girono precedente
  34. stop_loss_long = (low - atr(14)) [1]
  35. stop_loss_short = (high + atr(14)) [1]
  36. plot(stop_loss_long)
  37. plot(stop_loss_short)
  38.  
  39. //4. Determinazione condizioni di entrata Long
  40. cond_long = crossover(close, BB_inferiore)
  41. strategy.entry("operazioneLong", true, when = cond_long)
  42.  
  43. //5. Determinazione condizioni di entrata Short
  44. cond_short= crossunder(close, BB_superiore)
  45. strategy.entry("operazioneShort", false, when = cond_short)
  46.  
  47. //6. Determinazione condizioni chiusura delle operazioni Long
  48. cond_exitlong= crossover(close, BB_sma)
  49. strategy.close("operazioneLong", when = cond_exitlong)
  50.  
  51. //7. Determinazione condizioni chiusura delle operazioni Short
  52. cond_exitshort=crossunder(close, BB_sma)
  53. strategy.close("operazioneShort", when = cond_exitshort)
  54.  
  55. //Determinazione Esecuzione Exit Stop Long Con Condizioni If
  56. if (low < BB_inferiore) and strategy.position_size != 0
  57.     strategy.exit("operazioneLong", stop= stop_loss_long)
  58. //Determinazione Esecuzione Exit Stop Long Con Condizioni If
  59. if (high > BB_superiore) and strategy.position_size != 0
  60.     strategy.exit("operazioneShort", stop= stop_loss_short)  
  61.    
  62. //Creazione di una label con la condizione di apparizione solo sull'entrata e non su tutte le candele
  63. //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:
  64. //"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
  65. //funzionerà.
  66. if cond_long and strategy.opentrades !=0
  67.     stop_loss_long_pip = (stop_loss_long - close) / syminfo.mintick / 10  //Calcolo Stop Loss in Pip
  68.     //La size della posizione non la so ancora calcolare
  69.     //size = getVolumePosizione(stop_loss_long_pip)  Dovrebbe calcolare autmaticamente la size in base allo stop
  70.    
  71.     txt = "Entry_L: " + tostring(close)
  72.          +"\nStop_Long: " + tostring(stop_loss_long)
  73.          +"\nEquity: " + tostring(strategy.equity)
  74.          +"\nStop_Loss_Long_Pips: " + tostring(round(stop_loss_long_pip))
  75.         // +"\nSize: " + tostring(size)
  76.          +"\nValore_Point: " + tostring(syminfo.pointvalue)
  77.          +"\nMin_Tick: " + tostring(syminfo.mintick)
  78.          
  79. //Label new vuole almeno 2 parametri obbligatori x ed y i primi 2. Il 2 non lo abbiamo inserito perchè
  80. // 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.        
  81.     label.new(bar_index, na, text=txt, yloc=yloc.abovebar, color=color.red)  
  82.    
  83. //Creazine di una label come sopra ma per lo shrort
  84.  
  85. if cond_short and strategy.opentrades !=0
  86.     stop_loss_short_pip = (stop_loss_short - close) / syminfo.mintick / 10
  87.     //La size della posizione non la so ancora calcolare
  88.     //size = getVolumePosizione(stop_loss_long_pip)
  89.    
  90.     txt = "Entry_S: " + tostring(close)
  91.          +"\nStop_Short: " + tostring(stop_loss_short)
  92.          +"\nEquity: " + tostring(strategy.equity)
  93.          +"\nStop_Loss_Short_Pips: " + tostring(round(stop_loss_short_pip))
  94.          //+"\nSize: " + tostring(size)
  95.          +"\nValore_Point: " + tostring(syminfo.pointvalue)
  96.          +"\nMin_Tick: " + tostring(syminfo.mintick)
  97.     label.new(bar_index, na, text=txt, yloc=yloc.abovebar, color=color.red)  
Add Comment
Please, Sign In to add comment