더블 과매도 반전 돌파 시스템


생성 날짜: 2023-10-27 16:22:08 마지막으로 수정됨: 2023-10-27 16:22:08
복사: 0 클릭수: 677
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 과매도 반전 돌파 시스템

개요

이중 초하 역 돌파 시스템은 트렌드 추적과 역거래를 결합한 양적 전략이다. 이 전략은 주가 가격 대비 N일 종결 가격에 연속적으로 초하 신호가 발생했는지 여부를 계산하여 구매 신호를 생성한다. 동시에 특정 매개 변수를 계산한 T3 이동 평균과 결합하여 판매 신호를 생성하여 수익 보호를 실현한다.

전략 원칙

이 전략은 두 부분으로 구성되어 있습니다.

  1. 123 회전 시스템

책에서 설명하는 바에 따르면, 이 역전 시스템은 지난 N일간의 종결 가격 변화를 관찰하고, 만약 오늘의 종결 가격이 전날보다 상승하고, 전날보다 전날 2일간의 종결 가격이 낮아지면, 즉 2일 연속 상하 신호로 간주되어, 이 시스템은 구매 신호를 발생시킨다. 또한, 이 시스템은 STOCH 지표와 결합하여, 오늘의 STOCH 빠른 선이 느린 선보다 낮아지면, 구매 신호의 유효성을 추가로 확인한다.

  1. T3 이동 평균

T3 이동 평균은 특정 계산 공식에 따라 가격과 결합 된 지수 이동 평균을 계산합니다. 그것은 특정 파라미터를 통해 이동 평균의 가격 변화에 대한 민감성을 조정합니다. 가격에 T3 이동 평균을 통과하면 판매 신호가 발생합니다.

이 전략은 위의 두 부분의 신호를 통합하여, 동시에 123의 반전된 구매 신호와 T3 이동 평균의 판매 신호를 충족시키면, 그에 상응하는 진정한 거래 신호를 생성한다.

우위 분석

  • 반전 거래 전략, 하위 구매에 적합하며, 상하 반전 상황을 추적합니다.
  • 이동 평균 전략은 수익을 고정하고 위험을 피하는 데 도움이 됩니다.
  • 이중 신호 결합으로 신호의 효율을 높이고, 가짜 신호를 줄일 수 있다.
  • 트렌드 추적과 반전 거래의 장점
  • 변수는 조정할 수 있고, 다른 상황에 따라 유연하게 적응할 수 있습니다.

위험 분석

  • 반전 신호는 잘못된 판단으로 인해 손실 거래가 발생할 수 있습니다.
  • 잘못된 매개 변수 설정은 거래 빈도를 증가시키고 거래 비용과 슬라이드 포인트 비용을 증가시킬 수 있습니다.
  • 이동평균에서 나오는 팔기 신호는 수익을 조기 고정시킬 수 있습니다.
  • “경제가 급격히 변할 때, 손해배상 위험은 여전히 존재합니다”.
  • 다양한 품종에 최적의 변수를 선택하기 위해 최적화 변수를 설정해야 합니다.

위험을 고려하여 다음과 같은 조치를 취할 수 있습니다.

  1. 신호의 유효성을 보장하기 위해 역전 거래의 매개 변수를 적절하게 조정합니다.
  2. 이동 평균의 변수를 조정하고, 적당히 지분 기간을 연장합니다.
  3. 단독 손실을 줄이기 위한 손실 차단 전략을 강화
  4. 최적화 변수 선택, 다른 품종에 대해 개별적으로 선택 변수

최적화 방향

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

  1. 필터링 조건을 추가하여 거래 신호의 유효성을 보장합니다.

원래의 전략에 기초하여 다른 기술 지표를 필터 조건으로 추가 할 수 있습니다. 거래량 증가의 돌파 조건과 같은, 따라서 노이즈로 인한 잘못된 거래를 피할 수 있습니다.

  1. 매개 변수 설정을 조정하여 시장 환경에 맞게 조정

여러 가지 파라미터 조합을 통해 재검토할 수 있으며, 전략 효과를 최적화하기 위해 가장 높은 수익률에 해당하는 파라미터를 선택한다. 또한 시장 상황에 따라 실시간으로 조정되는 동적 파라미터를 설정할 수 있다.

  1. 기계 학습 기술을 결합하여 전략의 적응적 최적화를 구현합니다.

예를 들어, 많은 역사적 데이터를 수집하고, 기계 학습 훈련 모델을 사용하여 최적의 구매 판매 시점을 예측하고, 실시간으로 전략을 최적화하는 매개 변수를 사용할 수 있습니다.

  1. 다양한 품종 특성에 따라 독립적인 매개 변수를 설정

다양한 품종의 특성이 다르며, 적합한 파라미터가 다를 수 있다. 다양한 품종 데이터에 따라 개별적으로 재검토하여 독립적인 파라미터를 설정할 수 있다.

요약하다

이중 초하반 반전 브레이크 시스템은 트렌드 추적과 반전 거래의 장점을 통합한다. 그것은 초하반 단계에서 낮은 가격을 구입할 수 있고, 트렌드 수익을 얻은 후 적시에 멈출 수 있다. 이 전략 반전 신호와 트렌드 신호의 효과적인 조합은 반전 기회를 효과적으로 획득하면서 수익을 잠금 할 수 있다.

전략 소스 코드
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/09/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 indicator plots the moving average described in the January, 1998 issue
// of S&C, p.57, "Smoothing Techniques for More Accurate Signals", by Tim Tillson.
// This indicator plots T3 moving average presented in Figure 4 in the article.
// T3 indicator is a moving average which is calculated according to formula:
//     T3(n) = GD(GD(GD(n))),
// where GD - generalized DEMA (Double EMA) and calculating according to this:
//     GD(n,v) = EMA(n) * (1+v)-EMA(EMA(n)) * v,
// where "v" is volume factor, which determines how hot the moving average’s response
// to linear trends will be. The author advises to use v=0.7.
// When v = 0, GD = EMA, and when v = 1, GD = DEMA. In between, GD is a less aggressive
// version of DEMA. By using a value for v less than1, trader cure the multiple DEMA
// overshoot problem but at the cost of accepting some additional phase delay.
// In filter theory terminology, T3 is a six-pole nonlinear Kalman filter. Kalman
// filters are ones that use the error — in this case, (time series - EMA(n)) — 
// to correct themselves. In the realm of technical analysis, these are called adaptive
// moving averages; they track the time series more aggres-sively when it is making large
// moves. Tim Tillson is a software project manager at Hewlett-Packard, with degrees in
// mathematics and computer science. He has privately traded options and equities for 15 years.  
//
// 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


T3A(Length, b) =>
    pos = 0.0
    xPrice = close
    xe1 = ema(xPrice, Length)
    xe2 = ema(xe1, Length)
    xe3 = ema(xe2, Length)
    xe4 = ema(xe3, Length)
    xe5 = ema(xe4, Length)
    xe6 = ema(xe5, Length)
    c1 = -b*b*b
    c2 = 3*b*b+3*b*b*b
    c3 = -6*b*b-3*b-3*b*b*b
    c4 = 1+3*b+b*b*b+3*b*b
    nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
    pos:= iff(nT3Average > close, -1,
           iff(nT3Average < close, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & T3 Averages", 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, "---- T3 Averages ----")
LengthT3 = input(5, minval=1)
b = input(0.7, minval=0.01,step=0.01) 
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = T3A(LengthT3, b)
pos = iff(posReversal123 == 1 and posT3A == 1 , 1,
	   iff(posReversal123 == -1 and posT3A == -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 )