볼린저 밴드를 기반으로 한 고빈도 거래 전략


생성 날짜: 2023-12-21 15:37:07 마지막으로 수정됨: 2023-12-21 15:37:07
복사: 0 클릭수: 905
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

볼린저 밴드를 기반으로 한 고빈도 거래 전략

개요

이 전략은 부린 띠 지표에 기반한 고주파 거래 전략을 구현한다. 이 전략은 가격의 표준 격차와 이동 평균을 계산하여 상하 부린 띠를 결정한다. 가격이 중간선을 만질 때 구매 또는 판매 작업을 수행한다. 매 거래마다 모든 자금을 고정하여 0.5%의 중지 범위를 설정한다. 이 전략은 높은 변동성 거래 쌍과 수수료없는 거래소에 적용된다.

전략 원칙

이 전략은 브린띠 지표를 사용하여 가격이 과도하게 매입되거나 매매되는 상태를 판단한다. 브린띠는 상부 브린띠, 하부 브린띠 및 중간에 있다. 중계는 가격의 n일 간단한 이동 평균이다. 상부 브린띠는 중간에 있는 k배의 n일 가격 표준 차이를 더한다. 하부 브린띠는 중간에 있는 k배의 n일 가격 표준 차이를 빼고 있다. k값은 일반적으로 2로 설정된다. 가격이 상부 브린띠에 가까워지면 과매를 나타내고, 가격이 하부 브린띠에 가까워지면 과매를 나타낸다.

이 전략은 브린 대역의 길이가 20일이고, k값은 2이다. 가격이 중선을 만지면, 가격이 과도한 영역에서 돌아온 것으로 판단되어 거래 신호를 생성한다. 다중 신호는 가격 상위 중선을 통과하고, 공백 신호는 가격 아래 중선을 통과한다.

매번 포지션을 개시할 때, 모든 자금을 투입한다 (본금과 부동 손실을 포함하여). 그리고 0.5%의 중지 범위를 설정한다. 가격이 0.5% 이상 움직일 때, 포지션을 평형한다.

우위 분석

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

  1. 브린 띠 지표는 단순한 이동 평균과 같은 지표에 비해 가격의 상대적인 높은 낮은 지점을 더 잘 판단한다.

  2. 높은 주파수 거래 전략으로, 각 거래의 주기는 짧고, 빠른 수익을 얻을 수 있다.

  3. 매 거래마다 전체 자금을 투입하여 수익을 극대화 할 수 있습니다.

  4. 수익을 고정하기 위해 제약 범위를 설정하여 위험을 효과적으로 제어할 수 있습니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 브린 벨트 지표는 매개 변수에 민감하며, 매개 변수가 잘못 설정되면 많은 오류 신호를 생성한다.

  2. 높은 주파수 거래는 수수료가 없는 거래소가 필요합니다. 그렇지 않으면 수수료가 수익을 빠르게 어 버릴 것입니다.

  3. 모든 자금 거래는 위험합니다. 만약 갑작스러운 일이 발생하면 큰 손실이 발생할 수 있습니다.

  4. 하지만, 이 경우, 거래의 범위가 너무 작고, 거래의 횟수가 너무 많고, 거래의 빈도가 너무 높습니다.

대응방법:

  1. 브린 대역 변수를 최적화하여 최적의 변수를 찾습니다.

  2. 수수료가 없는 거래소를 선택하세요.

  3. 최대 손실을 제어하기 위해 스톱 손실을 설정하십시오.

  4. 거래의 수를 줄이기 위해 제약을 적절하게 확장하십시오.

최적화 방향

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

  1. 거래량 지표와 결합하여, 예를 들어, 에너지 유조 지표, 필터 가짜 돌파.

  2. 브린 벨트 변수를 최적화하여 최적의 변수 조합을 찾습니다.

  3. 동적 스톱 스톱 손실 범위를 설정하십시오. 예를 들어, 거래 횟수 또는 수익 횟수가 증가함에 따라 스톱 스톱 범위를 점차 확장하십시오.

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