이 전략은 빠른 라인 EMA와 느린 라인 EMA의 교차 상황을 계산하여 금 교차 및 죽음의 교차 거래 신호를 생성합니다. 빠른 라인 EMA가 느린 라인 EMA를 통과할 때 구매 신호를 생성하고 빠른 라인 EMA가 느린 라인 EMA를 통과할 때 판매 신호를 생성합니다. 이 전략은 움직이는 평균의 장점을 최대한 활용하여 트렌드 시작 단계에서 거래 신호를 생성하여 시장 추세를 효과적으로 추적 할 수 있습니다.
이 전략의 핵심 지표는 빠른 EMA 라인과 느린 EMA 라인이다. 이 전략은 빠른 EMA 라인을 10로 설정하고 느린 EMA 라인을 20로 설정하여 두 가지 다른 매개 변수를 설정합니다. 이 중 10일 EMA 라인은 가격 변화에 더 빨리 반응하고 20일 EMA 라인은 더 느리게 반응합니다. 짧은 EMA 라인을 통과하면 짧은 평균이 긴 평균을 위로 이끌기 시작하여 거래 신호를 생성합니다.
빠른 EMA 라인의 교차 원칙을 통해, 이 전략은 시장 트렌드의 전환 시기를 충분히 포착하여 적절한 시기에 거래 신호를 생성할 수 있다. 동시에, EMA 지표 자체는 파오지 신호를 필터링하는 능력으로, 시장의 불안정 상태에서 빈번하게 포스팅을 피한다. 이것은 이 전략이 잘못된 거래를 줄이는 동시에 시장 전환점을 포착할 수 있게 해 주며, 높은 수익성을 가지고 있다.
상기 위험에 대한 최적화는 추가 지표의 도입으로 이루어질 수 있다. 예를 들어 거래 필터링 조건을 증대시키는 것, MACD 지표와 결합하여 잘못된 신호를 피하는 것, 적응적인 EMA 가속 지표의 응답 속도를 사용하는 것 등이다. 또한 합리적인 중지 손실과 적극적인 중지 억제도 필요하다.
이 전략의 더 나은 방향은 다음과 같습니다.
이 전략은 이중 EMA의 빠른 느린 라인 교차 원칙을 통해 시장의 중요한 전환점을 포착하고 있으며, 실제 효과는 강하다. 보조 지표와 최적화된 스톱 손실을 결합하여 전략의 안정성을 더욱 강화할 수 있다. 이 전략의 생각은 간단하고 명확하며, 거래자가 학습하고 적용할 가치가 있으며, 확장할 여지가 있고 최적화 가능성이 크다.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Backtest single EMA cross", overlay=true)
qty = input(100000, "Buy quantity")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
#00FF00 : na
testPeriod() => true
ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")
expo = ema(close, ema1)
ma = ema(close, ema2)
avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)
p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)
longCondition = crossover(expo, ma)
shortCondition = crossunder(expo, ma)
if testPeriod()
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)