EMA 촛불 폐쇄 전략

저자:차오장, 날짜: 2024-01-29 16:02:08
태그:

img

전반적인 설명

이 전략은 이동 평균의 황금 십자 및 죽은 십자 기반의 거래 신호를 생성합니다. 단기, 중장기 및 장기적인 다른 매개 변수 설정을 가진 세 개의 이동 평균을 통합합니다. 이 세 가지 MAs 사이의 높이의 관계를 비교함으로써 시장의 상승 / 하락 상태를 결정하고 거래 신호를 생성합니다.

전략 원칙

이 전략은 단기 간단한 이동 평균, 중장기 가중 이동 평균 및 장기 지수 이동 평균으로 세 개의 이동 평균 라인을 설정합니다. 구체적으로 1 기간 SMA, 20 기간 WMA 및 25 기간 EMA를 설정합니다.

단기 SMA 라인이 중장기 WMA 라인을 상향으로 넘어가고 종료 가격도 WMA 라인보다 높을 때, 시장이 상향으로 반전되고 상승 신호를 형성한다는 것을 나타냅니다. 단기 SMA가 중장기 WMA 이하로 넘어가거나 종료 가격이 WMA보다 낮을 때, 하향 신호를 제공합니다. 따라서이 전략은 세 MAs의 높기와 크로스오버를 비교하여 시장의 상승 / 하락 상태를 판단합니다.

이점 분석

이 전략은 단기, 중기 및 장기간에 걸쳐 세 가지 MAs를 통합하여 다른 주기의 시장 변화에 반응하고 트렌드를 포착하는 정확도를 향상시킬 수 있습니다. 특히 중기 WMA는 시장 소음을 필터링하는 데 더 나은 효과를 가지고 있으며 잘못된 신호를 효과적으로 피합니다. 또한, 전략은 SMA의 상승 신호와 폐쇄 가격이 높은 일관성을 달성 할 때만 긴 신호를 보내며, 이는 윙사우를 방지하고 모든 진입을 효율적으로 보장합니다.

위험 분석

이 전략은 잘못된 신호의 위험을 가지고 있다. 단기 SMA가 잘못된 신호를 생성할 때, SMA 라인에 대한 전략의 엄격한 의존성으로 인해 불필요한 손실이 발생할 수 있다. 또한, 전략은 매개 변수에 민감하다. 매개 변수가 범위에 묶인 시장에서 잘못 설정되면 많은 잘못된 거래가 유발될 수 있다.

이러한 위험을 방지하기 위해 MA 길이를 조정하고 거래 조건을 적절히 완화하고 단일 손실을 제한하기 위해 스톱 로스를 설정하는 것이 좋습니다. 시장 추세가 불분명하면 전략을 일시적으로 중단 할 수 있습니다.

최적화 방향

전략은 다음 측면에서 최적화 될 수 있습니다:

  1. 정확성을 높이기 위해 KC와 같은 더 많은 유형의 MA를 통합하여 지표 포트폴리오를 형성합니다.

  2. 높은 볼륨과 함께 브레이크오웃과 같은 볼륨 요소를 추가

  3. 불안정한 시장에서 실패를 피하기 위해 변동성 지표를 결합

  4. 매개 변수를 훈련하고 최적화하기 위해 기계 학습을 사용

결론

이 전략은 세 개의 MAs와 폐쇄 가격 사이의 교차 및 높이의 관계에 기초하여 시장 상승/하락 상태를 결정합니다. 다른 용어의 MAs를 결합함으로써 트렌드를 효과적으로 발견하고 신호가 고품질입니다. 적절한 매개 변수 조정 및 더 많은 보조 지표를 도입하면 전략이 관련성과 안정성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Candle Close Strategy KHANH 11/11/2023", overlay=true, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.0000005, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len1 = input.int(1, title="SMA #1 Length", minval=1)
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.rgb(120, 123, 134, 100) : color.rgb(120, 123, 134, 100), linewidth=1)

len2 = input.int(20, title="HMA #2 Length", minval=1)
src2 = input(close, title="HMA Source #2")
out2 = ta.hma(src2, len2)
plot(out2, title="HMA #2", color=close >= out2 ? color.rgb(253, 255, 254, 100) : color.rgb(255, 255, 255, 100), linewidth=1)

len3 = input.int(25, title="EMA #3 Length", minval=1)
src3 = input(close, title="EMA Source #3")
out3 = ta.ema(src3, len3)
plot(out3, title="EMA #3", color=close >= out3 ? color.blue : color.blue, linewidth=1)

// Define the long condition
longCondition = (out1 > out2 and close > out2)

// Define the short condition
shortCondition = (out1 < out2 or close < out2)

// Entry conditions
if (longCondition)
    strategy.entry("Long",strategy.long)
else if (shortCondition)
    strategy.entry("Short", strategy.short)

// Trade channel plot
PeriodLookBack = input(55, title="Period Look Back")
xHighest55 = request.security(syminfo.tickerid, timeframe.period, ta.highest(PeriodLookBack))
xLowest55 = request.security(syminfo.tickerid, timeframe.period, ta.lowest(PeriodLookBack))
plot(xHighest55[1], color=color.red, title="HH")
plot(xLowest55[1], color=color.green, title="LL")



//@version=5
//indicator("Custom Moving Averages", shorttitle="CMA", overlay=true)

shortLength = input(defval=40, title="Short Length")
longLength = input(defval=80, title="Long Length")

// Sử dụng khung thời gian của biểu đồ đang sử dụng thay vì cố định là "D"
shortTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, shortLength))
shortBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, shortLength))

longTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, longLength))
longBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, longLength))

shortAverageLine = (shortTopBorder + shortBottomBorder) / 2
longAverageLine = (longTopBorder + longBottomBorder) / 2

plot(shortAverageLine, color=color.new(#fc0000, 0))
plot(longAverageLine, color=color.new(#01ff27, 0))


더 많은