
이 전략은 이동평균선의 금叉死叉 원칙에 기초하여 거래 신호를 수립한다. 그것은 단기, 중기 및 장기 세 개의 다른 파라미터 세트의 이동평균선을 결합하여, 이 세 개의 평평선의 높고 낮은 관계를 비교하여 시장의 공백 상태를 판단하여 거래 신호를 생성한다.
이 전략은 3개의 이동 평균을 설정한다. 각각 단기간의 간단한 이동 평균, 중기간의 중력 이동 평균, 그리고 장기간의 지수 이동 평균이다. 구체적으로, 각각 길이 1의 SMA 선, 길이 20의 WMA 선, 그리고 길이 25의 EMA 선이 설정된다.
단기 SMA 라인이 중간 WMA 라인을 통과하고 종료 가격이 WMA 라인보다 높을 때, 시장이 아래에서 위쪽으로 역전되어 다단계 신호를 형성한다는 것을 나타냅니다. 단기 SMA 라인이 중간 WMA 라인을 통과하거나 종료 가격이 WMA 라인보다 낮을 때, 공백 신호입니다. 따라서, 이 전략은 세 개의 평균 선의 상승과 하락과 교차 상황을 비교하여 시장의 공백 상태를 판단합니다.
이 전략은 짧은, 중간, 긴 세 개의 다른 평행선을 결합하여 다른 주기의 시장 변화에 반응하여 트렌드를 포착하는 정확도를 향상시킵니다. 특히 중기 WMA는 더 나은 소음 제거 효과를 가지고 있으며 오류 신호를 효과적으로 필터링 할 수 있습니다. 또한, 이 전략은 SMA와 종결 가격의 다중 수표 신호가 높은 일치성을 달성했을 때만 포지션 신호를 발송합니다. 이것은 whipsaws를 피하고 매 입장의 효율성을 보장합니다.
이 전략은 잘못된 통보의 위험이 있을 수 있다. 단기 SMA가 오류 신호를 발생시키면, 이 전략이 SMA 라인의 신호에 엄격하게 의존하기 때문에 불필요한 손실이 발생할 수 있다. 또한, 이 전략은 파라미터에 상대적으로 민감하며, 시장이 흔들림 영역에 들어와 파라미터가 적절하지 않은 설정되면, 많은 잘못된 거래가 발생할 수 있다.
이러한 위험을 방지하기 위해, 평균 선의 길이를 조정하고, 거래 조건을 적절히 완화하고, 단독 손실을 제어하기 위해 스톱을 설정하는 것이 좋습니다. 시장 추세가 명확하지 않은 경우 전략 거래를 일시 중단 할 수도 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
KC선과 같은 더 많은 종류의 평균선 지표를 추가하여 지표 집합을 형성하여 판단의 정확성을 향상시킵니다.
거래량을 증가시키는 요인들, 예를 들어 판매량 돌파구
변동성 지표와 함께, 흔들림의 실패를 피하십시오.
기계 학습과 같은 방법을 사용하여 파라미터를 훈련하고 최적화합니다.
이 전략은 세 개의 평행선의 교차와 종식 가격의 실시간 관계에 따라 시장의 빈 상태를 판단합니다. 간단하고 신뢰할 수 있습니다. 그것은 다양한 길이의 중간선을 결합하여 추세를 효과적으로 발견하고 신호 품질이 높습니다. 적절한 매개 변수를 조정하고 더 많은 보조 지표를 도입함으로써 이 전략은 타겟과 안정성을 더욱 향상시킬 수 있습니다.
/*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))