변동성 브레이크업 거래 전략

저자:차오장, 날짜: 2023-12-11 14:20:48
태그:

img

전반적인 설명

변동성 브레이크아웃 거래 전략 (Volatility Breakout Trading Strategy) 은 단일 가격 액션 기반 전략이다. 가격 및 볼륨 변화를 분석하여 구매 및 판매 신호를 생성한다. 이 전략은 다른 거래소 또는 시스템에서 주문을 트리거하기 위해 알림과 결합될 수도 있다.

전략 논리

이 전략은 촛불의 폐쇄, 개방, 높은 가격과 낮은 가격을 분석하여 가격 추세와 동력을 결정합니다.

구체적으로, 가장 최근의 3개의 촛불의 종료 가격이 개시 가격보다 지속적으로 높거나 낮는지 확인합니다. 만약 그렇다면, 가격이 연속적으로 상승하거나 하락하는 것을 나타내고 트렌딩 시장을 생성합니다.

또한, 이 전략은 특정 기간 동안 최대 볼륨을 추적합니다. 현재 촛불의 볼륨이 최근 기간 동안 최대 값을 초과하면 거래량이 급증하고 강력한 힘이 시장에 진입한다는 것을 시사합니다.

가격이 3개의 촛불에서 연속적으로 떨어지고 거래량이 증가하면 전략은 구매 또는 판매 신호를 생성합니다.

장점

이것은 가격 행동 및 볼륨 신호를 활용하는 간단하지만 효과적인 전략입니다. 주요 장점은 다음과 같습니다.

  1. 명확한 논리, 이해하기 쉽고 실행하기 쉽다
  2. 변동성 시장 변화에 매우 민감하고, 급격한 변화를 감지합니다.
  3. 기본 촛불 및 볼륨 데이터만 필요하고 복잡한 알고리즘이 없습니다.
  4. 유연한 매개 변수
  5. 저비용, 소액 투자자용

위험 분석

또한 몇 가지 잠재적 인 위험이 있습니다.

  1. 가격 예측이 없고, 약간의 맹목성이 존재합니다.
  2. 실수로 만질 때 잘못된 신호를 받기 쉽다.
  3. 범위에 제한된 시장에서 부적절한 신호를 생성할 수 있습니다.
  4. 스톱 로스 메커니즘이 없으니 손실을 확대할 위험이 있습니다.

이러한 위험을 완화하기 위해 이동 스톱 손실을 추가하거나 매개 변수 조합을 최적화하거나 다른 지표 또는 전략과 결합하는 것을 고려할 수 있습니다.

최적화 방향

기본 전략으로서, 여전히 최적화 할 수있는 많은 공간이 있습니다.

  1. 손실을 제어하기 위해 손해 중지 메커니즘을 추가합니다.
  2. 더 많은 제품과 기간에 맞게 매개 변수를 최적화
  3. 필터 신호에 다른 표시기를 추가합니다.
  4. 트렌드 추적 전략과 결합하여 자동 트렌드 조정
  5. 동적 매개 변수 및 신호 최적화를 위한 기계 학습 알고리즘을 통합
  6. 지속적인 발전을 위해 정량적 연구 및 피드백 모듈을 구축

결론

결론적으로, 이것은 매우 실용적인 가격 액션 기반 전략이다. 직관적이고 이해하기 쉽고 저렴한 비용으로 구현할 수 있다는 장점이 있다. 한편, 그것은 또한 특정 맹목성을 가지고 있으며 향상된 성능을 위해 추가 최적화와 조합을 필요로 한다. 전반적으로 이것은 깊이 있는 연구와 응용을 받을만한 가치 있는 전략 개념이다.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SPAS", overlay=true, pyramiding=5, calc_on_order_fills=true)

int signal_hh = 0
int signal_ll = 0

if close[1] >= open[1] and close[2] >= open[2] and close[3] >= open[3]
    signal_hh := 1

if close[1] <= open[1] and close[2] <= open[2] and close[3] <= open[3]
    signal_ll := 1

plotchar(signal_hh, char='H', size=size.tiny, location=location.abovebar)
plotchar(signal_ll, char='L', size=size.tiny, location=location.abovebar)

int signal_vol = 0
float max_volume = 0.0
int vol_length = input(title="Volume length", type=input.integer, defval=3)

for i = vol_length to 1
    if volume[i] > max_volume
        max_volume := volume[i]

if volume[0] > max_volume
    signal_vol := 1

plotchar(signal_vol, char='V', size=size.tiny, location=location.bottom)

int signal_buy = 0
int signal_sell = 0

if signal_hh and signal_vol
    signal_buy := 1
    label.new(bar_index, high, "B", color=color.green)
    strategy.entry("buy", strategy.long, 5)//, when=strategy.position_size <= 0)

if signal_ll and signal_vol
    signal_sell := 1
    label.new(bar_index, low, "S", color=color.red)
    strategy.entry("sell", strategy.short, 5)//, when=strategy.position_size > 0)

//plotchar(signal_buy, char='B', color=color.green, size=size.tiny, location=location.abovebar)
plotarrow(signal_buy, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)

//plotchar(signal_sell, char='S', color=color.red, size=size.tiny, location=location.abovebar)
plotarrow(signal_sell * -1, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)



더 많은