MCL-YG 볼링거 밴드 브레이크업 쌍 거래 전략

저자:차오장, 날짜: 2023-11-14 13:49:12
태그:

img

전반적인 설명

이 전략은 거래 신호를 생성하고 양성 상관관계 자산 MCL와 YG 사이의 쌍 거래를 구현하기 위해 볼링거 밴드 브레이크오웃을 사용합니다. MCL 가격이 상위 밴드에 닿을 때 MCL과 YG가 길어지고 MCL 가격이 하위 밴드에 닿을 때 MCL과 YG가 길어지고 가격 추세를 따라 거래합니다.

전략 논리

우선, 전략은 SMA 라인과 StdDev를 특정 기간 동안의 폐쇄 가격에 기초하여 계산합니다. 다음에는 SMA 위와 아래의 오프셋을 추가하여 볼링거 밴드의 상부 및 하부 밴드를 형성합니다. 가격이 상부 밴드에 닿을 때 구매 신호가 생성되며 가격이 하부 밴드에 닿을 때 판매 신호가 생성됩니다.

이 전략은 볼링거 밴드 (Bollinger Bands) 의 브레이크아웃 거래 논리를 활용합니다. 가격이 상위 밴드 이상으로 넘어갈 때 길고 가격이 하위 밴드 아래로 넘어갈 때 짧습니다. 볼링거 밴드는 시장 변동성에 따라 밴드의 폭을 동적으로 조정하여 범위 기간 동안 시장 소음을 필터링하는 데 도움이됩니다. 고정 채널 밴드와 달리 볼링거 밴드는 높은 변동성 중에 넓어지고 낮은 변동성 중에 좁아집니다. 이것은 변동성이 높을 때 약간의 소음을 필터링하고 변동성이 낮을 때 더 작은 브레이크아웃을 캡처 할 수 있습니다.

이 전략은 양성 상관관계 자산 MCL와 YG 사이의 쌍 거래를 구현합니다. MCL가 상단 범위를 넘을 때 MCL가 상승 추세에 있음을 보여줍니다. 전략은 MCL와 YG를 길게 길게 - 더 강한 자산을 구입하고 더 약한 자산을 판매하여 가격의 차이에서 이익을 얻습니다.

장점

  1. 볼링거 밴드 (Bollinger Bands) 를 기반으로 하는 브레이크아웃 거래는 시장 소음을 효과적으로 필터링하고 트렌드를 식별할 수 있습니다.
  2. 상관 자산에 대한 쌍 거래는 가격 차원에서 알파 수익을 얻을 수 있습니다.
  3. 동적 위치 크기는 개별 거래의 위험을 제어하는 데 도움이됩니다.
  4. 표준 브레이크아웃 입점 및 리버션 출구 논리는 전략 논리를 간단하고 명확하게 만듭니다.

위험성

  1. 부적절한 볼링거 밴드 매개 변수 조정으로 인해 신호가 너무 많거나 신호가 명확하지 않을 수 있습니다.
  2. 자산 사이의 상관관계가 감소하면 쌍 거래에서 수익이 감소 할 수 있습니다.
  3. 부진적 인 시장 에서 거짓 신호 로 인해 부진 이 속아지고 손실 을 초래 할 수 있다
  4. 스톱 로드가 없는 경우 단일 거래에서 손실이 커질 수 있습니다.

위험은 매개 변수를 최적화하고, 더 강한 상관관계와 유동성을 가진 자산을 선택하고, 적절한 스톱 로스를 설정함으로써 감소 할 수 있습니다.

최적화 기회

  1. 가장 좋은 조합을 찾기 위해 볼링거 밴드 매개 변수를 최적화
  2. 더 많은 연관된 자산 쌍을 테스트하고 가장 좋은 조합을 선택
  3. 단일 트레이드에서 손실을 제한하기 위해 스톱 로스 로직을 추가합니다.
  4. 가짜 브레이크오웃 신호를 피하기 위해 더 많은 필터를 추가합니다.
  5. 입력 시기를 개선하기 위해 볼륨 확인과 같은 다른 요소를 포함

요약

전체적으로 전략은 간단하고 직설적이며 볼링거 밴드를 사용하여 트렌드를 포착하고 쌍 거래에서 알파를 얻습니다. 그러나 매개 변수 조정, 스톱 로스 및 쌍 선택에서 개선할 여지가 있습니다. 매개 변수, 거래 차량, 트렌드 필터 등을 추가 테스트하면 전략 성능을 향상시킬 수 있습니다.


/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shark792

//@version=5

// 1. Define strategy settings
strategy(title="MCL-YG Pair Trading Strategy", overlay=true,
     pyramiding=0, initial_capital=10000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=4, slippage=2)

smaLength = input.int(title="SMA Length", defval=20)
stdLength = input.int(title="StdDev Length", defval=20)

ubOffset = input.float(title="Upper Band Offset", defval=1, step=0.5)
lbOffset = input.float(title="Lower Band Offset", defval=1, step=0.5)

usePosSize = input.bool(title="Use Position Sizing?", defval=true)
riskPerc   = input.float(title="Risk %", defval=0.5, step=0.25)


// 2. Calculate strategy values
smaValue = ta.sma(close, smaLength)
stdDev   = ta.stdev(close, stdLength)

upperBand = smaValue + (stdDev * ubOffset)
lowerBand = smaValue - (stdDev * lbOffset)

riskEquity  = (riskPerc / 100) * strategy.equity
atrCurrency = (ta.atr(20) * syminfo.pointvalue)
posSize     = usePosSize ? math.floor(riskEquity / atrCurrency) : 1


// 3. Output strategy data
plot(series=smaValue, title="SMA", color=color.teal)

plot(series=upperBand, title="UB", color=color.green,
     linewidth=2)
plot(series=lowerBand, title="LB", color=color.red,
     linewidth=2)


// 4. Determine long trading conditions
enterLong = ta.crossover(close, upperBand)
exitLong  = ta.crossunder(close, smaValue)


// 5. Code short trading conditions
enterShort = ta.crossunder(close, lowerBand)
exitShort  = ta.crossover(close, smaValue)


// 6. Submit entry orders
if enterLong
    strategy.entry(id="EL", direction=strategy.long, qty=posSize)

if enterShort
    strategy.entry(id="ES", direction=strategy.short, qty=posSize)


// 7. Submit exit orders
strategy.close(id="EL", when=exitLong)
strategy.close(id="ES", when=exitShort)



더 많은