듀얼 신호 정량적 역전 전략


생성 날짜: 2023-12-01 14:14:46 마지막으로 수정됨: 2023-12-01 14:14:46
복사: 1 클릭수: 631
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

듀얼 신호 정량적 역전 전략

개요

이중 신호 수량 역전 전략은 123 역전 전략과 가속자 진동기 지표를 결합하여 트렌드 역전의 판단을 가능하게 하며, 보다 정확한 거래 신호를 얻는다. 이 전략은 주식 지수, 외환, 귀금속 및 에너지 품종의 단선 및 중선 거래에 주로 사용된다.

전략 원칙

이 전략은 두 개의 독립된 코드 로직으로 구성된다.

첫 번째 부분은 123 역전 전략으로, 역전 신호를 판단하는 원칙은 다음과 같습니다: 종전 가격이 2 일 연속으로 이전 종전 가격보다 낮고, 9 일 STOCH 지표 K 라인이 D 라인보다 낮으면 다목 신호가 발생; 종전 가격이 2 일 연속으로 이전 종전 가격보다 높고, 9 일 STOCH 지표 K 라인이 D 라인보다 높으면 공허 신호가 발생.

두 번째 부분은 가속기 오징어 지표이다. 이 지표는 절대 가격 오징어와 그것의 5주기 이동 평균의 차이를 계산하여 절대 가격 오징어 변화의 속도를 반영하여 트렌드 반전을 미리 판단할 수 있다.

마지막으로, 이 전략은 두 지표의 신호를 조합합니다: 두 지표의 신호가 동방향일 때 ((비중 또는 비중), 그 방향의 거래 신호를 출력합니다; 두 지표의 신호가 일치하지 않을 때, 0 신호를 출력합니다.

우위 분석

이 전략은 이중 지표 판단과 결합하여 특정 가짜 신호를 필터링 할 수 있으며, 신호는 정확하고 신뢰할 수 있습니다. 또한 절대 가격 진동기가 변화의 가속성을 반영하는 특성을 활용하여 잠재적인 추세 반전 지점을 일찍 포착하여 더 큰 수익 공간을 확보 할 수 있습니다.

위험 분석

이 전략의 가장 큰 위험은 지표가 신호를 발산하기 전에 가격이 이미 명백하게 반전되어 최적의 입구 지점을 놓치게 된다는 것이다. 또한, 시장이 급격하게 변동할 때 지표 매개 변수가 최적화 조정될 필요가 있다.

입구 지점 위험을 위해, 더 많은 반전 지표와 결합하여 조합하여 신호의 신뢰성을 보장할 수 있습니다. 매개 변수 최적화 문제를 위해, 매개 변수의 합리성을 보장하기 위해 동적 조정 메커니즘을 구축할 수 있습니다.

최적화 방향

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

  1. 높은 파동 단계에서 잘못된 신호를 방지하기 위해 필터 조건을 추가합니다.

  2. 더 많은 역전 지표와 함께, 다중 검증 메커니즘을 형성합니다

  3. 매개 변수 적응 메커니즘을 구축하고, 지표 매개 변수를 동적으로 조정

  4. 단편적 손실을 제어하기 위한 손실 전략의 최적화

요약하다

이중 신호 수치 역전 전략은 쌍중 검증을 통해 신호 정확도를 높여 시장의 중요한 역점을 파악하는 데 도움이됩니다. 또한 지표 지연 및 변수 실패의 위험을 예방하는 데 주의를 기울여야하며, 전략이 변화하는 시장 환경에 적응할 수 있도록 지속적으로 검증 및 최적화해야합니다. 이 전략은 수량 거래 경험이있는 투자자가 사용할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/04/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// The Accelerator Oscillator has been developed by Bill Williams 
// as the development of the Awesome Oscillator. It represents the 
// difference between the Awesome Oscillator and the 5-period moving 
// average, and as such it shows the speed of change of the Awesome 
// Oscillator, which can be useful to find trend reversals before the 
// Awesome Oscillator does.
//
// 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

AcceleratorOscillator(nLengthSlow, nLengthFast) =>
    xSMA1_hl2 = sma(hl2, nLengthFast)
    xSMA2_hl2 = sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    cClr = nRes > nRes[1] ? blue : red
    pos = 0.0
    pos := iff(nRes > 0, 1,
             iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal and Accelerator Oscillator (AC)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posAcceleratorOscillator = AcceleratorOscillator(nLengthSlow, nLengthFast)
pos = iff(posReversal123 == 1 and posAcceleratorOscillator == 1 , 1,
	   iff(posReversal123 == -1 and posAcceleratorOscillator == -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 ? red: possig == 1 ? green : blue )