
트리플 EMA 중첩 돌파 전략은 트리플 지수 이동 평균 지표를 사용하여 시장 경향 방향을 판단하고, 트렌드 돌파점에서 입주를 한다. 이 전략은 동시에 K선 형태 판단 신호를 우수하다.
이 전략은 다음과 같은 몇 가지 원칙에 기초하고 있습니다.
세 개의 다른 주기적인 EMA 라인을 사용 하 여 ((200 일 일, 50 일 일, 20 일 일), 시장의 큰 추세, 중기 추세 및 단기 추세를 판단 .
단기 트렌드 EMA ((20일선) 이 상향으로 중간 EMA ((50일선) 을 돌파할 때 구매 신호를 생성하고, 하향으로 돌파할 때 판매 신호를 생성한다.
K선 형태를 결합하여, 돌파 신호의 신뢰성을 판단한다. K선 2호선의 종전 가격이 전날의 최고 가격 (최저 가격) 보다 높고 (최저 가격) 보다 낮을 때만, 신뢰할 수 있는 돌파로 간주된다.
정지 지점을 설정하여 합리적인 변동 범위를 초과하는 위험을 피하십시오.
여러 EMA 지표를 사용하여 추세를 판단하여 판단의 정확성을 향상시킵니다.
K선 형태 필터링과 함께 잘못된 신호를 차단하여 불필요한 거래 위험을 방지한다.
단위 손실을 효과적으로 제어하기 위해 스톱 스톱 지점을 설정하십시오.
EMA 지표는 불안정한 상황에서 시장의 움직임을 효과적으로 판단할 수 없는 잘못된 신호를 많이 낸다.
단일 지표 조합은 간단하고 복잡한 상황에 대한 판단은 좋지 않다.
거래비용을 고려하지 않고서는 높은 수수료 시장에서 수익을 낼 수 없습니다.
MACD, KDJ 등의 다른 지표들을 도입하여 지표 포지션을 형성하여 판단 정확도를 높일 수 있다.
다양한 품종, 주기 파라미터에 따라 테스트를 최적화하여 정책 파라미터를 그 품종 특성에 더 잘 맞게 할 수 있다.
거래량 지표를 도입하여 잘못된 신호의 낮은 양을 방지할 수 있습니다.
트리플 EMA 중첩 돌파 전략 전체적인 아이디어는 명확하고 이해하기 쉽다. EMA를 통해 시장의 주력 트렌드를 판단하고 트렌드가 변할 때 진입 시점을 찾는다. 그러나 이 전략은 한계가 있으며 복잡한 상황을 잘 처리 할 수 없으며, 다른 지표 조합과 함께 사용하는 것이 권장되며, 파라미터를 최적화하여 보다 광범위한 시장 환경에 적응한다.
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)
entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")
stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")
get_level(level, level100, level0) =>
level * (level100 - level0) + level0
buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]
if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
l = label.new(bar_index, na)
entryPrice1 = get_level(entryLevel1, high[0], low[2])
entryPrice2 = get_level(entryLevel2, high[0], low[2])
entryPrice3 = get_level(entryLevel3, high[0], low[2])
exitPrice = get_level(tpLevel, high[0], low[2])
stopPrice = get_level(stopLevel, high[0], low[2])
strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)
label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
label.set_color(l, color.green)
label.set_yloc(l, yloc.belowbar)
label.set_style(l, label.style_label_up)
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
a = label.new(bar_index, na)
entryPrice1 = get_level(entryLevel1, low[0], high[2])
entryPrice2 = get_level(entryLevel2, low[0], high[2])
entryPrice3 = get_level(entryLevel3, low[0], high[2])
exitPrice = get_level(tpLevel, low[0], high[2])
stopPrice = get_level(stopLevel,low[0], high[2])
strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice)
strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice)
label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
label.set_color(a, color.red)
label.set_yloc(a, yloc.abovebar)
label.set_style(a, label.style_label_down)