Tài liệu / Bắt đầu

Bắt đầu

Thiết lập PineBag một lần, sau đó chuẩn bị bài kiểm tra đầu tiên của bạn sau vài phút.

Báo cáo danh mục đầu tư của PineBag bên cạnh bảng điều khiển bên mở rộng
Một không gian làm việc PineBag thực sự: tiện ích mở rộng chuẩn bị chạy trong khi báo cáo đầy đủ vẫn mở bên cạnh nó.

Bạn cần ba thứ

Thời gian dùng thử 5 ngày sẽ tự động bắt đầu. Nó không yêu cầu thẻ. Tính khả dụng của hoạt động chạy bị giới hạn bởi gói TradingView của bạn.

Cài đặt và mở PineBag

  1. Cài đặt tiện ích mở rộng.
    Sử dụng nút cài đặt PineBag. Ghim tiện ích mở rộng nếu bạn muốn truy cập nhanh.
  2. Mở biểu đồ TradingView.
    Đăng nhập trước, sau đó mở bất kỳ thị trường và khung thời gian được hỗ trợ nào.
  3. Tải lại tab biểu đồ.
    Thực hiện việc này sau khi cài đặt hoặc cập nhật PineBag để biểu đồ có thể kết nối.
  4. Mở PineBag.
    Chọn biểu tượng PineBag. Chỉ báo kết nối chuyển sang màu xanh khi biểu đồ sẵn sàng.

Bảng điều khiển bên cạnh, điều khiển bằng điều khiển

Các con số trên giao diện thực khớp với phần giải thích. Không có gì trong hình ảnh này là một mô hình.

1 2 3 4 5 6 7 8 9 10 11
  1. 1
    Chiến lược

    Chiến lược đã tải. Nhấp vào thẻ để mở trong trình soạn thảo; biểu tượng thùng rác ở tiêu đề mục sẽ xóa nó.

  2. 2
    Tóm tắt cuộc chạy

    Khung thời gian, vốn, quy mô đặt hàng và hoa hồng sẽ được sử dụng.

  3. 3
    Tìm kiếm

    Mở tìm kiếm biểu tượng TradingView để bạn có thể thêm mã cổ phiếu đủ điều kiện trao đổi.

  4. 4
    Sao chép túi

    Sao chép từng mã, một EXCHANGE:SYMBOL trên mỗi dòng.

  5. 5
    Dán túi

    Chấp nhận dòng, dấu phẩy, dấu chấm phẩy hoặc dấu cách và bỏ qua các bản sao.

  6. 6
    Xóa

    Yêu cầu nhấp lần thứ hai, sao chép các mã rồi xóa danh sách; «Dán mã» sẽ khôi phục lại.

  7. 7
    Thẻ mã cổ phiếu

    Hiển thị túi hiện tại. Sử dụng × để xóa một ký hiệu; cộng lên 500.

  8. 8
    Chạy backtest

    Xác thực thiết lập và bắt đầu chạy danh mục đầu tư tuần tự.

  9. 9
    Báo cáo

    Lưu cục bộ 50 báo cáo mới nhất và xuất JSON hoặc CSV.

  10. 10
    Số ngày còn lại

    Active days: 05 — Số ngày còn lại.

  11. 11
    Hỗ trợ

    Hỗ trợ có sẵn cho các yêu cầu kỹ thuật, thanh toán, cấp phép và quyền riêng tư.

Tải chiến lược

Trình chỉnh sửa PineBag thực sự với chiến lược Pine Script
Trình chỉnh sửa tích hợp sử dụng số dòng và đánh dấu cú pháp và tự động lưu nguồn làm việc.
  1. Chọn nguồn.
    Thả một .pine vào Chiến lược hoặc mở Trình chỉnh sửa và dán mã.
  2. Sửa mọi thông báo xác thực.
    Tập lệnh phải chứa strategy(). PineBag hiển thị lỗi rõ ràng nếu không thể sử dụng được.
  3. Kiểm tra tóm tắt.
    Xác nhận tên tập lệnh, khung thời gian, vốn và kích thước lệnh hiển thị ở trên Chạy.
Không thể kiểm tra lại các tập lệnh chỉ báo. Nếu nguồn bắt đầu bằng indicator(), hãy chuyển đổi nó thành chiến lược trước khi chạy PineBag.
Sẵn sàng: kết nối có màu xanh lục, tóm tắt chiến lược hiển thị và túi mã của bạn không trống.

Mẫu chiến lược

Mỗi trường trong tab Properties của TradingView tương ứng với một đối số của strategy(). Hãy giữ các giá trị dưới dạng hằng số có tên ở đầu tập lệnh: với ưu tiên tập lệnh, mọi mã đều được kiểm thử với cùng giả định.

TIMEFRAME

Khung thời gian

INITIAL_CAPITAL · CURRENCY

Vốn ban đầu

ORDER_SIZE · ORDER_SIZE_TYPE

Kích thước lệnh mặc định

PYRAMIDING

Nhồi lệnh

BAR_MAGNIFIER

Chi tiết thanh nến

CALC_EVERY_TICK · CALC_ON_FILLS

Thực thi tập lệnh

COMMISSION · COMMISSION_TYPE

Hoa hồng

MARGIN_LONG · MARGIN_SHORT

Đòn bẩy long và short

SLIPPAGE

Trượt giá

LIMIT_FILL_TICKS

Khớp lệnh giới hạn

FILL_ON_BAR_CLOSE

Độ trễ khớp lệnh

runtime.error()

Dừng tập lệnh trên mọi khung thời gian khác.

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

Giá trị TIMEFRAME

Ghi một khoảng thời gian chuẩn của TradingView trong dấu ngoặc kép. Khoảng nào tải được tùy thuộc vào gói TradingView của bạn, như liệt kê tại tradingview.com/pricing.

Basic trở lên

Ngày, tuần và tháng.

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

Essential trở lên

Phút, giờ và thanh range. Phút không có chữ cái; một giờ là 60.

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

Premium trở lên

Khoảng thời gian theo giây.

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

Chỉ Ultimate

Khoảng thời gian theo 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
Một tuần là "1W", không phải "7D". PineBag đọc "7D" thành "1W" và từ chối các khoảng tùy chỉnh khác, chẳng hạn "2M" hoặc "2D".

Khối lượng lệnh: phần trăm, số tiền hoặc số lượng

ORDER_SIZE chứa con số, còn ORDER_SIZE_TYPE cho biết con số đó nghĩa là gì. Cả hai cùng điền vào trường Order size trong tab Properties của TradingView.

strategy.percent_of_equity

Phần trăm vốn hiện tại. 10 nghĩa là 10% vốn cho mỗi giao dịch.

strategy.cash

Số tiền theo đơn vị tiền tệ của chiến lược. 1000 nghĩa là 1.000 USD cho mỗi giao dịch.

strategy.fixed

Số lượng hợp đồng, cổ phiếu hoặc coin. 0.5 nghĩa là 0,5 BTC cho mỗi giao dịch.

qty = …

Khối lượng mặc định chỉ áp dụng cho lệnh không có qty riêng. Lệnh vào có qty = … sẽ dùng giá trị đó.

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

Biến của riêng bạn

Hãy đặt cài đặt cho logic chiến lược của riêng bạn trong một khối INPUT SETTINGS riêng. Mỗi lệnh gọi input.int(), input.float() hoặc input.bool() trở thành một trường trong tab Inputs của TradingView, nên bạn có thể chỉnh mà không cần sửa mã.

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ải xuống mẫu .pine có thể chỉnh sửa4 KB · Pine Script v6