이중 확인 역거래 전략

저자:차오장, 날짜: 2023-11-14 13:42:47
태그:

img

전반적인 설명

이중 확인 역전 거래 전략은 123 역전 패턴과 스토카스틱 RSI 지표를 결합하여 견고한 평균 역전 시스템을 만듭니다. 거래에 들어가기 전에 두 개의 확인 계층을 제공하여 전략의 정확성과 안정성을 향상시킵니다.

전략 논리

이 전략은 두 가지 구성 요소로 구성됩니다.

  1. 123 반전

123 패턴을 이용해서 잠재적인 역전을 식별합니다.

  • 긴 경우 닫기 < 이전 닫기 및 현재 닫기 > 이전 닫기 및 9일 느린 스토카스틱 < 50

  • 마감 경우 단축 > 이전 마감 및 현재 마감 < 이전 마감 및 9일 급속한 스토카스틱 > 50

이것은 가격 전환에 대한 초기 신호를 제공합니다.

  1. 스토카스틱 RSI

추가 확인을 위해 RSI에 스토카스틱 지표를 적용합니다.

  • 길이 14의 RSI를 계산합니다.

  • 길이가 14인 RSI의 스토카스틱을 계산하여 K를 얻습니다.

  • D를 얻기 위해 K의 3일 SMA를 가져야 합니다.

  • K가 80보다 높으면 길고 20보다 낮으면 짧습니다.

거래는 양쪽이 동의할 때만 시작됩니다.

이점 분석

이 전략의 주요 장점은 정확성을 향상시키고 을 줄이는 이중 확인입니다. 구체적인 이점은 다음과 같습니다.

  1. 트렌드 반전 초기 탐지

  2. 스토카스틱 RSI는 반전 신호를 확인합니다.

  3. 조합은 승률을 향상시키고 잘못된 신호를 줄입니다.

  4. 매개 변수는 다른 시장에 최적화 될 수 있습니다.

  5. 실시간 거래에 대한 간단하고 깨끗한 구현

위험 분석

이 전략에서 고려해야 할 몇 가지 위험:

  1. 실패한 반전 위험요소. 잘못된 반전으로 손실이 발생할 수 있습니다.

  2. 매개 변수 최적화 위험. 나쁜 매개 변수는 낮은 성능으로 이어집니다.

  3. 너무 많은 위험, 너무 많은 최적화

  4. 높은 거래 빈도 위험. 더 많은 신호가 비용을 증가시킬 수 있습니다.

  5. 코드 오류 위험, 구현 논리 오류

가능한 해결책:

  1. 손실을 제한하기 위해 신중한 포지션 크기를 사용하십시오.

  2. 앞으로 나아가는 최적화 방법을 사용하세요.

  3. 높은 수익이 아닌 안정적인 매개 변수에 집중하세요.

  4. 거래 빈도를 줄이기 위해 조건을 조정합니다.

  5. 코드 논리를 철저히 테스트해

더 나은 기회

이 전략은 다음 영역에서 개선될 수 있습니다.

  1. 특정 시장에 대한 매개 변수 조정

  2. 필터를 추가해서 급한 반전을 피합니다.

  3. 스톱 로스 메커니즘을 포함합니다.

  4. 추가 필터로 거래 빈도를 줄입니다.

  5. 동적 위치 크기를 구현합니다.

  6. 거래비용에 대한 조정

결론

이중 확인 반전 전략은 단기 평균 반전을 위한 안정적이고 실용적인 시스템이다. 이중 확인에서 반전을 잡는 감수성과 정확성을 균형 잡는다. 적절한 최적화와 수정으로 양적 전략 포트폴리오를 효과적으로 보완할 수 있다. 그러나 매개 변수는 견고해야 하며, 과도한 적합성 및 휘프사와 같은 위험은 라이브 거래에서 신중하게 관리되어야 한다.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/08/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
// This strategy used to calculate the Stochastic RSI
//
// 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


SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand) =>
    pos = 0.0
    Source = close
    rsi1 = rsi(Source, lengthRSI)
    k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
    d = sma(k, smoothD)
    d_cross_80 = cross(d,TopBand) 
    pos := iff(k > TopBand, 1,
              iff(k < LowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Stochastic RSI", 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, "---- Stochastic RSI ----")
TopBand = input(80, step=0.01)
LowBand = input(20, step=0.01)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSRSI = SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSRSI == 1 , 1,
	   iff(posReversal123 == -1 and posSRSI == -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 )

더 많은