더블 이동 평균 반전 돌파 전략


생성 날짜: 2023-12-18 10:24:08 마지막으로 수정됨: 2023-12-18 10:24:08
복사: 0 클릭수: 598
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

더블 이동 평균 반전 돌파 전략

개요

쌍평선 반전 돌파 전략은 123 반전 전략과 가격과 평선 격차 전략의 두 가지 전략을 결합한 조합 전략이다. 이 전략의 주요 아이디어는 123 반전이 신호를 형성하는 동시에, 가격과 지정된 주기의 평선 격차도 대응 신호를 형성할 때 거래 신호를 생성하는 것이다.

전략 원칙

이중 평행선 역전 돌파 전략은 두 부분으로 구성됩니다.

  1. 123 역전 전략

123 역전 전략의 거래 신호는 다음과 같습니다: 2 일 연속으로 종결 가격 역전 ((즉, 전날 종결 가격이 높고, 다음 날 종결 가격이 낮다; 또는 전날 종결 가격이 낮고, 다음 날 종결 가격이 높다), 동시에 9 일 무작위 지표 K 라인이 특정 수준 이하에 있다 ((부정 50), 이렇게 구매 신호를 형성한다; 2 일 연속으로 종결 가격 역전, 동시에 9 일 무작위 지표 K 라인이 특정 수준 이상이다 ((부정 50), 이렇게 판매 신호를 형성한다.

  1. 가격과 평균 격차 전략

가격과 평균선 격차 전략은 가격과 지정된 주기 평균선 (기본 14일) 사이의 차이의 비율을 계산한다. 격차가 특정 수준 (기본 3%) 보다 작으면 구매 신호를 발생시키고, 격차가 특정 수준 (기본 0.54%) 보다 크면 판매 신호를 발생시킨다.

쌍평선 역전 돌파 전략은 상술한 두 전략의 거래 신호가 동방향일 때, 즉 둘 다 구매 또는 둘 다 판매 할 때, 이 전략이 실제 거래 신호를 생성한다.

우위 분석

이중 평행선 반전 돌파 전략은 반전 전략과 트렌드 전략의 장점을 결합하여 긴 것을 줄여주는 전략이라고 할 수 있다.

123 역전 전략은 역전 전략으로서, 가격 역전 시 역전 기회를 잡을 수 있다. 가격과 평균선 격차 전략은 추세 추적 전략으로서, 더 긴 선의 추세를 잡을 수 있다. 이 둘을 결합하면, 단기 가격 역전을 적시에 잡을 수 있고, 장기적인 추세를 잡을 수 있으며, 포착되는 것을 피할 수 있다.

또한, 두 가지 전략의 신호 동향을 요구함으로써, 유효하지 않은 거래의 횟수를 효과적으로 줄일 수 있으며, 문자 잡음 비율을 향상시킬 수 있다.

위험 분석

이중 평행 역전 돌파 전략은 두 가지 전략의 장점을 통합적으로 사용하지만, 두 가지 전략의 각자의 위험을 물려받기도 한다.

123 반전 부분의 경우, 2 일 연속 반전이 가격 반전을 완전히 보장하지 않으며, 단기 회귀 시세에 의한 가짜 반전일 수 있다. 또한, 무작위 지표 매개 변수를 잘못 설정하면 신호 품질이 떨어질 수 있다.

가격과 평균선 간격 부분에서 평균선 파라미터를 잘못 설정하면 신호 지연이 발생할 수 있다. 또한 가격과 평균선 간격은 트렌드 방향을 판단할 수 없으며 기계적으로 신호를 생성할 수 있다.

요약하자면, 이 전략의 주요 위험은 파라미터를 잘못 설정하고 판단 오류에 있다. 파라미터를 최적화하여, 스톱 스톱을 설정하거나, 인위적으로 개입하는 거래를 통해 위험을 회피할 수 있다.

최적화 방향

쌍평선 역전 돌파 전략은 다음과 같은 측면에서 최적화될 수 있다:

  1. 평균선 및 무작위 지표 파라미터를 최적화하여 신호 품질을 향상시킵니다.
  2. 다른 지표 필터링을 추가하여 거래 신호를 더 신뢰할 수 있도록 합니다.
  3. 스톱패스 설정을 추가
  4. 트렌드 판단 모듈을 추가하여 부적절한 거래를 피합니다.
  5. 인공 개입과 변수 적응

다양한 수단의 조합을 통해 전략의 안정성과 수익성을 더욱 높일 수 있을 것으로 보인다.

요약하다

쌍평선 반전 돌파 전략은 반전 전략과 트렌드 전략을 통합하여 두 전략 신호가 동시적으로 실제 거래 신호를 생성한다. 그것은 단기 가격 반전 기회를 포착하고 장기 트렌드를 추적 할 수 있으며, 포장을 피할 수 있습니다. 동시에 쌍 신호를 조합하여 신호의 신뢰성을 향상시킬 수 있습니다. 이 전략은 여러 가지 방법으로 최적화 업그레이드를 할 수 있으며, 강력한 기능이 있으며, 광범위한 양적 거래 전략입니다.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/04/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
// Percent difference between price and MA
//
// 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


DBP_MA(Length,SellZone,BuyZone) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = abs(close - xSMA) * 100 / close
    pos:= iff(nRes < BuyZone, 1,
           iff(nRes > SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Difference between price and MA", 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, "---- Difference between price and MA ----")
LengthDBP = input(14, minval=1)
SellZone = input(0.54, minval=0.01, step = 0.01)
BuyZone = input(0.03, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDBP_MA = DBP_MA(LengthDBP,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posDBP_MA == 1 , 1,
	   iff(posReversal123 == -1 and posDBP_MA == -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 )