Documenti / Per iniziare

Per iniziare

Configura PineBag una volta, quindi prepara il tuo primo test in pochi minuti.

Report del portafoglio PineBag accanto al pannello laterale dell'estensione
Un vero e proprio spazio di lavoro PineBag: l'estensione prepara la corsa mentre il report completo rimane aperto accanto ad essa.

Hai bisogno di tre cose

La prova di 5 giorni si avvia automaticamente. Non richiede una carta. La disponibilità delle corse è limitata dal tuo piano TradingView.

Installa e apri PineBag

  1. Installa l'estensione.
    Utilizza il pulsante di installazione di PineBag. Blocca l'estensione se desideri un accesso rapido.
  2. Apri un grafico TradingView.
    Accedi prima, quindi apri qualsiasi mercato e periodo di tempo supportati.
  3. Ricarica la scheda della carta.
    Eseguire questa operazione dopo aver installato o aggiornato PineBag in modo che la carta possa connettersi.
  4. Apri PineBag.
    Seleziona l'icona PineBag. L'indicatore di connessione diventa verde quando la carta è pronta.

Il pannello laterale, controllo per controllo

I numeri sull'interfaccia reale corrispondono alle spiegazioni. Niente in questa immagine è un modello.

1 2 3 4 5 6 7 8 9 10 11
  1. 1
    Strategia

    La strategia caricata. Clicca sulla scheda per aprirla nell'editor; il cestino nell'intestazione della sezione la rimuove.

  2. 2
    Esegui riepilogo

    Tempi, capitale, dimensione dell'ordine e commissione che verrà utilizzata.

  3. 3
    Cerca

    Apre la ricerca dei simboli di TradingView in modo da poter aggiungere un ticker qualificato per lo scambio.

  4. 4
    Copia borsa

    Copia ogni ticker, uno EXCHANGE:SYMBOL per riga.

  5. 5
    Busta per pasta

    Accetta righe, virgole, punto e virgola o spazi e ignora i duplicati.

  6. 6
    Cancella

    Chiede un secondo clic, copia i ticker e poi svuota l'elenco; «Incolla i ticker» lo ripristina.

  7. 7
    Tag ticker

    Mostra il bagaglio attuale. Utilizzare × per rimuovere un simbolo; somma fino a 500.

  8. 8
    Avvia backtest

    Convalida l'impostazione e avvia l'esecuzione sequenziale del portafoglio.

  9. 9
    Report

    Salva gli ultimi 50 report localmente ed esporta JSON o CSV.

  10. 10
    Giorni rimanenti

    Active days: 05 — Giorni rimanenti.

  11. 11
    Supporto

    Il supporto è disponibile per richieste tecniche, di fatturazione, di licenza e di privacy.

Carica una strategia

Editor reale di PineBag con una strategia Pine Script
L'editor integrato utilizza i numeri di riga e l'evidenziazione della sintassi e salva automaticamente la fonte di lavoro.
  1. Scegli la fonte.
    Rilascia a .pine in Strategy, oppure apri Editor e incolla il codice.
  2. Correggi qualsiasi messaggio di convalida.
    Lo script deve contenere strategy(). PineBag mostra un chiaro errore se non può essere utilizzato.
  3. Controlla il riepilogo.
    Conferma il nome dello script, l'intervallo di tempo, il capitale e la dimensione dell'ordine mostrati sopra Esegui.
Gli script degli indicatori non possono essere sottoposti a backtest. Se la fonte inizia con indicator(), convertilo in una strategia prima di eseguire PineBag.
Pronto: la connessione è verde, il riepilogo della strategia è visibile e il tuo sacchetto del ticker non è vuoto.

Modello di strategia

Ogni campo della scheda Properties di TradingView corrisponde a un argomento di strategy(). Tieni i valori come costanti con nome all'inizio dello script: con la priorità script, ogni ticker viene testato con le stesse ipotesi.

TIMEFRAME

Timeframe

INITIAL_CAPITAL · CURRENCY

Capitale iniziale

ORDER_SIZE · ORDER_SIZE_TYPE

Dimensione ordine predefinita

PYRAMIDING

Piramidazione

BAR_MAGNIFIER

Dettaglio delle barre

CALC_EVERY_TICK · CALC_ON_FILLS

Esecuzione dello script

COMMISSION · COMMISSION_TYPE

Commissione

MARGIN_LONG · MARGIN_SHORT

Leva long e short

SLIPPAGE

Slippage

LIMIT_FILL_TICKS

Esecuzione degli ordini limite

FILL_ON_BAR_CLOSE

Ritardo di esecuzione degli ordini

runtime.error()

Interrompe lo script su qualsiasi altro timeframe.

Pine Script® v6trend-breakout-atr-risk.pine
//@version=6
// ============================================================================
// Trend breakout · ATR risk — PineBag strategy template
// ============================================================================

// ----------------------------------------------------------------------------
// STRATEGY PROPERTIES (TradingView: Settings → Properties)
// ----------------------------------------------------------------------------
// TIMEFRAME takes a standard TradingView interval. Paste one of these, by the
// lowest TradingView plan that has it (tradingview.com/pricing, Charts):
//   Basic      days      "1D" "1W" "1M" "3M" "6M" "12M"
//   Essential  minutes   "1" "3" "5" "15" "30" "45"
//              hours     "60" "120" "180" "240"
//              ranges    "1R" "10R" "100R" "1000R"
//   Premium    seconds   "1S" "5S" "10S" "15S" "30S" "45S"
//   Ultimate   ticks     "1T" "10T" "100T" "1000T"
// Other intervals are custom and not used: a week is "1W", not "7D".
const string TIMEFRAME         = "1D"                         // Chart timeframe
const float  INITIAL_CAPITAL   = 100000                       // Initial capital
const string CURRENCY          = currency.USD                 // Initial capital currency
const float  ORDER_SIZE        = 100                          // Default order size
const string ORDER_SIZE_TYPE   = strategy.percent_of_equity   // Order size: % of equity
const int    PYRAMIDING        = 1                            // Pyramiding
const bool   BAR_MAGNIFIER     = false                        // Bar detalization: Default (4 ticks per bar)
const bool   CALC_EVERY_TICK   = false                        // Script execution: On bar close
const bool   CALC_ON_FILLS     = false                        // Script execution: no recalculation after fills
const float  COMMISSION        = 0                            // Commission
const string COMMISSION_TYPE   = strategy.commission.percent  // Commission: Percent
const float  MARGIN_LONG       = 100                          // Long leverage 1x (leverage = 100 / margin)
const float  MARGIN_SHORT      = 100                          // Short leverage 1x
const int    SLIPPAGE          = 0                            // Slippage, ticks
const int    LIMIT_FILL_TICKS  = 0                            // Limit order execution: Requested price
const bool   FILL_ON_BAR_CLOSE = false                        // Order execution delay: One tick

strategy("Trend breakout · ATR risk", overlay = true,
     initial_capital = INITIAL_CAPITAL,
     currency = CURRENCY,
     default_qty_type = ORDER_SIZE_TYPE,
     default_qty_value = ORDER_SIZE,
     pyramiding = PYRAMIDING,
     use_bar_magnifier = BAR_MAGNIFIER,
     calc_on_every_tick = CALC_EVERY_TICK,
     calc_on_order_fills = CALC_ON_FILLS,
     commission_type = COMMISSION_TYPE,
     commission_value = COMMISSION,
     margin_long = MARGIN_LONG,
     margin_short = MARGIN_SHORT,
     slippage = SLIPPAGE,
     backtest_fill_limits_assumption = LIMIT_FILL_TICKS,
     process_orders_on_close = FILL_ON_BAR_CLOSE)

// Stops with a clear message on any other timeframe; PineBag reads TIMEFRAME
// and selects it for the run.
if timeframe.period != TIMEFRAME
    runtime.error("Switch the chart to the " + TIMEFRAME + " timeframe.")

// ----------------------------------------------------------------------------
// INPUT SETTINGS (TradingView: Settings → Inputs)
// ----------------------------------------------------------------------------
fastLength     = input.int(20, "Fast EMA", minval = 1)
slowLength     = input.int(50, "Slow EMA", minval = 2)
breakoutLength = input.int(20, "Breakout lookback", minval = 2)
atrLength      = input.int(14, "ATR length", minval = 1)
atrStop        = input.float(2.0, "ATR stop multiplier", minval = 0.1, step = 0.1)

// ----------------------------------------------------------------------------
// CALCULATIONS
// ----------------------------------------------------------------------------
fast = ta.ema(close, fastLength)
slow = ta.ema(close, slowLength)
atr = ta.atr(atrLength)
highestBefore = ta.highest(high, breakoutLength)[1]

// ----------------------------------------------------------------------------
// ENTRIES AND EXITS
// ----------------------------------------------------------------------------
longSignal = fast > slow and close > highestBefore
if longSignal and strategy.position_size == 0
    strategy.entry("Long", strategy.long)

stopPrice = strategy.position_avg_price - atr * atrStop
strategy.exit("ATR stop", "Long", stop = stopPrice)

// ----------------------------------------------------------------------------
// PLOTS
// ----------------------------------------------------------------------------
plot(fast, "Fast EMA", color = color.rgb(0, 153, 255))
plot(slow, "Slow EMA", color = color.rgb(123, 97, 255))

Valori di TIMEFRAME

Scrivi tra virgolette uno degli intervalli standard di TradingView. Quali si caricano dipende dal tuo piano TradingView, come indicato su tradingview.com/pricing.

Basic e superiori

Giorni, settimane e mesi.

"1D" "1W" "1M" "3M" "6M" "12M"

Essential e superiori

Minuti, ore e barre range. I minuti non hanno lettera; un’ora è 60.

"1" "3" "5" "15" "30" "45"
"60" "120" "180" "240"
"1R" "10R" "100R" "1000R"

Premium e superiori

Intervalli in secondi.

"1S" "5S" "10S" "15S" "30S" "45S"

Solo Ultimate

Intervalli a tick.

"1T" "10T" "100T" "1000T"

Pine Script® v6TIMEFRAME
const string TIMEFRAME = "1D"     // 1 day
// const string TIMEFRAME = "1W"  // 1 week
// const string TIMEFRAME = "240" // 4 hours
// const string TIMEFRAME = "15"  // 15 minutes
// const string TIMEFRAME = "30S" // 30 seconds, Premium and higher
Una settimana è "1W", non "7D". PineBag legge "7D" come "1W" e rifiuta altri intervalli personalizzati, come "2M" o "2D".

Dimensione dell’ordine: percentuale, importo o quantità

ORDER_SIZE contiene il numero e ORDER_SIZE_TYPE indica cosa significa. Insieme compilano il campo Order size della scheda Properties di TradingView.

strategy.percent_of_equity

Una percentuale del capitale attuale. 10 significa il 10% del capitale per operazione.

strategy.cash

Un importo nella valuta della strategia. 1000 significa 1.000 USD per operazione.

strategy.fixed

Un numero di contratti, azioni o coin. 0.5 significa 0,5 BTC per operazione.

qty = …

La dimensione predefinita vale solo per gli ordini senza un proprio qty. Un ingresso con qty = … usa invece quel valore.

Pine Script® v6ORDER SIZE
// 10% of equity per trade
const float  ORDER_SIZE        = 10
const string ORDER_SIZE_TYPE   = strategy.percent_of_equity

// 1,000 USD per trade (CURRENCY = currency.USD)
// const float  ORDER_SIZE      = 1000
// const string ORDER_SIZE_TYPE = strategy.cash

// 0.5 contracts, shares or coins per trade
// const float  ORDER_SIZE      = 0.5
// const string ORDER_SIZE_TYPE = strategy.fixed

Variabili personali

Tieni le impostazioni della tua logica di strategia in un blocco INPUT SETTINGS separato. Ogni chiamata a input.int(), input.float() o input.bool() diventa un campo della scheda Inputs di TradingView, così puoi regolarla senza modificare il codice.

Pine Script® v6INPUT SETTINGS
// ----------------------------------------------------------------------------
// INPUT SETTINGS (TradingView: Settings → Inputs)
// ----------------------------------------------------------------------------
fastLength     = input.int(20, "Fast EMA", minval = 1)
slowLength     = input.int(50, "Slow EMA", minval = 2)
breakoutLength = input.int(20, "Breakout lookback", minval = 2)
atrLength      = input.int(14, "ATR length", minval = 1)
atrStop        = input.float(2.0, "ATR stop multiplier", minval = 0.1, step = 0.1)
↓Scarica il modello .pine modificabile4 KB · Pine Script v6