문서/시작하기

시작하기

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
    지원

    기술, 청구, 라이센스 및 개인 정보 보호 요청에 대한 지원이 제공됩니다.

전략 불러오기

Pine Script 전략을 갖춘 실제 PineBag 편집기
내장 편집기는 줄 번호와 구문 강조를 사용하고 작업 소스를 자동으로 저장합니다.
  1. 소스를 선택하세요.
    드롭 .pine 파일을 Strategy에 추가하거나 Editor를 열고 코드를 붙여넣으세요.
  2. 확인 메시지를 수정하세요.
    스크립트에는 다음이 포함되어야 합니다. strategy(). PineBag를 사용할 수 없으면 명확한 오류를 표시합니다.
  3. 요약을 확인하세요.
    Run 위에 표시된 스크립트명, 기간, 자본금, 주문규모를 확인하세요.
표시기 스크립트는 백테스트할 수 없습니다. 소스가 다음으로 시작하는 경우 indicator(), PineBag를 실행하기 전에 전략으로 변환하세요.
준비: 연결이 녹색이고 전략 요약이 표시되며 티커백이 비어 있지 않습니다.

전략 템플릿

TradingView Properties 탭의 모든 항목은 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.com/pricing에 나온 대로 TradingView 요금제에 따라 다릅니다.

Basic 이상

일, 주, 월.

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

Essential 이상

분, 시간, 레인지 바. 분에는 문자가 붙지 않으며 1시간은 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
1주는 "7D"가 아니라 "1W"입니다. PineBag은 "7D"를 "1W"로 읽고 "2M"이나 "2D" 같은 다른 사용자 지정 인터벌은 거부합니다.

주문 크기: 비율, 금액 또는 수량

ORDER_SIZE는 숫자를, ORDER_SIZE_TYPE은 그 숫자의 의미를 정합니다. 둘이 함께 TradingView Properties 탭의 Order size 필드를 채웁니다.

strategy.percent_of_equity

현재 자본 대비 비율. 10은 거래당 자본의 10%를 뜻합니다.

strategy.cash

전략 통화 기준 금액. 1000은 거래당 1,000 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() 호출은 각각 TradingView Inputs 탭의 항목이 되므로 코드를 수정하지 않고 조정할 수 있습니다.

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)
↓편집 가능한 .pine 템플릿 다운로드4KB · Pine Script v6