Dokumentacja / Pierwsze kroki

Pierwsze kroki

Skonfiguruj PineBag raz, a następnie przygotuj pierwszy test w ciągu kilku minut.

Raport portfolio PineBag obok bocznego panelu rozszerzeń
Prawdziwy obszar roboczy PineBag: rozszerzenie przygotowuje uruchomienie, a pełny raport pozostaje otwarty obok niego.

Potrzebujesz trzech rzeczy

5-dniowy okres próbny rozpoczyna się automatycznie. Nie wymaga karty. Dostępność runów jest ograniczona przez Twój plan TradingView.

Zainstaluj i otwórz PineBag

  1. Zainstaluj rozszerzenie.
    Użyj przycisku instalacji PineBag. Przypnij rozszerzenie, jeśli chcesz mieć szybki dostęp.
  2. Otwórz wykres TradingView.
    Najpierw zaloguj się, a następnie otwórz dowolny obsługiwany rynek i ramy czasowe.
  3. Załaduj ponownie kartę wykresu.
    Zrób to po zainstalowaniu lub aktualizacji PineBag, aby możliwe było połączenie wykresu.
  4. Otwórz torbę PineBag.
    Wybierz ikonę PineBag. Wskaźnik połączenia zmieni kolor na zielony, gdy karta będzie gotowa.

Panel boczny, sterowanie za sterowaniem

Liczby na rzeczywistym interfejsie odpowiadają objaśnieniom. Nic na tym zdjęciu nie jest makietą.

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

    Wczytana strategia. Kliknij kartę, aby otworzyć ją w edytorze; kosz w nagłówku sekcji ją usuwa.

  2. 2
    Podsumowanie przebiegu

    Ramy czasowe, kapitał, wielkość zamówienia i prowizja, która zostanie wykorzystana.

  3. 3
    Szukaj

    Otwiera wyszukiwanie symboli TradingView, dzięki czemu możesz dodać ticker zakwalifikowany do giełdy.

  4. 4
    Torba na kopie

    Kopiuje każdy ticker, jeden EXCHANGE:SYMBOL w wierszu.

  5. 5
    Torebka z pastą

    Akceptuje linie, przecinki, średniki lub spacje i ignoruje duplikaty.

  6. 6
    Wyczyść

    Prosi o drugie kliknięcie, kopiuje tickery, a potem czyści listę — „Wklej tickery” ją przywróci.

  7. 7
    Tagi giełdowe

    Pokazuje aktualną torbę. Użyj ×, aby usunąć jeden symbol; dodaj do 500.

  8. 8
    Uruchom backtest

    Zatwierdza konfigurację i rozpoczyna sekwencyjne uruchamianie portfela.

  9. 9
    Raporty

    Zapisz lokalnie 50 ostatnich raportów i wyeksportuj JSON lub CSV.

  10. 10
    Pozostało dni

    Active days: 05 — Pozostało dni.

  11. 11
    Wsparcie

    Dostępna jest pomoc techniczna, rozliczeniowa, licencyjna i dotycząca prywatności.

Załaduj strategię

Edytor Real PineBag ze strategią Pine Script
Wbudowany edytor wykorzystuje numery linii i podświetlanie składni oraz automatycznie zapisuje działające źródło.
  1. Wybierz źródło.
    Upuść a .pine do Strategy lub otwórz Edytor i wklej kod.
  2. Napraw każdy komunikat weryfikacyjny.
    Skrypt musi zawierać strategy(). PineBag pokazuje wyraźny błąd, jeśli nie można go użyć.
  3. Sprawdź podsumowanie.
    Potwierdź nazwę skryptu, ramy czasowe, kapitał i wielkość zamówienia pokazane powyżej Uruchom.
Skrypty wskaźników nie mogą podlegać testowaniu historycznemu. Jeśli źródło zaczyna się od indicator(), przekonwertuj go na strategię przed uruchomieniem PineBag.
Gotowy: połączenie jest zielone, podsumowanie strategii jest widoczne, a Twój koszyk nie jest pusty.

Szablon strategii

Każde pole zakładki Properties w TradingView odpowiada argumentowi strategy(). Trzymaj wartości jako nazwane stałe na początku skryptu: z priorytetem skryptu każdy ticker jest testowany przy tych samych założeniach.

TIMEFRAME

Interwał

INITIAL_CAPITAL · CURRENCY

Kapitał początkowy

ORDER_SIZE · ORDER_SIZE_TYPE

Domyślna wielkość zlecenia

PYRAMIDING

Piramidowanie

BAR_MAGNIFIER

Szczegółowość świec

CALC_EVERY_TICK · CALC_ON_FILLS

Wykonanie skryptu

COMMISSION · COMMISSION_TYPE

Prowizja

MARGIN_LONG · MARGIN_SHORT

Dźwignia dla long i short

SLIPPAGE

Poślizg

LIMIT_FILL_TICKS

Realizacja zleceń limit

FILL_ON_BAR_CLOSE

Opóźnienie realizacji zleceń

runtime.error()

Zatrzymuje skrypt na każdym innym interwale.

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))

Wartości TIMEFRAME

Wpisz w cudzysłowie jeden ze standardowych interwałów TradingView. To, które się wczytają, zależy od Twojego planu TradingView, zgodnie z tradingview.com/pricing.

Basic i wyższe

Dni, tygodnie i miesiące.

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

Essential i wyższe

Minuty, godziny i świece zakresowe. Minuty nie mają litery; jedna godzina to 60.

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

Premium i wyższe

Interwały sekundowe.

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

Tylko Ultimate

Interwały tickowe.

"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
Tydzień to "1W", a nie "7D". PineBag odczytuje "7D" jako "1W" i odrzuca inne niestandardowe interwały, np. "2M" lub "2D".

Wielkość zlecenia: procent, kwota lub ilość

ORDER_SIZE zawiera liczbę, a ORDER_SIZE_TYPE określa, co ona oznacza. Razem wypełniają pole Order size na karcie Properties w TradingView.

strategy.percent_of_equity

Procent bieżącego kapitału. 10 oznacza 10% kapitału na transakcję.

strategy.cash

Kwota w walucie strategii. 1000 oznacza 1000 USD na transakcję.

strategy.fixed

Liczba kontraktów, akcji lub monet. 0.5 oznacza 0,5 BTC na transakcję.

qty = …

Domyślna wielkość dotyczy tylko zleceń bez własnego qty. Wejście z qty = … używa tej wartości.

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

Własne zmienne

Ustawienia własnej logiki strategii trzymaj w osobnym bloku INPUT SETTINGS. Każde wywołanie input.int(), input.float() lub input.bool() staje się polem w zakładce Inputs w TradingView, więc możesz je zmieniać bez edycji kodu.

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)
↓Pobierz edytowalny szablon .pine4 KB · Pine Script v6