다중 요인 반전 추적 전략

저자:차오장, 날짜: 2023-09-15 14:31:15
태그:

전략 개요

다중 요인 반전 추적 전략은 가격 반전 패턴과 과잉 구매 과잉 판매 지표를 통합하여 거래 신호를 생성합니다. 시장 최고와 최저치를 식별하기 위해 여러 요인을 합성하고 중단기 가격 반전을 포착하기 위해 반전 지점에서 거래 신호를 생성합니다.

전략 논리

이 전략은 두 가지 모듈으로 구성됩니다.

  1. 123 반전 패턴 모듈
  • 2일 새로운 최고치를 볼 때 단축하지만 3일 후면 다시 하락하면 잠재적인 단기 최고치를 나타냅니다.

  • 2일 새로운 최저치를 볼 때 장기화하지만 3일째는 반등하여 잠재적인 단기적 최저치를 나타냅니다.

  1. 리버스 엔지니어링 RSI 모듈
  • 과도한 매수 및 과도한 판매 라인을 동적으로 조정하여 역전 지점을 식별합니다.

  • RSI가 조정된 과잉 매수 라인 이상에서 짧게, RSI가 조정된 과잉 매수 라인 아래에 있을 때 길게

거래 신호는 두 모듈이 정렬될 때만 생성됩니다.

가장 큰 장점은 구조적 최고와 최하위를 결정하기 위해 여러 요소를 통합하고 개별 요소로부터 일부 잘못된 신호를 필터링하고 실제 거래 승률을 향상시키는 것입니다.

전략 의 장점

  • 포괄적 인 높은/저한 식별을 위한 다중 요인 합성

  • 반전 패턴과 과잉 구매/ 과잉 판매 지표를 결합합니다.

  • 거짓 반전을 필터링, 정확도를 향상

  • 다양한 시장에 적응 할 수있는 최적화 가능한 백테스트 매개 변수

  • 빠른 복제를 위해 쉽게 구현

위험 경고

  • 반전 신호가 지연될 수 있습니다. 매개 변수 업데이트가 필요합니다.

  • 더 많은 수수료를 피하기 위해 과잉 거래를 방지하십시오.

  • 개별 주식의 기본 요소는 여전히 고려되어야합니다.

  • 인덱스 및 핫 주식에 더 적합한 반전 전략

결론

다중 요인 반전 추적 전략은 거래 신호에 대한 여러 관점을 고려하여 양자 도구와 수동 분석 경험의 장점을 완벽하게 결합합니다. 단일 지표 전략과 비교하여 실제 거래 안정성과 승률을 크게 향상시킵니다. 전략은 먼저 백테스트에서 검증하고 최적화 할 가치가 있으며, 라이브 거래에서 점차 구현되며 매우 두드러진 실용적 가치가 있습니다.


/*backtest
start: 2023-08-15 00:00:00
end: 2023-09-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/06/2021
// 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
// The related article is copyrighted material from
// Stocks & Commodities.
//
// 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


RE_RSI(Value,WildPer) =>
    pos = 0.0
    AUC = 0.0
    ADC = 0.0
    ExpPer = 2 * WildPer - 1
    K = 2 / (ExpPer + 1)
    AUC := iff(close > close[1], K * (close - close[1]) + (1 - K) * nz(AUC[1], 1), (1-K) * nz(AUC[1], 1))
    ADC := iff(close > close[1], (1-K) * nz(ADC[1], 1), K * (close[1] - close) + (1 - K) * nz(ADC[1], 1))
    nVal = (WildPer - 1) * (ADC * Value / (100 - Value) - AUC)
    nRes = iff(nVal >= 0, close + nVal, close + nVal * (100 - Value) / Value)
    pos:= iff(nRes > close, -1,
    	   iff(nRes < close, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Reverse Engineering RSI, by Giorgos Siligardos", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Reverse Engineering RSI ----")
Value = input(50, minval=1)
WildPer = input(14,minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRE_RSI = RE_RSI(Value,WildPer)
pos = iff(posReversal123 == 1 and posRE_RSI == 1 , 1,
	   iff(posReversal123 == -1 and posRE_RSI == -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 )

더 많은