이 전략은 먼저 Ulf Jensen의 저서 How I Triple My Money in the Futures Market (183쪽) 에서 제시한 반전 전략과 비교적 강도 지표를 조합하여 더 강력한 신호를 얻는다. 이 조합 전략은 반전과 상대적 강도를 결합한 양적화 전략이라고 한다.
이 전략의 주요 아이디어는 동시에 여러 요인을 사용하여 판단하고, 반전 요인과 비교 상대 강도 두 개의 신호를 결합하여, 둘 다 동시에 신호를 발사할 때 구매하거나 판매하는 것으로 전략의 안정성을 높인다.
첫 번째 부분은 역전 전략이다. 이 전략은 다음과 같은 조건에서 더한다: 최근 2 일간의 종결 가격이 연속적으로 상승하고, 9 일간의 스토카스틱 슬로우 라인은 50 이하이다. 평점 조건은: 최근 2 일간의 종결 가격이 연속적으로 하락하고, 9 일간의 스토카스틱 슬로우 라인은 50 이상이다.
두 번째 부분은 비교 강도 지표이다. 이 지표는 표적 주식과 지표의 N일 종결 가격 변화의 이동 평균을 계산하고, 미리 설정된 구매, 판매 및 포지션 영역과 비교한다. 지표는 구매 영역을 통과하면 상위, 판매 영역을 통과하면 하위, 다중 상태에서 하위, 공평한 상태에서 공평한 상태, 공백 상태에서 공평한 상태에서 공평한 상태이다.
이 조합 전략은 두 부분의 신호를 동시에 판단하고, 둘 다 동일한 신호를 발산했을 때만 (쌍 구매 또는 쌍 판매) 해당 구매 또는 판매 작업을 수행한다.
이 전략은 반전 요인과 상대 강도 요인을 결합하여 둘의 장점을 발휘할 수 있다. 반전 전략은 단기적인 극한점을 포착할 수 있고, 상대 강도 전략은 대도시의 주요 경향을 파악할 수 있다. 둘은 동시에 신호를 발산하여 신호의 신뢰성을 높이고, 잡음으로 인한 잘못된 신호를 필터링할 수 있다.
또한, Stochastic 지표는 오버 바이 오버 셀드 분기 지표로서 역점을 더 잘 판단할 수 있다. 이동 평균과 같은 트렌드 지표를 사용하는 조합은 비교적 성숙한 조합 전략을 형성할 수 있다.
역전 전략의 가장 큰 위험은 시장이 역전되는 시점을 판단하지 못한다는 것입니다. 손실이 발생 한 후 역전 운동이 계속되는 경우입니다. 이 때 상대 강도 지표가 작용하여 큰 추세가 변하는지 판단 할 수 있습니다.
상대 강도 전략의 위험은 지표 매개 변수가 잘못 설정되어 너무 많은 잘못된 신호가 발생한다는 것입니다. 이 경우 역전 전략은 필터링 역할을하여 불필요한 거래를 줄일 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
더 많은 반전 인자를 테스트하여 더 좋은 반전 전략을 찾습니다. 현재는 간단한 N일 신 고 / 신 저 통계 전략 만 사용되고 있습니다.
상대 강도 지표의 매개 변수를 테스트하고 최적화하여 최적의 매개 변수 조합을 찾습니다. 현재 매개 변수 설정은 주관적이며 최적이 아닐 수 있습니다.
스톱로드를 늘리십시오. 이 전략은 현재 스톱로드가 설정되어 있지 않습니다. 합리적인 스톱로드를 늘리는 것은 손실 위험을 제어 할 수 있습니다.
다양한 지표의 지수를 테스트하고, 목표 주식과 상대적인 강도를 계산하여 가장 잘 일치하는 지수를 찾습니다.
이 전략은 반전 인자와 상대 강도 인자를 결합하여 거래하여 두 가지의 장점을 활용하여 신호 품질을 향상시킬 수 있으며, 비교적 성숙한 조합 전략이다. 이 전략의 최적화 공간은 여전히 넓으며, 매개 변수 최적화, 중지 손실 전략 및 전략 조합 방식을 조정함으로써 더 나은 효과를 얻을 수 있다.
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 30/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
// Comparative Relative Strength Strategy for ES
//
// 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
CRS(a, b, len, BuyBand, SellBand, CloseBand) =>
pos = 0.0
as = security(a, timeframe.period, close)
bs = security(b, timeframe.period, close)
nRes = sma(as/bs, len)
pos := iff(nRes > BuyBand, 1,
iff(nRes < SellBand, -1,
iff(pos[1] == 1 and nRes < CloseBand, 0,
iff(pos[1] == -1 and nRes > CloseBand, 0, nz(pos[1], 0)))))
pos
strategy(title="Combo Backtest 123 Reversal & Comparative Relative Strength", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
a = syminfo.tickerid
b = input("BTC_USDT:swap", type=input.symbol)
LengthCRS = input(10)
BuyBand = input(0.9988, step = 0.0001)
SellBand = input(0.9960, step = 0.0001)
CloseBand = input(0.9975, step = 0.0001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCRS = CRS(a, b, LengthCRS, BuyBand, SellBand, CloseBand)
pos = iff(posReversal123 == 1 and posCRS == 1 , 1,
iff(posReversal123 == -1 and posCRS == -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 )