Erste Schritte
Richten Sie PineBag einmal ein und bereiten Sie dann in wenigen Minuten Ihren ersten Test vor.
Sie brauchen drei Dinge
- Google Chrome 116 oder neuer.
- Ein angemeldetes TradingView-Konto mit Zugriff auf die Symbole, die Sie testen möchten.
- Eine Pine Scriptdatei, die deklariert
strategy(), nicht nurindicator().
Installieren und öffnen Sie PineBag
-
Installieren Sie die Erweiterung.
Verwenden Sie die PineBag-Installationsschaltfläche. Wenn Sie schnellen Zugriff wünschen, pinnen Sie die Erweiterung an. -
Öffnen Sie ein TradingView-Diagramm.
Melden Sie sich zuerst an und öffnen Sie dann einen beliebigen unterstützten Markt und Zeitrahmen. -
Laden Sie die Registerkarte „Diagramm“ neu.
Tun Sie dies nach der Installation oder Aktualisierung von PineBag, damit die Karte eine Verbindung herstellen kann. -
Öffne PineBag.
Wählen Sie das PineBag-Symbol. Die Verbindungsanzeige wird grün, wenn die Karte bereit ist.
Das Seitenteil, Steuerung für Steuerung
Die Zahlen auf der realen Schnittstelle stimmen mit den Erklärungen überein. Nichts auf diesem Bild ist eine Attrappe.
1
2
3
4
5
6
7
8
9
10
11
- 1Strategie
Die geladene Strategie. Ein Klick auf die Karte öffnet sie im Editor; der Papierkorb in der Abschnittsüberschrift entfernt sie.
- 2Zusammenfassung ausführen
Zeitrahmen, Kapital, Auftragsgröße und Provision, die verwendet werden.
- 3Suche
Öffnet die TradingView-Symbolsuche, sodass Sie einen börsenqualifizierten Ticker hinzufügen können.
- 4Kopiertasche
Kopiert jeden Ticker, einen
EXCHANGE:SYMBOLpro Zeile. - 5Klebebeutel
Akzeptiert Zeilen, Kommas, Semikolons oder Leerzeichen und ignoriert Duplikate.
- 6Klar
Fragt nach einem zweiten Klick, kopiert die Ticker und leert dann die Liste – „Ticker einfügen“ holt sie zurück.
- 7Ticker-Tags
Zeigt die aktuelle Tasche an. Verwenden Sie ×, um ein Symbol zu entfernen. addiere bis 500.
- 8Backtest starten
Validiert das Setup und startet den sequentiellen Portfolio-Lauf.
- 9Berichte
Speichern Sie die letzten 50 Berichte lokal und exportieren Sie JSON oder CSV.
- 10Verbleibende Tage
Active days: 05— Verbleibende Tage. - 11Hilfe
Support steht für technische, Abrechnungs-, Lizenzierungs- und Datenschutzanfragen zur Verfügung.
Laden Sie eine Strategie
- Wählen Sie die Quelle.
Legen Sie eine.pine-Datei in Strategy, oder öffnen Sie den Editor und fügen Sie den Code ein. - Korrigieren Sie alle Validierungsmeldungen.
Das Skript muss enthaltenstrategy(). PineBag zeigt einen eindeutigen Fehler an, wenn es nicht verwendet werden kann. - Überprüfen Sie die Zusammenfassung.
Bestätigen Sie den oben angezeigten Skriptnamen, den Zeitrahmen, das Kapital und die Auftragsgröße.
indicator(), konvertieren Sie es in eine Strategie, bevor Sie PineBag ausführen.Strategievorlage
Jedes Feld im Properties-Tab von TradingView entspricht einem Argument von strategy(). Halten Sie die Werte als benannte Konstanten am Anfang des Skripts: Mit Skriptpriorität läuft jeder Ticker mit denselben Annahmen.
TIMEFRAMEZeitrahmen
INITIAL_CAPITAL · CURRENCYAnfangskapital
ORDER_SIZE · ORDER_SIZE_TYPEStandard-Ordergröße
PYRAMIDINGPyramiding
BAR_MAGNIFIERBalkendetaillierung
CALC_EVERY_TICK · CALC_ON_FILLSSkriptausführung
COMMISSION · COMMISSION_TYPEProvision
MARGIN_LONG · MARGIN_SHORTHebel für Long und Short
SLIPPAGESlippage
LIMIT_FILL_TICKSAusführung von Limit-Orders
FILL_ON_BAR_CLOSEVerzögerung der Orderausführung
runtime.error()Stoppt das Skript auf jedem anderen Zeitrahmen.
//@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))
TIMEFRAME-Werte
Gib einen der Standard-Intervalle von TradingView in Anführungszeichen an. Welche davon laden, hängt von deinem TradingView-Tarif ab, wie auf tradingview.com/pricing aufgeführt.
Tage, Wochen und Monate.
"1D" "1W" "1M" "3M" "6M" "12M"
Minuten, Stunden und Range-Bars. Minuten haben keinen Buchstaben; eine Stunde ist 60.
"1" "3" "5" "15" "30" "45""60" "120" "180" "240""1R" "10R" "100R" "1000R"
Sekundenbasierte Intervalle.
"1S" "5S" "10S" "15S" "30S" "45S"
Tickbasierte Intervalle.
"1T" "10T" "100T" "1000T"
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
Ordergröße: Prozent, Betrag oder Menge
ORDER_SIZE enthält die Zahl, ORDER_SIZE_TYPE legt fest, was sie bedeutet. Zusammen füllen sie das Feld Order size im Properties-Tab von TradingView.
strategy.percent_of_equity
Ein Prozentsatz des aktuellen Kapitals. 10 bedeutet 10 % des Kapitals pro Trade.
strategy.cash
Ein Betrag in der Währung der Strategie. 1000 bedeutet 1.000 USD pro Trade.
strategy.fixed
Eine Anzahl von Kontrakten, Aktien oder Coins. 0.5 bedeutet 0,5 BTC pro Trade.
qty = …
Die Standardgröße gilt nur für Orders ohne eigenes qty. Ein Einstieg mit qty = … verwendet stattdessen diesen Wert.
// 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
Eigene Variablen
Legen Sie die Einstellungen Ihrer eigenen Strategielogik in einen separaten INPUT SETTINGS-Block. Jeder Aufruf von input.int(), input.float() oder input.bool() wird zu einem Feld im Inputs-Tab von TradingView, sodass Sie ihn ohne Codeänderung anpassen können.
// ----------------------------------------------------------------------------
// 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)