볼링거 밴드 기반의 고주파 거래 전략

저자:차오장, 날짜: 2023-12-21 15:37:07
태그:

img

전반적인 설명

이 전략은 볼링거 밴드 지표에 기반한 고주파 거래 전략을 구현합니다. 가격의 표준 편차와 이동 평균을 계산하여 상위 및 하위 볼링거 밴드를 결정합니다. 가격이 중간 밴드에 닿을 때 긴 또는 짧은 거래가 실행됩니다. 각 거래는 0.5%의 수익 범위로 모든 자본을 투자합니다. 이 전략은 매우 변동적인 거래 쌍 및 수수료 없이 거래에 적합합니다.

전략 논리

이 전략은 가격이 과반 구매 또는 과반 판매 수준에 도달했는지 여부를 결정하기 위해 볼링거 밴드 지표를 사용합니다. 밴드는 상단, 하단, 중단으로 구성됩니다. 중간 밴드는 가격의 간단한 n 일 이동 평균입니다. 상단은 중간 밴드 더하기 k 곱하기 n 일 표준 오차입니다. 하단 밴드는 중간 밴드 마이너스 k 곱하기 표준 오차입니다. k는 일반적으로 2로 설정됩니다. 가격이 상단에 접근하면 과반 구매를 나타냅니다. 가격이 하단 밴드에 접근하면 과반 판매를 나타냅니다.

이 전략은 볼링거 기간을 20일, k를 2로 설정합니다. 가격이 중간 대역에 닿을 때, 가격이 극단적인 영역에서 회귀하는 것을 신호하여 거래 신호를 생성합니다. 가격이 중간 대역을 넘을 때 긴 신호가 유발됩니다. 가격이 중간 대역 아래에 떨어지면 짧은 신호가 유발됩니다.

포지션 입출시, 모든 자본이 투자됩니다. 0.5%의 수익 범위가 설정됩니다. 가격이 0.5%를 넘으면 포지션이 수익으로 종료됩니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 거래 신호를 식별하기 위해 볼링거 밴드를 사용하는 것은 단순한 이동 평균보다 극단적인 것을 감지하는 데 더 효과적입니다.

  2. 높은 주파수 접근 방식은 짧은 거래 주기에 빠르게 수익을 창출합니다.

  3. 모든 자본을 투자하면 수익 잠재력이 극대화됩니다.

  4. 이윤을 취하는 범위가 설정되면 위험과 수익을 효과적으로 관리할 수 있습니다.

위험 분석

또한 다음과 같은 위험 요소가 있습니다.

  1. 볼링거 밴드는 입력 매개 변수에 민감합니다. 잘못된 설정은 잘못된 신호를 생성 할 수 있습니다.

  2. 높은 주파수 거래는 제로 수수료 교환을 필요로 합니다. 그렇지 않으면 수수료는 수익을 훼손합니다.

  3. 모든 자본을 투자하는 것은 위험합니다. 블랙 스완 사건은 큰 손실을 유발할 수 있습니다.

  4. 좁은 수익 범위는 거래 빈도와 운영 복잡성을 증가시킵니다.

해결책:

  1. 이상적인 설정을 찾기 위해 볼링거 매개 변수를 최적화합니다.

  2. 바이낸스 스팟과 같은 무료 거래소를 사용하세요.

  3. 최대 손실을 제한하기 위해 스톱 손실을 설정합니다.

  4. 무역의 빈도를 줄이기 위해 수익 범위가 넓어집니다.

최적화

이 전략은 다음과 같이 개선될 수 있습니다.

  1. 가짜를 필터링하기 위해 밸런스 볼륨과 같은 볼륨 표시기를 추가합니다.

  2. 가장 좋은 조합을 찾기 위해 볼링거 매개 변수를 최적화합니다.

  3. 적응적인 스톱 로스 (Stop Loss) 를 이용하고, 수익을 취하는 범위 (Take Profit) 를 이용합니다. 예를 들어, 거래 또는 승리가 축적됨에 따라 범위가 넓어집니다.

  4. 구매/판매 신호를 예측하기 위한 기계 학습 모델을 통합합니다.

  5. 주요 사건에 대한 거래를 피하는 것, 예를 들어, 기초자료에 기반한 수익 보고서.

결론

이것은 신호 생성, 전체 포지션 사이징 및 작은 수익을 위해 볼링거 밴드를 사용하는 고 주파수 전략입니다. 이 전략은 수익성에 장점이 있지만 매개 변수 민감성 및 리스크 제어와 같은 약점도 있습니다. 더 많은 개선은 지표, 적응 스톱, 기계 학습 및 더 많은 것을 강화하여 전략을 더 견고하게 할 수 있습니다.


/*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))


더 많은