
이 전략은 이중 최적화 된 조합 반전 EMA 가중 거래 전략이다. 이 전략은 반전 전략과 EMA 가중 전략의 두 가지 유형의 전략을 결합하여 두 가지 전략의 신호가 일치하는지 판단하여 더 신뢰할 수있는 거래 신호를 생성한다.
역전 부분에는 123 역전 전략이 적용된다. 이 전략은 지난 2일간의 종전 가격 관계를 판단하고, 무작위 지표의 조합과 함께 신호를 생성한다. 구체적인 규칙은 다음과 같다:
EMA 가중 부분에는 지수 이동 평균과 거래량 가중 계산이 적용된다. 계산 공식은 다음과 같다:
xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)
nRes = xMAVolPrice / xMAVol
구체적인 거래 규칙은: nRes 지표가 어제의 종결 가격보다 낮거나 높을 때, 더 많이/더 적게 한다.
마지막으로, 이 전략은 두 부분의 신호가 일치하는지 여부를 판단하여 실제 거래 신호를 생성합니다.
이 전략은 두 가지 다른 유형의 전략을 결합하여 서로 검증하여 신호의 신뢰성을 높이고 가짜 신호를 감소시킵니다. 동시에, 반전 부분은 전환점을 잡을 수 있고, EMA 가중부 부분은 추세를 추적할 수 있으며, 둘은 우위를 점할 수 있습니다.
이 전략은 시간이 지연되어 짧은 라인을 놓치는 거래 기회를 쉽게 니다. 그리고 EMA 가중된 가격 변동에 대한 시장 효과는 좋지 않습니다. 또한 역전 신호의 신뢰성도 검사해야합니다.
적절히 매개 변수를 줄여서 반응 속도를 높일 수 있다. 위험을 제어하기 위해 스톱로스를 추가한다. 반전 신호를 확인하는 더 많은 요소를 도입한다.
이 전략은 두 가지 다른 유형의 전략의 장점을 통합하여 신호 품질을 향상시킬 수 있으며 단일 전략의 단점을 어느 정도 극복 할 수 있습니다. 그러나 또한 약간의 낙후성이 있으며 추가 최적화가 필요합니다.
/*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 )