이 전략은 볼링거 밴드 지표에 기반한 고주파 거래 전략을 구현합니다. 가격의 표준 편차와 이동 평균을 계산하여 상위 및 하위 볼링거 밴드를 결정합니다. 가격이 중간 밴드에 닿을 때 긴 또는 짧은 거래가 실행됩니다. 각 거래는 0.5%의 수익 범위로 모든 자본을 투자합니다. 이 전략은 매우 변동적인 거래 쌍 및 수수료 없이 거래에 적합합니다.
이 전략은 가격이 과반 구매 또는 과반 판매 수준에 도달했는지 여부를 결정하기 위해 볼링거 밴드 지표를 사용합니다. 밴드는 상단, 하단, 중단으로 구성됩니다. 중간 밴드는 가격의 간단한 n 일 이동 평균입니다. 상단은 중간 밴드 더하기 k 곱하기 n 일 표준 오차입니다. 하단 밴드는 중간 밴드 마이너스 k 곱하기 표준 오차입니다. k는 일반적으로 2로 설정됩니다. 가격이 상단에 접근하면 과반 구매를 나타냅니다. 가격이 하단 밴드에 접근하면 과반 판매를 나타냅니다.
이 전략은 볼링거 기간을 20일, k를 2로 설정합니다. 가격이 중간 대역에 닿을 때, 가격이 극단적인 영역에서 회귀하는 것을 신호하여 거래 신호를 생성합니다. 가격이 중간 대역을 넘을 때 긴 신호가 유발됩니다. 가격이 중간 대역 아래에 떨어지면 짧은 신호가 유발됩니다.
포지션 입출시, 모든 자본이 투자됩니다. 0.5%의 수익 범위가 설정됩니다. 가격이 0.5%를 넘으면 포지션이 수익으로 종료됩니다.
이 전략의 장점은 다음과 같습니다.
거래 신호를 식별하기 위해 볼링거 밴드를 사용하는 것은 단순한 이동 평균보다 극단적인 것을 감지하는 데 더 효과적입니다.
높은 주파수 접근 방식은 짧은 거래 주기에 빠르게 수익을 창출합니다.
모든 자본을 투자하면 수익 잠재력이 극대화됩니다.
이윤을 취하는 범위가 설정되면 위험과 수익을 효과적으로 관리할 수 있습니다.
또한 다음과 같은 위험 요소가 있습니다.
볼링거 밴드는 입력 매개 변수에 민감합니다. 잘못된 설정은 잘못된 신호를 생성 할 수 있습니다.
높은 주파수 거래는 제로 수수료 교환을 필요로 합니다. 그렇지 않으면 수수료는 수익을 훼손합니다.
모든 자본을 투자하는 것은 위험합니다. 블랙 스완 사건은 큰 손실을 유발할 수 있습니다.
좁은 수익 범위는 거래 빈도와 운영 복잡성을 증가시킵니다.
해결책:
이상적인 설정을 찾기 위해 볼링거 매개 변수를 최적화합니다.
바이낸스 스팟과 같은 무료 거래소를 사용하세요.
최대 손실을 제한하기 위해 스톱 손실을 설정합니다.
무역의 빈도를 줄이기 위해 수익 범위가 넓어집니다.
이 전략은 다음과 같이 개선될 수 있습니다.
가짜를 필터링하기 위해 밸런스 볼륨과 같은 볼륨 표시기를 추가합니다.
가장 좋은 조합을 찾기 위해 볼링거 매개 변수를 최적화합니다.
적응적인 스톱 로스 (Stop Loss) 를 이용하고, 수익을 취하는 범위 (Take Profit) 를 이용합니다. 예를 들어, 거래 또는 승리가 축적됨에 따라 범위가 넓어집니다.
구매/판매 신호를 예측하기 위한 기계 학습 모델을 통합합니다.
주요 사건에 대한 거래를 피하는 것, 예를 들어, 기초자료에 기반한 수익 보고서.
이것은 신호 생성, 전체 포지션 사이징 및 작은 수익을 위해 볼링거 밴드를 사용하는 고 주파수 전략입니다. 이 전략은 수익성에 장점이 있지만 매개 변수 민감성 및 리스크 제어와 같은 약점도 있습니다. 더 많은 개선은 지표, 적응 스톱, 기계 학습 및 더 많은 것을 강화하여 전략을 더 견고하게 할 수 있습니다.
/*backtest start: 2022-12-14 00:00:00 end: 2023-12-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estrategia Bollinger Bands", shorttitle="BB Strategy", overlay=true) // Parámetros de las Bandas de Bollinger length = input(20, title="Longitud") mult = input(2.0, title="Multiplicador") // Calcula las Bandas de Bollinger basis = ta.sma(close, length) upper_band = basis + mult * ta.stdev(close, length) lower_band = basis - mult * ta.stdev(close, length) // Condiciones para realizar operaciones price_touches_basis_up = ta.crossover(close, basis) price_touches_basis_down = ta.crossunder(close, basis) // Monto inicial de inversión monto_inicial = 10 // Lógica de la estrategia if (price_touches_basis_up) qty = strategy.equity + strategy.netprofit // Invertir el total del capital más las ganancias en cada operación direction = close > basis ? strategy.long : strategy.short strategy.entry("Operacion", direction, qty = 1) // Lógica para cerrar la operación con un movimiento del 0.5% (take profit) target_profit = 0.005 // Actualizado a 0.5% if (strategy.position_size != 0) direction = strategy.position_size > 0 ? strategy.long : strategy.short strategy.exit("Take Profit/Close", from_entry = "Operacion", profit = close * (1 + target_profit)) // Dibuja las Bandas de Bollinger en el gráfico plot(upper_band, color=color.blue, title="Upper Band") plot(lower_band, color=color.red, title="Lower Band") plot(basis, color=color.green, title="Basis") // Muestra el monto inicial de inversión en la barra del título var label lbl = label.new(na, na, "") label.set_text(lbl, "Monto Inicial: $" + str.tostring(monto_inicial, "#.########")) label.set_xy(lbl, bar_index, low) label.set_color(lbl, color.new(color.blue, 0))