
이 전략은 MACD 지표에 기반한 복합적인 양적 거래 전략이다. MACD, KDJ 등 여러 지표를 종합적으로 사용하여 지표 간의 조합을 통해 거래 신호를 생성한다.
이 전략의 핵심 지표는 MACD。 MACD는 지수 이동 평균을 나타내는 경향 추적 지표。 그것은 빠른 이동 평균 (EMA) 과 느린 이동 평균 (EMA) 으로 구성되어 있다。 빠른 선의 기본 파라미터는 12이고, 느린 선의 기본 파라미터는 26。 전략은 두 EMA 선, 즉 DIF。 사이의 차이를 계산하고 DIF에 대해 9 일간의 EMA를 얻습니다. DEA 지표。 DIF 위 DEA를 통과하면 구매 신호를 생성하고, 아래를 통과하면 판매 신호를 생성합니다。
이 전략은 또한 KDJ 지표를 도입했다. KDJ 지표는 K값, D값 및 J값을 포함한다. K값은 무작위값을 나타내고, D값은 K값의 이동 평균이며, J값은 결정값을 나타낸다. KDJ 지표는 시장의 과매매 과매매 상태를 반영한다. J값이 100보다 크면 과매매를 나타내고, 10보다 작으면 과매를 나타낸다. 전략은 KDJ 지표와 결합하여 시장 전환점에서 잘못된 신호를 발산하는 것을 피한다.
이 전략은 MACD와 KDJ와 같은 여러 지표를 통합하여 시장 소음을 효과적으로 필터링하여 트렌드 방향을 식별 할 수 있습니다. MACD 지표는 단기 가격 변화를 신속하게 포착 할 수 있으며, KDJ 지표는 중기 및 장기적인 트렌드를 확인할 수 있습니다. 둘의 조합은 민첩하고 안정적인 관계를 추구하는 것을 균형 잡을 수 있습니다.
또한, 전략은 시간 선택기를 추가하여 재검토의 시간 범위를 스스로 선택할 수 있습니다. 이것은 전략의 성능을 평가하는 데 더 큰 유연성을 제공합니다.
시장이 장기적으로 흔들릴 때 MACD는 여러 가지 잘못된 신호를 니다. 이 경우 EMA 라인의 파라미터를 적절히 조정하여 일부 소음을 필터링 할 수 있습니다.
KDJ 지표의 파라미터를 잘못 설정하는 것도 결과를 좌우한다. 여러 개의 파라미터를 테스트하여 보다 안정적인 파라미터 조합을 선택할 수 있다.
회귀 시간을 잘못 선택하면 전략 수익을 과대 평가하거나 과소 평가 할 수 있습니다. 테스트를 위해 대표적인 시간 범위를 선택해야합니다.
이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.
손해제도를 늘리십시오. 가격에서 손해제도를 때, 강제적으로 평점 손해를 중지하십시오.
더 많은 지표 필터를 추가하십시오. RSI, 브린 띠와 같은 다른 지표와 결합하면 신호의 정확도를 향상시킬 수 있습니다.
최적화 지표 변수 △ EMA와 KDJ 변수의 조합을 변경하여 최적의 변수를 찾는다 △
기계학습 기술을 이용한 자동 최적화. 신경망을 이용한 전략 변수 훈련 및 최적화.
이 전략은 전형적인 트렌드 추적을 주축으로 한 양적 전략이며, 오버 바이 오버 셀 제어에 부합된다. 이 전략은 여러 지표의 장점을 결합하여 안정성과 민감성을 효과적으로 균형을 잡는다. 지속적인 최적화와 조정으로 전략 적용 시나리오를 더욱 확장하여 장기적으로 안정적인 수익을 얻는다.
/*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
strategy(title="New Renaissance", shorttitle="New Renaissance", overlay=true,initial_capital=10000)
source = close
fastlength=input(12, minval=1)
slowlength=input(26,minval=1)
signallength=input(9,minval=1)
// === Defining the MACD oscillator
fastMA=ema(source,fastlength)
slowMA=ema(source,slowlength)
MACD=fastMA-slowMA
signal=sma(MACD,signallength)
delta=MACD-signal
// === Buy and Sell Signals ===
buy=crossover(MACD, signal)
sell=crossunder(MACD, signal)
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2018, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 31, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2020, title = "Thru Year", type = input.integer, minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy) // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell) // exit long when "within window of time" AND crossunder