이 전략은 반전 전략과 진동기 전략의 조합으로, 더 신뢰할 수 있는 거래 신호를 얻기 위한 것이다. 반전 전단 전략과 찬데 예측 진동기 전략을 결합하여, 두 전략이 동시에 구매 또는 판매 신호를 발산할 때 거래를 실행한다.
역으로 예측하는 전략
스토카스틱 오실레이터 지표를 사용하여 과매매 현상을 판단
가격 2 번 연속으로 마감 가격 반전과 Stochastic Oscillator 지표가 과매매 또는 과매매 신호를 표시 할 때 역행
데는 진동기의 전략을 예측합니다.
선형 회귀 분석을 이용한 가격 예측
오징어 곡선은 종전 가격과 예측 가격의 차이와 같습니다.
거래 신호는 실제 가격과 예측 가격의 명백한 오차가 있을 때 생성됩니다.
전략 논리
역전 예측 전략과 Chande 예측 진동기 전략의 신호를 동시에 계산한다
두 전략의 신호가 일치하는 경우에만 실제 거래 신호가 생성됩니다. 즉, 모두 구매 신호 또는 판매 신호입니다.
단일 전략에서 발생할 수 있는 가짜 신호를 제거하는 조합을 통해 신호의 신뢰도를 높인다.
여러 전략을 조합하여 시장에 대한 종합적인 판단을 통해 신뢰성을 높여줍니다.
단일 기술 지표에서 발생할 수 있는 잘못된 신호를 제거
역전 예측 전략은 단기적인 역전 기회를 잡을 수 있습니다.
데는 진동기가 장기적 추세를 정확하게 예측한다고 말했습니다.
스토카스틱 오실레이터 지표 파라미터는 조정 가능, 적응력이 강하다
다양한 분석 방법을 통합하여 다양한 차원의 거래 기회를 활용합니다.
조합 전략은 신뢰성을 높였지만 신호 발생 빈도는 낮아졌다.
동시에 여러 정책 변수를 최적화해야 하는 복잡함
역전 시기는 예측하기 어렵고, 손실 위험이 있다.
선형 회귀 예측은 가격 변동이 심한 시장에는 적용되지 않습니다.
주가가 스토카스틱 오실레이터에서 벗어나지 않는지 주의해야 합니다.
데이터 부족, 실력 의심
스토카스틱 오실레이터 변수를 최적화하여 K선과 D선 주기를 단축합니다.
선형 회귀 주기를 조정하여 더 많은 주기 변수를 테스트합니다.
단편적 손실을 줄이기 위한 손실을 막는 전략을 강화
포지션 개시 논리를 수정하여 스토카스틱 오실레이터 지표가 오버 바이 오버 셀 영역에 완전히 들어갈 때까지 기다립니다.
거래 품종에 대한 통계적 특징 분석을 추가합니다.
MACD와 같은 더 많은 지표와 결합하여 더 많은 차원의 판단을 제공합니다.
이 전략은 여러 가지 분석 방법을 종합적으로 적용하여 조합을 통해 신호 품질을 향상시키며, 동시에 단기 반전 발견과 큰 추세를 판단하는 두 가지 측면을 겸비하여 더 포괄적인 거래 기회를 잡을 수 있습니다. 그러나 실 디스크 효과에 주의를 기울이고, 적절한 매개 변수를 조정해야합니다. 이 전략 아이디어는 더 많은 지표와 전략의 조합으로 확장 될 수 있으며 실제 거래 작업을 안내하는 데에도 사용할 수 있습니다.
/*backtest
start: 2023-09-09 00:00:00
end: 2023-10-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 08/08/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 Chande Forecast Oscillator developed by Tushar Chande The Forecast
// Oscillator plots the percentage difference between the closing price and
// the n-period linear regression forecasted price. The oscillator is above
// zero when the forecast price is greater than the closing price and less
// than zero if it is below.
//
// 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
ChandeForecastOscillator(Length, Offset) =>
pos = 0
xLG = linreg(close, Length, Offset)
xCFO = ((close -xLG) * 100) / close
pos := iff(xCFO > 0, 1,
iff(xCFO < 0, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Chande Forecast Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCFO = input(14, minval=1)
Offset = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posChandeForecastOscillator = ChandeForecastOscillator(LengthCFO, Offset)
pos = iff(posReversal123 == 1 and posChandeForecastOscillator == 1 , 1,
iff(posReversal123 == -1 and posChandeForecastOscillator == -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 )