이중 이동 평균 역전 추적 시스템

저자:차오장, 날짜: 2023-11-07 16:00:33
태그:

img

전반적인 설명

이중 이동평균 반전 추적 시스템은 123 반전 패턴 전략과 이치모쿠 전략을 통합하여 반전 기회를 파악하고 초과 수익의 추세를 추적합니다.

전략 논리

이 전략은 두 가지 하위 전략으로 구성됩니다.

  1. 123 회전 패턴 전략

이 전략은 가격 패턴을 기반으로 거래합니다. 논리는 다음과 같습니다.

  • 닫기 가격이 2일 연속 상승하고 9일 슬로우 스토카스틱이 50보다 낮을 때 장면을 취합니다.

  • 닫기 가격이 2일 연속 하락하고 9일 빠른 스토카스틱이 50보다 높을 때 쇼트를 합니다.

전날의 폐쇄의 파장을 사용하여 반전을 결정하고 소음을 필터하기 위해 스토카스틱을 사용합니다.

  1. 이치모쿠 전략

이 전략은 이치모쿠의 5선 크로스오버를 기반으로 합니다.

  • 마감값이 기본값보다 높으면 롱으로 가세요.

  • 마감값이 전환선 밑에 있을 때 마감값으로 가세요.

기준선은 지난 26일 동안 가장 높은 최고와 가장 낮은 최저의 중간점이고, 변환선은 지난 9일 동안 가장 높은 최고와 가장 낮은 최저의 중간점입니다.

최종 전략은 두 하위 전략의 신호를 결합하여, 양쪽 모두 긴 신호 또는 짧은 신호를 입력하고 동의하지 않을 때 종료합니다.

이점 분석

  • 역전과 트렌드 추종을 결합합니다. 역전과 트렌드를 잡는 데 유연합니다.

  • 123 패턴은 반전을 식별하는 데 간단하고 효과적입니다.

  • 이치모쿠 변수는 최적화됐고 탈출 위험이 낮아졌어

  • 두 가지 다른 전략을 결합하면 최적화를 달성할 수 있습니다.

위험 분석

  • 반전 전략은 함정과 손실에 취약합니다. 짧은 보유 기간을 고려하거나 위험을 제어하는 스톱 손실을 추가하십시오.

  • 이치모쿠는 시장의 범위에서 현저한 현상을 경험할 수 있습니다.

  • 전략 결합 시 부합성 없는 매개 변수는 너무 빈번하거나 희박한 신호로 이어질 수 있다. 신중한 테스트와 최적화를 요구한다.

최적화 방향

  • 더 나은 필터를 위해 더 많은 지표를 테스트하십시오. 예를 들어 부피를 포함합니다.

  • 이치모쿠 매개 변수를 최적화해서 기기 특성에 맞게

  • 스톱 로스 메커니즘을 추가합니다. 예를 들어 ATR에 기반한 설정 출구.

  • 리스크 통제를 위한 돈 관리 모듈을 추가합니다.

  • 강력한 백테스팅을 위해 더 많은 데이터를 수집하고 문제를 발견하고 반복합니다.

결론

이중 이동 평균 반전 추적 시스템은 알파 생성에 대한 최적화 및 조합을 통해 반전 및 트렌드를 따르는 전략의 장점을 결합합니다. 거래 장점이 있지만 윙사 및 스톱 손실과 같은 위험이 있습니다. 우리는 백테스트의 논리를 계속 개선하고 안정성과 실제 세계 성능을 위해 적절한 위험 통제를 구현해야합니다. 전반적으로 더 나은 전반적인 결과를 위해 다른 전략을 결합하는 좋은 접근 방식을 제공합니다.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/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
//  Ichimoku Strategy
//
// 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

middleDonchian(Length) =>
    lower = lowest(Length)
    upper = highest(Length)
    avg(upper, lower)    
    
Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement) =>
    pos = 0.0
    Tenkan = middleDonchian(conversionPeriods)
    Kijun =  middleDonchian(basePeriods)
    xChikou = close
    SenkouA = middleDonchian(laggingSpan2Periods)
    SenkouB = (Tenkan[basePeriods] + Kijun[basePeriods]) / 2
    pos := iff(close < SenkouA[displacement], -1,
              iff(close > SenkouB, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ichimoku2c", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
conversionPeriods = input(9, minval=1),
basePeriods = input(26, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posIchimoku2c = Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement)
pos = iff(posReversal123 == 1 and posIchimoku2c == 1 , 1,
	   iff(posReversal123 == -1 and posIchimoku2c == -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 )

더 많은