양적 거래 전략의 양방향 반전

저자:차오장, 날짜: 2024-02-22 13:46:51
태그:

img

이 전략은 자동화 된 양적 거래를 실현하기 위해 가격 반전 신호 및 볼륨 지표와 결합한 양방향 추적 메커니즘을 사용합니다. 가장 큰 장점은 수익을 잠금하고 손실 확장을 피하기 위해 스톱 로스를 추적하여 신뢰할 수있는 위험 통제에 있습니다. 한편, 반전 거래 신호는 전략의 승률을 향상시킵니다. 이 기사는이 전략의 원칙, 강점, 위험 및 최적화 방향을 상세히 분석합니다.

전략 원칙

이 전략은 두 가지 하위 전략으로 구성됩니다. 첫 번째 하위 전략은 가격 반전 신호를 결정하기 위해 스토카스틱 지표를 사용합니다. 구체적인 논리는 다음과 같습니다.

클로즈 가격이 2일 연속 상승하고, 9일 슬로우 K 라인이 50보다 낮다면, 롱; 클로즈 가격이 2일 연속 하락하고, 9일 패스트 K 라인이 50보다 높다면, 롱.

두 번째 하위 전략은 동력의 강도를 판단하기 위해 거래량 지표를 결합합니다. 구체적으로, 현재 거래량은 40 일 평균 거래량과 비교됩니다. 현재 거래량이 평균보다 크다면, 그것은 짧은 거리에 대한 반전 신호에 속하는 공격적인 거래량으로 간주됩니다. 현재 거래량이 평균보다 작다면, 그것은 긴 거리에 대한 반전 신호에 속하는 거래량으로 간주됩니다.

최종 거래 신호는 두 하위 전략의 신호의 교차점입니다. 즉, 두 하위 전략이 동시에 신호를 내면만 지점이 열릴 것입니다. 이 교차 목표?? 방법을 사용하여 소름 끼치는 거래를 필터링하고 신호 품질을 향상시킬 수 있습니다.

전략 의 장점

  1. 이중 표시기를 사용하여 이중 확인을 통해 신호 품질을 향상시킵니다.
  2. 회전 거래 모델의 특정 타이밍 장점
  3. 부피 분석과 결합하여 미래의 가격 움직임을 판단합니다.
  4. 단일 손실을 효과적으로 제어하기 위한 신뢰할 수 있는 스톱 손실 메커니즘

전략 의 위험

  1. 역전 신호가 시장 소음을 완전히 필터링하지 못하는 경우
  2. 비정상적인 거래량으로 인해 부적절한 거래량 추진량 판단
  3. 부적절한 스톱 손실 설정으로 인해 조기 스톱 손실 또는 과대 스톱 손실
  4. 사용량 통제 메커니즘이 부족하여 전략 수명을 단축시킬 수 있습니다.

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

  1. 트렌드 판단 규칙을 추가하여 트렌드 상거래를 피합니다.
  2. 추적 중지 손실 및 단계적 중지 손실을 실현하기 위해 중지 손실 논리를 최적화
  3. 막대한 손실을 피하기 위해 폐쇄 전략에 최대 유출 제한을 추가
  4. 기계 학습 알고리즘을 결합하여 동적 스톱 손실 및 위치 제어 모델을 구축

요약하자면, 이 전략은 주로 양방향 추적과 가격 역전, 더해 두 번째 확인을 통해 신호 품질을 향상시키기 위해 볼륨 모멘텀 분석을 기반으로합니다. 실제 응용에서는 특히 스톱 로스 및 자본 관리의 위험을 경계하고 지폐를 제거하는 과도한 인출을 방지하기 위해 추가 테스트 및 최적화가 필요합니다. 그러나 일반적으로이 전략은 명확한 논리로 다양한 양적 거래 기술을 활용하며 심도있는 연구를 할 가치가 있습니다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/11/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Volume and SMA
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

    
VSAVol(Length) =>
    pos = 0.0
    xSMA_vol = sma(volume, Length)
    pos := iff(volume > xSMA_vol, -1,
    	     iff(volume < xSMA_vol, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Volume SMA", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MAVol = input(40, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posVSAVol = VSAVol(Length_MAVol)
pos = iff(posReversal123 == 1 and posVSAVol == 1 , 1,
	   iff(posReversal123 == -1 and posVSAVol == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

더 많은