Docs / Mise en route

Mise en route

Configurez PineBag une fois, puis préparez votre premier test en quelques minutes.

Rapport de portefeuille PineBag à côté du panneau latéral de l'extension
Un véritable espace de travail PineBag : l'extension prépare le run tandis que le rapport complet reste ouvert à côté.

Vous avez besoin de trois choses

L'essai de 5 jours démarre automatiquement. Cela ne nécessite pas de carte. La disponibilité des exécutions est limitée par votre plan TradingView.

Installez et ouvrez PineBag

  1. Installez l'extension.
    Utilisez le bouton d'installation de PineBag. Épinglez l’extension si vous souhaitez un accès rapide.
  2. Ouvrez un graphique TradingView.
    Connectez-vous d'abord, puis ouvrez n'importe quel marché et délai pris en charge.
  3. Rechargez l'onglet graphique.
    Faites cela après avoir installé ou mis à jour PineBag afin que la carte puisse se connecter.
  4. Ouvrez PineBag.
    Sélectionnez l'icône PineBag. L'indicateur de connexion devient vert lorsque le graphique est prêt.

Le panneau latéral, contrôle par contrôle

Les chiffres sur l'interface réelle correspondent aux explications. Rien dans cette image n'est une maquette.

1 2 3 4 5 6 7 8 9 10 11
  1. 1
    Stratégie

    La stratégie chargée. Cliquez sur la carte pour l'ouvrir dans l'éditeur ; la corbeille de l'en-tête de section la supprime.

  2. 2
    Résumé de l'exécution

    Délai, capital, taille de la commande et commission qui seront utilisés.

  3. 3
    Recherche

    Ouvre la recherche de symboles TradingView afin que vous puissiez ajouter un ticker qualifié pour la bourse.

  4. 4
    Sac à copies

    Copie chaque ticker, un EXCHANGE:SYMBOL par ligne.

  5. 5
    Sachet de pâte

    Accepte les lignes, les virgules, les points-virgules ou les espaces et ignore les doublons.

  6. 6
    Effacer

    Demande un second clic, copie les tickers, puis vide la liste ; « Coller les tickers » la rétablit.

  7. 7
    Balises téléscripteuses

    Affiche le sac actuel. Utilisez × pour supprimer un symbole ; additionnez jusqu'à 500.

  8. 8
    Lancer le backtest

    Valide la configuration et démarre l'exécution séquentielle du portefeuille.

  9. 9
    Rapports

    Enregistrez les 50 derniers rapports localement et exportez JSON ou CSV.

  10. 10
    Jours restants

    Active days: 05 — Jours restants.

  11. 11
    Assistance

    Une assistance est disponible pour les demandes techniques, de facturation, de licence et de confidentialité.

Charger une stratégie

Véritable éditeur PineBag avec une stratégie Pine Script
L'éditeur intégré utilise les numéros de ligne et la coloration syntaxique et enregistre automatiquement la source de travail.
  1. Choisissez la source.
    Déposez un .pine dans Strategy, ou ouvrez l'éditeur et collez le code.
  2. Corrigez tout message de validation.
    Le script doit contenir strategy(). PineBag affiche une erreur claire s'il ne peut pas être utilisé.
  3. Vérifiez le résumé.
    Confirmez le nom du script, la période, le capital et la taille de la commande indiqués ci-dessus Exécuter.
Les scripts d'indicateur ne peuvent pas être backtestés. Si la source commence par indicator(), convertissez-le en stratégie avant d'exécuter PineBag.
Prêt : la connexion est verte, le résumé de la stratégie est visible et votre panier n'est pas vide.

Modèle de stratégie

Chaque champ de l'onglet Properties de TradingView correspond à un argument de strategy(). Gardez les valeurs dans des constantes nommées en tête du script : avec la priorité du script, chaque ticker est testé avec les mêmes hypothèses.

TIMEFRAME

Unité de temps

INITIAL_CAPITAL · CURRENCY

Capital initial

ORDER_SIZE · ORDER_SIZE_TYPE

Taille d'ordre par défaut

PYRAMIDING

Pyramidage

BAR_MAGNIFIER

Détail des barres

CALC_EVERY_TICK · CALC_ON_FILLS

Exécution du script

COMMISSION · COMMISSION_TYPE

Commission

MARGIN_LONG · MARGIN_SHORT

Effet de levier long et short

SLIPPAGE

Glissement

LIMIT_FILL_TICKS

Exécution des ordres limites

FILL_ON_BAR_CLOSE

Délai d'exécution des ordres

runtime.error()

Arrête le script sur toute autre unité de temps.

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

Valeurs de TIMEFRAME

Indiquez entre guillemets l’un des intervalles standard de TradingView. Ceux qui se chargent dépendent de votre offre TradingView, comme indiqué sur tradingview.com/pricing.

Basic et supérieur

Jours, semaines et mois.

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

Essential et supérieur

Minutes, heures et barres de range. Les minutes n’ont pas de lettre ; une heure s’écrit 60.

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

Premium et supérieur

Intervalles en secondes.

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

Ultimate uniquement

Intervalles en ticks.

"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
Une semaine s’écrit "1W", pas "7D". PineBag lit "7D" comme "1W" et refuse les autres intervalles personnalisés, comme "2M" ou "2D".

Taille d’ordre : pourcentage, montant ou quantité

ORDER_SIZE contient le nombre et ORDER_SIZE_TYPE indique ce qu’il représente. Ensemble, ils remplissent le champ Order size de l’onglet Properties de TradingView.

strategy.percent_of_equity

Un pourcentage du capital actuel. 10 signifie 10 % du capital par trade.

strategy.cash

Un montant dans la devise de la stratégie. 1000 signifie 1 000 USD par trade.

strategy.fixed

Un nombre de contrats, d’actions ou de coins. 0.5 signifie 0,5 BTC par trade.

qty = …

La taille par défaut ne s’applique qu’aux ordres sans qty propre. Une entrée avec qty = … utilise cette valeur à la place.

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

Vos propres variables

Placez les réglages de votre propre logique de stratégie dans un bloc INPUT SETTINGS séparé. Chaque appel à input.int(), input.float() ou input.bool() devient un champ de l'onglet Inputs de TradingView, que vous pouvez ajuster sans modifier le code.

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)
↓Téléchargez le modèle .pine modifiable4 Ko · Pine Script v6