이 전략은 여러 가지 유형의 기술 지표를 조합하여 더 정확한 신뢰할 수 있는 거래 신호를 생성합니다. 전략은 두 부분으로 구성됩니다. 첫 번째 부분은 123 리버스 전략을 사용하고 두 번째 부분은 TEMA 지표를 사용합니다. 두 가지의 거래 신호는 잘못된 신호를 필터링하고 신호 품질을 향상시키기 위해 조합됩니다.
첫 번째 부분은 123 역전 전략을 사용한다. 이 전략은 스토카스틱 지표에 기초하여, 주가 가격이 2 일 연속으로 종결 가격에 역전이 발생했을 때 (예를 들어 2 일 종결 가격에 의해 뒤집어 떨어지는 경우) 그리고 스토카스틱 지표가 과매매 또는 과매매 신호를 표시했을 때 구매 또는 판매 신호를 발생시킨다.
구체적으로 말해서, 만약 상장 가격이 전날의 상장 가격보다 높고, 스토카스틱 슬로우 라인이 50보다 낮다면, 구매 신호가 발생한다. 만약 상장 가격이 전날의 상장 가격보다 낮고, 스토카스틱 슬로우 라인이 50보다 높다면, 판매 신호가 발생한다.
두 번째 부분은 TEMA 지표를 사용한다. TEMA는 삼중 지수 이동 평균을 나타내며, 계산 방법은 다음과 같다.
TEMA = 3*EMA(CLOSE, N) - 3*EMA(EMA(CLOSE, N), N) + EMA(EMA(EMA(CLOSE, N), N), N)
그 중, N은 변수 길이를 나타냅니다. 종결 가격이 TEMA 지표 값보다 높으면 구매 신호를 생성하고, 종결 가격이 TEMA 지표 값보다 낮으면 판매 신호를 생성합니다.
마지막으로, 두 지표의 조합 신호. 실제 거래 신호는 두 지표가 일치하는 신호를 생성할 때만 (두 개 모두 구매하거나 둘 다 판매) 생성됩니다.
이 전략은 합리적인 다중 지표 조합을 통해 거래 신호의 질을 향상시키고 매우 효과적인 양적 거래 전략이다. 그러나 여전히 위험 통제에 주의를 기울이고, 적절한 매개 변수를 조정하거나 다른 구성 요소를 추가하여 전략을 다양한 시장에서 안정적으로 작동 할 수 있도록 최적화해야합니다.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-06 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 24/11/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 study plots the TEMA1 indicator. TEMA1 ia s triple MA (Moving Average),
// and is calculated as 3*MA - (3*MA(MA)) + (MA(MA(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
TEMA(Length) =>
pos = 0.0
xPrice = close
xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xEMA1, Length)
xEMA3 = ema(xEMA2, Length)
nRes = 3 * xEMA1 - 3 * xEMA2 + xEMA3
pos := iff(close > nRes, 1,
iff(close < nRes, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & TEMA1", 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, "---- TEMA1 ----")
LengthTEMA = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = TEMA(LengthTEMA)
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 )