더블 최적화 조합 반전 EMA 가중 거래 전략


생성 날짜: 2023-12-07 16:39:50 마지막으로 수정됨: 2023-12-07 16:39:50
복사: 0 클릭수: 579
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

더블 최적화 조합 반전 EMA 가중 거래 전략

개요

이 전략은 이중 최적화 된 조합 반전 EMA 가중 거래 전략이다. 이 전략은 반전 전략과 EMA 가중 전략의 두 가지 유형의 전략을 결합하여 두 가지 전략의 신호가 일치하는지 판단하여 더 신뢰할 수있는 거래 신호를 생성한다.

전략 원칙

역전 부분에는 123 역전 전략이 적용된다. 이 전략은 지난 2일간의 종전 가격 관계를 판단하고, 무작위 지표의 조합과 함께 신호를 생성한다. 구체적인 규칙은 다음과 같다:

  • 오늘의 종결가는 어제의 종결값보다 높고, 어제의 종결가는 전날의 종결값보다 낮습니다.
  • 오늘의 종결가는 어제보다 낮고, 어제의 종결가는 전날보다 높으며; 동시에 9일에 임의의 단행선이 50보다 높을 때, 공백을 다.

EMA 가중 부분에는 지수 이동 평균과 거래량 가중 계산이 적용된다. 계산 공식은 다음과 같다:

xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)  
nRes = xMAVolPrice / xMAVol

구체적인 거래 규칙은: nRes 지표가 어제의 종결 가격보다 낮거나 높을 때, 더 많이/더 적게 한다.

마지막으로, 이 전략은 두 부분의 신호가 일치하는지 여부를 판단하여 실제 거래 신호를 생성합니다.

우위 분석

이 전략은 두 가지 다른 유형의 전략을 결합하여 서로 검증하여 신호의 신뢰성을 높이고 가짜 신호를 감소시킵니다. 동시에, 반전 부분은 전환점을 잡을 수 있고, EMA 가중부 부분은 추세를 추적할 수 있으며, 둘은 우위를 점할 수 있습니다.

위험 분석

이 전략은 시간이 지연되어 짧은 라인을 놓치는 거래 기회를 쉽게 니다. 그리고 EMA 가중된 가격 변동에 대한 시장 효과는 좋지 않습니다. 또한 역전 신호의 신뢰성도 검사해야합니다.

적절히 매개 변수를 줄여서 반응 속도를 높일 수 있다. 위험을 제어하기 위해 스톱로스를 추가한다. 반전 신호를 확인하는 더 많은 요소를 도입한다.

최적화 방향

  1. 더 많은 반전 요인 조합을 테스트하여 최적의 변수를 찾습니다.
  2. 다른 종류의 EMA 가중치를 시도해 보세요.
  3. 손해에 가입하고, 손해를 추적한다.
  4. 더 빠르게 대응할 수 있도록 최적화 파라미터를 사용합니다.

요약하다

이 전략은 두 가지 다른 유형의 전략의 장점을 통합하여 신호 품질을 향상시킬 수 있으며 단일 전략의 단점을 어느 정도 극복 할 수 있습니다. 그러나 또한 약간의 낙후성이 있으며 추가 최적화가 필요합니다.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/10/2019
// 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 2009 Oct 
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

EMA_VW(Length) =>
    pos = 0.0
    xMAVolPrice = ema(volume * close, Length)
    xMAVol = ema(volume, Length)
    nRes = xMAVolPrice / xMAVol
    pos := iff(nRes < close[1], 1,
             iff(nRes > close[1], -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & EMA & Volume Weighting", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthEMA_VM = input(22, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMA_VW = EMA_VW(LengthEMA_VM)
pos = iff(posReversal123 == 1 and posEMA_VW == 1 , 1,
	   iff(posReversal123 == -1 and posEMA_VW == -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 )