
이 전략은 EMA 빠른 느린 라인 교차 방식을 채택하여 가격 추세를 추적합니다. 빠른 라인이 아래에서 느린 라인을 통과하면 더 많이하고, 빠른 라인이 위에서 아래에서 느린 라인을 통과하면 평소합니다. 이 전략은 주로 추세가 더 명백한 품종에 적용되며, 추세를 효과적으로 추적하여 초과 수익을 얻을 수 있습니다.
이 전략의 핵심 지표는 EMA의 평균선이다. EMA의 평균선의 계산 공식은:
EMA(t)=C(t)×2/(n+1)+EMA(t-1)×(n-1)/(n+1)
t는 현재 시점이며, C는 현재 시상식 종전 가격이며, n은 변수 N의 값이다. EMA는 무게 가중 인자를 가진 이동 평균 기술 지표이다. EMA는 최신 가격에 더 높은 무게를 부여하여 최신 가격 변화에 더 빠르게 반응한다.
이 전략은 빠른 EMA 평균선과 느린 EMA 평균선을 구성하여, 빠른 선에서 느린 선을 가로질러 구매 신호를 주고, 빠른 선 아래에서 느린 선을 가로질러 판매 신호를 준다. 빠른 선을 가로질러 보면, 가격이 새로운 라운드의 상승을 시작하는 것을 나타내고, 빠른 선 아래에서 가로질러 보면, 가격이 상승하는 경향이 끝나는 것을 나타내고, 하향 회전을 시작하는 것을 나타낸다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략의 주요 위험은 다음과 같습니다.
위와 같은 위험을 줄이기 위해 다음과 같은 최적화 조치를 취할 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이 전략은 전반적으로 비교적 간단한 실용적인 트렌드 추적 전략이다. 이 전략은 EMA 평균선을 사용하여 가격 트렌드를 판단하고, 동작 논리는 명확하고, 구현하기 쉽다. 장점은 변수 조정이 간단하며, 트렌드를 효과적으로 추적할 수 있다는 것이다. 단점은 가짜 신호를 발산하기 쉽다는 것이다. 실제 성능은 재측정보다 약할 수 있다. 다음 단계는 필터 조건, 동적 변수 모델, 구성 등의 측면에서 최적화하여 전략을 더 안정적이고 신뢰할 수 있게 한다.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("EMA交叉策略by GPT",
format = format.inherit,
overlay = true,
default_qty_type= strategy.percent_of_equity,
default_qty_value = 100,
currency = currency.USD,
initial_capital = 1000000)
// 定義回測交易開始和結束時間的變數
start_time = input(title="開始時間", type=input.time, defval=timestamp("01 Jan 2020 00:00 +0000"))
end_time = input(title="結束時間", type=input.time, defval=timestamp("31 Dec 2050 23:59 +0000"))
// 判斷是否在回測交易時間範圍內
in_range = true
// Define input variables
fast_length = input(title="Fast EMA Length", type=input.integer, defval=5)
slow_length = input(title="Slow EMA Length", type=input.integer, defval=20)
// Define EMAs
fast_ema = ema(close, fast_length)
slow_ema = ema(close, slow_length)
// Define buy and sell signals
buy_signal = crossover(fast_ema, slow_ema)
sell_signal = crossunder(fast_ema, slow_ema)
// Buy signal
if in_range and buy_signal
strategy.entry("Buy", strategy.long, when=in_range)
// Sell signal
if in_range and sell_signal
strategy.close("Buy", when=sell_signal)