Документация/Начало работы

Начало работы

Настройте PineBag один раз, а затем подготовьтесь к первому тесту за несколько минут.

Отчет по портфелю PineBag рядом с боковой панелью расширения.
Настоящее рабочее пространство PineBag: расширение готовит запуск, в то время как полный отчет остается открытым рядом с ним.

Вам нужны три вещи

5-дневная пробная версия начинается автоматически. Для этого не требуется карта. Доступность запуска ограничена вашим планом TradingView.

Установите и откройте PineBag

  1. Установите расширение.
    Используйте кнопку установки PineBag. Закрепите расширение, если вам нужен быстрый доступ.
  2. Откройте диаграмму TradingView.
    Сначала войдите в систему, затем откройте любой поддерживаемый рынок и таймфрейм.
  3. Обновите вкладку диаграммы.
    Сделайте это после установки или обновления PineBag, чтобы график мог подключиться.
  4. Открыть PineBag.
    Выберите значок PineBag. Когда диаграмма будет готова, индикатор подключения станет зеленым.

Боковая панель, управление с помощью элементов управления

Числа в реальном интерфейсе соответствуют пояснениям. Ничто на этом изображении не является макетом.

1 2 3 4 5 6 7 8 9 10 11
  1. 1
    Стратегия

    Загруженная стратегия. Нажмите на карточку, чтобы открыть её в редакторе; корзина в заголовке раздела удаляет её.

  2. 2
    Выполнить сводку

    Период, капитал, размер ордера и комиссия, которые будут использоваться.

  3. 3
    Поиск

    Открывает поиск символов TradingView, чтобы вы могли добавить тикер, соответствующий бирже.

  4. 4
    Мешок для копирования

    Копирует каждый тикер, один EXCHANGE:SYMBOL по строке.

  5. 5
    Вставить мешок

    Принимает строки, запятые, точки с запятой или пробелы и игнорирует дубликаты.

  6. 6
    Очистить

    Просит второе нажатие, копирует тикеры и очищает список — «Вставить тикеры» вернёт его.

  7. 7
    Тикерные теги

    Показывает текущую сумку. Используйте ×, чтобы удалить один символ; добавьте до 500.

  8. 8
    Запустить бэктест

    Проверяет настройку и запускает последовательный запуск портфеля.

  9. 9
    Отчёты

    Сохраните последние 50 отчетов локально и экспортируйте JSON или CSV.

  10. 10
    Оставшееся количество дней

    Active days: 05 — Оставшееся количество дней.

  11. 11
    Поддержка

    Поддержка доступна по техническим вопросам, запросам на выставление счетов, лицензированию и конфиденциальности.

Загрузить стратегию

Настоящий редактор PineBag со стратегией Pine Script
Встроенный редактор использует номера строк и подсветку синтаксиса и автоматически сохраняет рабочий источник.
  1. Выберите источник.
    Удалить .pine файла в Strategy или откройте редактор и вставьте код.
  2. Исправьте любое сообщение о проверке.
    Скрипт должен работать содержать strategy(). PineBag отображает явную ошибку, если его невозможно использовать.
  3. Проверьте сводку.
    Подтвердите имя скрипта, таймфрейм, капитал и размер ордера, указанные выше «Запуск».
Скрипты индикаторов не могут быть проверено на исторических данных. Если источник начинается с indicator()преобразуйте его в стратегию перед запуском PineBag.
Готово: соединение зеленое, сводка стратегии видна, и ваша сумка с тикером не пуста.

Шаблон стратегии

Каждому полю вкладки Properties в TradingView соответствует аргумент strategy(). Храните значения в именованных константах в начале скрипта: с приоритетом скрипта каждый тикер тестируется с одинаковыми допущениями.

TIMEFRAME

Таймфрейм

INITIAL_CAPITAL · CURRENCY

Начальный капитал

ORDER_SIZE · ORDER_SIZE_TYPE

Размер ордера по умолчанию

PYRAMIDING

Пирамидинг

BAR_MAGNIFIER

Детализация баров

CALC_EVERY_TICK · CALC_ON_FILLS

Исполнение скрипта

COMMISSION · COMMISSION_TYPE

Комиссия

MARGIN_LONG · MARGIN_SHORT

Кредитное плечо для лонга и шорта

SLIPPAGE

Проскальзывание

LIMIT_FILL_TICKS

Исполнение лимитных ордеров

FILL_ON_BAR_CLOSE

Задержка исполнения ордеров

runtime.error()

Останавливает скрипт на любом другом таймфрейме.

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

Значения TIMEFRAME

Укажите в кавычках один из стандартных интервалов TradingView. Какие из них загружаются, зависит от вашего тарифа TradingView, как указано на tradingview.com/pricing.

Basic и выше

Дни, недели и месяцы.

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

Essential и выше

Минуты, часы и рейндж-бары. У минут нет буквы; один час — это 60.

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

Premium и выше

Секундные интервалы.

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

Только Ultimate

Тиковые интервалы.

"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
Неделя — это "1W", а не "7D". PineBag читает "7D" как "1W" и отклоняет другие пользовательские интервалы, например "2M" или "2D".

Размер ордера: процент, сумма или количество

ORDER_SIZE задаёт число, а ORDER_SIZE_TYPE — что оно означает. Вместе они заполняют поле Order size на вкладке Properties в TradingView.

strategy.percent_of_equity

Процент от текущего капитала. 10 — это 10% капитала на сделку.

strategy.cash

Сумма в валюте стратегии. 1000 — это 1000 USD на сделку.

strategy.fixed

Количество контрактов, акций или монет. 0.5 — это 0,5 BTC на сделку.

qty = …

Размер по умолчанию применяется только к ордерам без собственного qty. Вход с qty = … использует это значение.

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

Собственные переменные

Настройки собственной логики стратегии держите в отдельном блоке INPUT SETTINGS. Каждый вызов input.int(), input.float() или input.bool() становится полем на вкладке Inputs в TradingView, и его можно менять без правки кода.

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)
↓Загрузите редактируемый шаблон .pine4 КБ · Pine Script v6