BB 듀얼 롱 및 쇼트 거래 전략

저자:차오장, 날짜: 2023-11-02 15:40:00
태그:

img

전반적인 설명

이중 장기 및 단위 거래 전략은 양방향 거래를 위해 볼링거 밴드를 활용하는 전략이다. 이 전략은 볼링거 밴드의 중간 밴드, 상위 밴드 및 하위 밴드를 결합하여 긴 및 짧은 포지션을 열고 닫습니다. 가격이 상위 밴드에 닿을 때 짧은 포지션을 열고, 상위 밴드에 닿을 때 긴 포지션을 열고, 스톱 손실 및 이익 취득 가격을 설정합니다. 전략은 작동이 간단하며 시장의 주요 트렌드를 포착합니다.

원칙 분석

이 전략은 주로 볼링거 밴드의 원리에 기초한다. 볼링거 밴드는 중간 밴드, 상위 밴드 및 하위 밴드로 구성되어 있으며, 가격의 이동 트렌드를 나타낸다. 중간 밴드는 n 일 이동 평균, 상위 밴드는 중간 밴드 + k 표준 편차, 그리고 하위 밴드는 중간 밴드 - k 표준 편차이다. 가격이 상위 밴드를 넘어서면 시장이 과소매 상태에 있으며, 짧은 포지션을 개설하는 것을 고려해야 한다. 가격이 하위 밴드를 넘어서면 시장이 과소매 상태에 있으며, 긴 포지션을 개설하는 것을 고려해야 한다.

특히, 전략은 먼저 볼링거 중부, 상부 및 하부 대역을 계산합니다. 그 다음 가격이 상부 대역에 닿을지 판단합니다. 만약 네라면, 짧은 포지션을 개척합니다. 또한 가격이 하부 대역에 닿을지 판단합니다. 만약 네라면, 긴 포지션을 개척합니다. 포지션을 개척한 후, 스톱 로스 및 토익 가격을 설정합니다. 예를 들어, 긴 포지션을 개척한 후, 스톱 로스 가격은 개척 가격 마이너스 특정 비율, 그리고 토익 가격은 개척 가격 더하여 특정 비율이 될 것입니다. 마지막으로, 전략은 또한 스톱 로스, 토익이 타격되는 것과 볼링거 대역에 다시 들어가는 가격 등 폐쇄 조건을 정의합니다.

이 전략은 볼링거 밴드 (Bollinger Bands) 가 과잉 구매 및 과잉 판매 시장 조건을 반영하는 능력을 완전히 활용하고 상대적으로 정확한 장기 및 단기 거래를 구현합니다. 시장이 다른 단계에있을 때, 현재 시장 조건의 추세는 볼링거 밴드 (Bollinger Bands) 지표를 통해 판단 될 수 있으며, 그에 따른 거래 전략도 채택 할 수 있습니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 트렌드를 포착합니다. 볼링거 밴드는 주요 트렌드 방향을 식별하고 트렌드를 포착하기 위해 적시에 포지션을 열 수 있습니다.

  2. 쌍방향 거래. 한 방향으로 제한되지 않고 동시에 길고 짧은 거래를 허용합니다.

  3. 리스크 제어. 스톱 로스 및 수익 취득 설정은 각 거래가 손실 감축 조치를 보장합니다.

  4. 간단하고 명확합니다. 볼링거 밴드 지표에 기초하여 전략 규칙은 직설적이고 이해하기 쉽습니다.

  5. 최적화하기 쉽다. 사이클 길이와 표준편차 곱하기와 같은 매개 변수는 전략을 최적화하기 위해 조정할 수 있습니다.

  6. 다른 시장에 적용됩니다. 주식, 외환, 암호화폐 등에 적용 할 수 있습니다.

위험 분석

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 볼링거 밴드 실패 위험 시장의 격렬한 변동 중에 볼링거 밴드가 실패 할 수 있습니다.

  2. 스톱 로스는 트렌드 변화가 급격할 때 발생할 수 있습니다.

  3. 과도한 최적화 위험. 과도한 최적화는 과도한 적합으로 이어질 수 있습니다.

  4. 높은 거래 빈도 위험. 빈번한 볼링거 밴드 변동은 과도한 거래로 이어질 수 있습니다.

  5. 밴드 터치 출입 위험. 밴드 터치에만 기반한 출입은 조기에 될 수 있습니다.

해결책은 다음과 같습니다.

  1. 트렌드 지표와 결합해서, 밴드가 고장날 때 전략을 세울 수 있습니다.

  2. 후속 스톱 손실을 채택합니다.

  3. 시장과 기간에 걸쳐 백테스트를 통해 과잉 적합성을 방지합니다.

  4. 트레이드 빈도를 줄이기 위해 변동 범위를 완화시켜

  5. 방역 신호를 확인하기 위해 MACD 분차와 같은 출구 지표를 추가합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 다양한 사이클 트렌드에 맞게 사이클 길이와 같은 볼링거 매개 변수를 조정하고 시장 변동성에 맞게 표준 편차 곱셈을 조정합니다.

  2. 트렌드 필터를 추가하고, 이동 평균과 같은 지표를 조합하여 트렌드를 결정하고, 명확한 트렌드가 없는 경우 잘못된 신호를 피합니다.

  3. 스톱 손실 전략을 최적화하십시오. 예를 들어, 가격을 더 가까이 추적하기 위해 스톱 손실을 추적하거나 ATR에 기반한 스톱 손실을 설정하십시오.

  4. 중부 대역의 가짜 브레이크를 피하기 위해 폐쇄 가격 브레이크 밴드와 같은 입력 필터를 추가합니다.

  5. 기계 학습을 사용하여 자동으로 매개 변수를 최적화합니다.

  6. 대역 신호를 보완하기 위해 MACD 디버전스와 같은 출구 지표를 추가합니다.

요약

전체적으로, BB 이중 장기 및 단위 거래 전략은 매우 전형적이고 실용적인 볼링거 밴드 전략입니다. 그것은 볼링거 밴드를 사용하여 트렌드를 포착하기 위해 과소 구매 및 과소 판매 조건을 판단하고 양방향 거래를 구현하며 위험 통제를 위해 손해를 멈추고 이익을 취합니다. 전략은 트렌드를 포착하고 양방향 거래 및 위험 통제의 장점을 가지고 있으며 볼링거 밴드 실패와 같은 문제도 있습니다. 우리는 볼링거 매개 변수를 조정하고 트렌드 필터를 추가하고 스톱 손실을 최적화하여 전략을 향상시킬 수 있습니다. 전략은 큰 실용성과 잠재력을 가지고 있으며 권장 할만한 간단한 유용한 거래 전략입니다.


/*backtest
start: 2023-10-25 00:00:00
end: 2023-11-01 00:00:00
period: 2m
basePeriod: 1m
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/
// © samuelkanneman

//@version=5
strategy('MI_BB ', overlay=true)
// i_startTime = input.time(title='Start Date Filter', defval=timestamp('01 Nov 2020 13:30 +0000'), tooltip='Date & time to begin trading from')
// i_endTime = input.time(title='End Date Filter', defval=timestamp('1 Nov 2022 19:30 +0000'), tooltip='Date & time to stop trading')

dateFilter = true

longitud = input(20, title='Longitud')
Desv = input.float(2.0, title='Desvio estandar', step=0.1)
fuente = input(close, title='Fuente')

TakeP = input.float(5.0, title='Take Profit', step=0.1)
StopL = input.float(1.0, title='Stop Loss', step=0.1)
var SL = 0.0
var TP = 0.0

[banda_central, banda_sup, banda_inf] = ta.bb(fuente, longitud, Desv)

comprado = strategy.position_size > 0
vendido = strategy.position_size < 0



if not vendido and not comprado and dateFilter
// Short
    if close >= banda_sup
    //cantidad= (strategy.equity/close)
        strategy.entry('venta', strategy.short)
        SL := close * (1 + StopL / 100)
        TP := close*(1-TakeP/100)
        
//Long
    else if close <= banda_inf
    //cantidad= (strategy.equity/close)
        strategy.entry('compra', strategy.long)
        SL := close * (1 - StopL / 100)
        TP := close*(1+TakeP/100)
    
//cierrres short
if close <= TP and vendido
    strategy.close ("venta" , comment="Salto TP")
if close <= banda_inf and vendido
    strategy.close ("venta" , comment="Banda Inferior")
if close >= SL and vendido
    strategy.close ("venta" , comment="Salto SL")
    
   
//cierre long
if close >= TP and comprado
    strategy.close ("compra" , comment="Salto TP")  
if close >= banda_sup and comprado
    strategy.close ("compra" , comment="Banda Superior")
    
if close <= SL and comprado
    strategy.close ("compra" , comment="Salto SL")
    


p1 = plot(banda_central)
p2 = plot(banda_sup)
p3 = plot(banda_inf)
fill(p2, p3, transp=90)




더 많은