이중 이동 평균 역전 거래 전략

저자:차오장, 날짜: 2023년 11월 10일 11:18:38
태그:

img

전반적인 설명

이 전략은 빠른 및 느린 이동 평균의 황금 십자 및 죽은 십자 기반으로 설계되었습니다. 빠른 MA가 느린 MA보다 높을 때, 길게 가십시오. 빠른 MA가 느린 MA보다 낮을 때, 짧게 가십시오. 이 전략은 중장기 거래에 적합하며 시장의 트렌드 반전을 포착 할 수 있습니다.

전략 논리

이 전략은 빠른 및 느린 라인을 계산하기 위해 기하급수적인 이동 평균 (EMA) 을 사용합니다. 빠른 MA 길이는 10 기간이고 느린 MA 길이는 30 기간입니다. 전략은 먼저 빠른 EMA와 느린 EMA를 계산하고, 그 다음 라인을 그래프화하고 트렌드 방향을 표시하기 위해 다른 색상의 배경을 보여줍니다.

오늘 마감이 빠른 MA보다 높고 빠른 MA는 느린 MA보다 높을 때 배경은 녹색으로 상승 추세를 나타냅니다. 오늘 마감이 빠른 MA보다 낮고 빠른 MA는 느린 MA보다 낮을 때 배경은 빨간색으로 하락 추세를 나타냅니다.

상승 트렌드에서, 빨간 촛불이 있고 어제도 빨간 촛불이 있었다면, 장거리. 300 포인트로 스톱 로스를 설정하고 쇼트 포지션을 닫음으로써 이윤을 취하십시오.

하락 추세에서 녹색 촛불이 있고 어제 또한 녹색 촛불이 있다면, 단축하십시오. 300 포인트로 손실을 중지하고 긴 포지션을 닫음으로써 이익을 취하십시오.

각 방향으로 포지션을 열면, 유지 시간이 1008000000 밀리 초 (약 2주) 를 초과하면, 정체를 방지하기 위해 포지션을 강제로 닫습니다.

이점 분석

  • 이중 EMA 시스템은 시장 소음을 효과적으로 필터링하고 트렌드 반전 지점을 식별할 수 있습니다.
  • 촛불 색상과 결합 된 빠르고 느린 MA는 신뢰할 수있는 입문 신호를 제공합니다.
  • 손실을 멈추고 수익을 취하는 전략은 개별 거래에 대한 손실을 줄입니다.
  • 강제 위치 닫기 메커니즘은 정결에서 엄청난 손실을 피합니다.

위험 분석

  • EMA 시스템은 가격 상승에 덜 민감하며 거래 기회를 놓칠 수 있습니다.
  • 부적절한 빠르고 느린 MA 매개 변수 설정은 잘못된 신호를 일으킬 수 있습니다.
  • 스톱 로스 포인트 가 너무 좁으면 청산 위험 이 증가 합니다. 스톱 로스 포인트 가 너무 넓으면 불필요한 손실 이 발생할 수 있습니다.
  • 부적절한 강제 닫기 시간 설정은 조기 종료 또는 너무 오래 유지로 이어질 수 있습니다.

최적화 방향

  • 빠른 및 느린 MA 길이를 최적화하기 위해 다른 매개 변수에서 EMA 시스템의 수익성을 테스트하십시오.
  • 신호 정확성을 향상시키기 위해 확인을 위해 MACD와 같은 다른 지표를 추가하는 것을 고려하십시오.
  • 일일 부피 변화와 연결 스톱 손실
  • 시장 변동성에 따라 강제 폐쇄 시간을 동적으로 조정합니다.

결론

전체적으로 이 전략은 트렌드 및 촛불 필터에 대한 이중 EMA를 사용하여 잘못된 신호를 피하기 위해 추가 규칙을 사용하여 상당히 균형 잡힌 것입니다. 그러나 EMA 매개 변수 및 스톱 손실 / 이익 규칙은 추가 최적화가 필요합니다. 전체적으로 신뢰할 수있는 트렌드 거래 전략입니다.


/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © yeainshukla

//@version=5


strategy('BuyRedSellGreen4H', overlay = true)
greenCandle = close > open
redCandle = open > close

start  = timestamp(2023,9,18,0,00)
end = timestamp(2023,12,31,0,00)


fastLength = input.int(10, title="Fast Average Length")
slowLength = input.int(30, title="Slow Average Length")

averageData = input.source(close, title="Average Data Source")

// Calculate exponential moving averages
fastAverage = ta.ema(averageData, fastLength)
slowAverage = ta.ema(averageData, slowLength)

// Plot averages
plot(fastAverage, color=color.navy, title="Fast EMA")
plot(slowAverage, color=color.fuchsia, linewidth=2, title="Slow EMA")

// Show the moving average trend with a coloured background
backgroundColor = if close > fastAverage and fastAverage > slowAverage
    color.new(color.green, 85)
else if close < fastAverage and fastAverage < slowAverage
    color.new(color.red, 85)
else
    color.new(color.orange, 90)

bgcolor(backgroundColor, title="EMA Background")


if time >= start and time < end
    if(close < open) 
        if(close[1] < open[1])
            strategy.entry("Enter Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Enter Long")
            strategy.close("Enter Short")

    else
        if(close[1] > open[1])
            strategy.entry("Enter Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Enter Short")
            strategy.close("Enter Long")
    if strategy.position_size < 0 or strategy.position_size > 0// short and long is opened.
        if((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) > 1008000000)
            strategy.close("Enter Short")
            strategy.close("Enter Long")

더 많은