다중 시간 프레임 볼링거 밴드 암호화 전략

저자:차오장날짜: 2024-02-27 14:13:39
태그:

img

전반적인 설명

이 전략은 암호화폐의 가격 움직임을 분석하기 위해 1분, 3분, 5분 및 15분 시간 프레임에 볼링거 밴드 지표를 적용하여 구매 및 판매 기회를 식별합니다. 이 전략은 비트코인의 5분 가격을 전체 암호화폐 시장 정서에 대한 기준으로 사용합니다. 비트코인 가격이 상위 밴드를 넘으면 시장이 상승세를 보이는 것으로 간주됩니다. 가격이 하위 밴드를 넘으면 시장이 하락세를 보이는 것으로 간주됩니다. 이 전략은 다른 암호화폐와 시간 프레임에 걸쳐 상위 또는 하위 밴드 브레이크를 찾습니다. 이러한 브레이크 패턴은 일반적으로 시장 정서와 트렌드의 변화를 의미하며, 따라서 진입 및 출구 신호를 제공합니다.

전략 논리

이 전략은 1분, 3분, 5분 및 15분 시간 프레임에서 볼링거 밴드를 동시에 계산한다. 볼링거 밴드는 n일 (디폴트 20일) 이동 평균과 그 위와 아래의 여러 표준 편차 (디폴트 1.5x) 로 구성된다. 이동 평균은 일정 기간 동안 암호화폐의 평균 가격을 나타내고 표준 편차는 변동성을 측정한다. 가격이 상위 대역을 넘어서거나 넘어서면 시장이 과도하게 확장되고 변동성이 확대되고 있음을 나타냅니다. 가격이 하위 대역을 넘어서거나 넘어서면 시장이 변동성과 잠재적인 상향 환율과 함께 확장되고 있음을 나타냅니다.

볼링거 밴드의 이 특징을 활용하여 전략은 1분, 3분, 5분 및 15분 등 다양한 시간 지평에 걸쳐 최신 시장 발전을 판단합니다. 3분 또는 5분 시간 프레임에 상부 또는 하부 밴드 브레이크오프가 발생하면, 1분 및 15분 시간 프레임에서 시그널을 확인하면 최신 구매 또는 판매 신호가 유발되는 것을 결정합니다. 또한, 전략은 전체 암호화 시장의 전체 시장 추세와 정서 (승향/하향 편향) 를 측정하기 위해 비트코인의 5분 가격도 참조합니다. 이러한 요소를 기반으로 전략은 장기 또는 단행 여부를 결정합니다.

트레이드에 진입한 후, 전략은 또한 수익을 취하고 손실을 멈추는 조건을 설정합니다. 진입 가격이 25% 상승하거나 감소하면 수익을 취합니다. 가격이 진입 방향에 반대하여 25% 이상 이동하면 손실을 멈추게됩니다.

장점

  1. 전략은 단기 및 중장기 시장 전망을 모두 포함합니다. 최신 업데이트를 위해 1 분과 5 분, 중장기 트렌드를 위해 15 분, 일시적인 시장 변동에 의해 오해되는 것을 피합니다.

  2. 이 전략은 중단계, 상단계, 하단계의 돌출을 감시하고 놓친 기회를 최소화합니다.

  3. 비트코인은 전반적인 시장 상황과 감정에 대한 기준과 바로미터로서 의사 결정의 정확성을 향상시킵니다.

  4. 이윤 취득 및 손해 중지 메커니즘은 위험을 효과적으로 제어합니다.

위험성

  1. 볼링거 밴드 브레이크는 몇 가지 지연 속성을 가지고 있으며 가장 좋은 입시 시기를 놓칠 수 있습니다.

  2. 이 전략은 비밀번호 블랙 스완 사건과 같은 시장 전체 시스템 위험에 취약합니다.

  3. 이윤 취득과 스톱 러스에도 불구하고 손실은 극단적인 상황에서는 여전히 스톱 러스 마진을 초과할 수 있습니다.

  4. 시간, 표준편차 곱하기 등 부적절한 매개 변수 설정은 신호 품질이 떨어질 수 있습니다.

대응 솔루션:

  1. 최적의 입시 시기를 결정하기 위해 더 많은 지표를 포함합니다.

  2. 시장 수준의 시스템 위험 평가 개선

  3. 포지션 사이즈와 스톱 로스 마진을 줄이세요.

  4. 역 테스트를 통해 매개 변수 설정을 최적화합니다.

더 나은 기회

  1. 30분 또는 60분 볼링거 밴드 같은 시간 프레임을 더합니다.

  2. 각 암호화폐의 특성에 더 적합한 볼링거 밴드 매개 변수를 선택합니다.

  3. 결과 검증을 위해 거래량을 포함합니다. 거래량은 가격 움직임의 신뢰성을 검증합니다.

  4. 결정 정확성을 향상시키기 위해 스톡 RSI, MACD와 같은 다른 지표를 결합하십시오. 이러한 지표는 실제 시장 움직임을 판단하는 것을 크게 향상시킬 수 있습니다.

  5. 암호화폐의 가격 변화와 상관관계를 비교하고 가장 많은 움직임을 보이는 것을 선택하세요.

  6. 최적의 설정을 결정하기 위해 역사 성과에 대한 통계 분석을 통해 이익 취득 및 손실 중지 메커니즘을 최적화하십시오.

결론

이것은 다중 타임프레임 볼링거 밴드 암호화폐 거래 전략이다. 단기 및 중기 시간 지평에 걸쳐 가격 발전에 초점을 맞추고, 볼링거 밴드를 활용하여 시장의 MULTI 상승/하락 상태를 측정합니다. 한편, 그것은 더 넓은 암호화폐 시장의 전반적인 추세를 결정하는 데 도움이되는 벤치마크 및 참조로 비트코인 가격 수준을 사용합니다. 여러 시간 프레임, 그리고 강력한 수익 취득 및 손해를 막는 메커니즘을 통합하는 다재다능성으로,이 전략은 기회를 효과적으로 활용하고 위험을 제어 할 수 있습니다. 앞으로 나아가면 더 많은 지표와 벡스트팅을 통해 미세하게 조정하는 매개 변수를 통합하는 것과 같은 최적화로 성능을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="Crypto BB", title="Multi-Interval Bollinger Band Crypto Strategy", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.5, minval=0.001, maxval=50, title="StdDev")

interval1m = request.security(syminfo.tickerid, '1', src)
interval3m = request.security(syminfo.tickerid, '3', src)
interval5m = request.security(syminfo.tickerid, '5', src)
interval15m = request.security(syminfo.tickerid, '5', src)
btcinterval5m = request.security("BTC_USDT:swap", "5", src)
bitcoinSignal = 'flat'

var entryPrice = 0.000

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

bitcoinBasis = ma(btcinterval5m, length, maType)
bitcoinDev = ta.stdev(btcinterval5m, length)
bitcoinUpper = bitcoinBasis + bitcoinDev
bitcoinLower = bitcoinBasis - bitcoinDev

basis1m = ma(interval1m, length, maType)
basis3m = ma(interval3m, length, maType)
basis5m = ma(interval5m, length, maType)
basis15m = ma(interval5m, length, maType)
dev1m = mult * ta.stdev(interval1m, length)
dev3m = mult * ta.stdev(interval3m, length)
dev5m = mult * ta.stdev(interval5m, length)
upper1m = basis1m + dev1m
lower1m = basis1m - dev1m
upper3m = basis3m + dev3m
lower3m = basis3m - dev3m
upper5m = basis5m + dev5m
lower5m = basis5m - dev5m
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis3m, "Basis 3 minute", color=#2962FF, offset = offset)
p3upper = plot(upper3m, "Upper", color=#2962FF, offset = offset)
p3lower = plot(lower3m, "Lower", color=#2962FF, offset = offset)

//Exit protocols
if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Buy'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((interval1m - entryPrice)/entryPrice) * 30 > .25
        strategy.close('Buy', comment='Take Profit on Buy')
    if ((interval1m - entryPrice)/entryPrice) * 30 < -.25
        strategy.close('Buy', comment='Stop Loss on Buy')

if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Sell'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((entryPrice - interval1m)/entryPrice) * 30 > .25
        strategy.close('Sell', comment='Take Profit on Sell')
    if ((entryPrice - interval1m)/entryPrice) * 30 < -.25
        strategy.close('Sell', comment='Stop Loss on Sell')

//Bitcoin Analysis
if (btcinterval5m < bitcoinUpper and btcinterval5m[1] > bitcoinUpper[1] and btcinterval5m[2] < bitcoinUpper[2] and btcinterval5m[3] < bitcoinUpper[3])
    bitcoinSignal := 'Bear'
if (btcinterval5m > bitcoinUpper and btcinterval5m[1] < bitcoinUpper[1] and btcinterval5m[2] > bitcoinUpper[2] and btcinterval5m[3] > bitcoinUpper[3])
    bitcoinSignal := 'Bull'

//Short protocols
if (interval3m < basis3m and interval3m[1] > basis3m[1] and interval3m[2] < basis3m[2] and interval3m[3] < basis3m[3]) or 
 (interval5m < basis5m and interval5m[1] > basis5m[1] and interval5m[2] < basis5m[2] and interval5m[3] < basis5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell'
   and src < basis1m and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Basis Band Bearish Reversal')
    //strategy.order('Sell', strategy.short, comment = 'Basis band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m < upper3m and interval3m[1] > upper3m[1] and interval3m[2] < upper3m[2] and interval3m[3] < upper3m[3]) or 
 (interval5m < upper5m and interval5m[1] > upper5m[1] and interval5m[2] < upper5m[2] and interval5m[3] < upper5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell' and bitcoinSignal == 'Bear' and src < upper1m  and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Bearish Trend Reversal')
    strategy.order('Sell', strategy.short, comment = 'Upper band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m > basis3m and interval3m[1] < basis3m[1] and interval3m[2] > basis3m[2] and interval3m[3] > basis3m[3]) or 
 (interval5m > basis5m and interval5m[1] < basis5m[1] and interval5m[2] > basis5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > basis1m  and src > basis15m
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Basis Band Bullish Reversal')
    //strategy.order('Buy', strategy.long, comment = 'Basis band fractal rejection', stop = (lower1m + basis1m)/2)

if (interval3m > lower3m and interval3m[1] < lower3m[1] and interval3m[2] > lower3m[2] and interval3m[3] > lower3m[3]) or 
 (interval5m > lower5m and interval5m[1] < lower5m[1] and interval5m[2] > lower5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > lower1m  and src > basis15m and bitcoinSignal == 'Bull' 
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Bullish Trend Reversal')
    strategy.order('Buy', strategy.long, comment = 'Lower band fractal rejection', stop = (lower1m + basis1m)/2)

더 많은