변동성 돌파 거래 전략


생성 날짜: 2023-12-11 14:20:48 마지막으로 수정됨: 2023-12-11 14:20:48
복사: 1 클릭수: 638
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

변동성 돌파 거래 전략

개요

변동성 돌파 거래 전략은 단일 가격 행동에 기반한 전략이다. 가격과 거래량 변화를 분석하여 구매 및 판매 신호를 유발한다. 이 전략은 다른 거래소 또는 시스템에서 주문을 유발하는 경보와 함께 사용될 수도 있다.

전략 원칙

이 전략은 K 선의 종결 가격, 개시 가격, 최고 가격, 최저 가격을 분석하여 가격의 움직임과 힘을 판단한다.

구체적으로, 그것은 최근 3 K 선의 종결 가격이 연속적으로 상위 또는 상위 오픈 가격에 분석한다. 만약 그렇다면, 가격이 연속적으로 상향 또는 하향으로 돌파하여 트렌드적인 행동을 나타냅니다.

또한, 이 전략은 일정 주기 동안의 최대 거래량을 통계한다. 만약 현재 K 라인의 거래량이 최근 주기 동안의 최대 값을 초과한다면, 거래량이 확대되고, 시장에 들어가는 엄청난 거래 힘을 반영한다.

이 전략은 가격의 연속적인 3번의 K선 돌파와 거래량의 증폭을 동시에 발생시키면서 구매 또는 판매 신호를 발생시킨다.

전략적 이점

이것은 가격 동작과 거래량 신호를 이용하는 간단한 효과적인 전략이다.

  1. 원칙은 명확하고, 이해하기 쉽고, 실행이 가능합니다.
  2. 급격한 상황에 매우 민감하며 시장의 변화를 적시에 파악할 수 있다.
  3. 기본적인 K선과 거래량 데이터를 분석하는 것만으로 복잡한 알고리즘이 필요하지 않습니다.
  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)