다중 이동 평균 포괄적 전략

저자:차오장, 날짜: 2023-12-22 11:56:42
태그:

img

전반적인 설명

다중 이동 평균 포괄 전략 (Multiple Moving Average Comprehensive Strategy) 은 매우 다재다능하고 강력한 기술 분석 전략이다. 이 전략은 시장 트렌드에 대한 포괄적인 통찰력을 제공하기 위해 다양한 시간 프레임에 걸쳐 여러 이동 평균을 결합합니다. 이 전략은 잠재적 진입 및 출구 지점을 식별하기 위해 명확한 구매 및 판매 신호를 생성합니다. 또한 사용자가 자신의 거래 선호도와 목표에 따라 이동 평균 길이를 조정할 수 있도록 큰 사용자 정의 기능을 제공합니다.

원칙

이 전략의 핵심은 다양한 기간에 걸쳐 여러 이동 평균을 계산하고 추적하는 것입니다. 특히 10 일, 20 일, 30 일 최대 100 일 이동 평균. 이러한 이동 평균은 지난 10, 20, 30 일 동안의 평균 폐쇄 가격으로 설정됩니다. 예를 들어, 20 일 이동 평균은 지난 20 일 동안의 평균 폐쇄 가격입니다.

오늘날의 폐쇄 가격은 이러한 이동 평균보다 높을 때 구매 신호가 생성됩니다. 오늘날의 폐쇄 가격은 이러한 이동 평균보다 낮을 때 판매 신호가 생성됩니다. 따라서, 신호는 다른 시간 프레임에 걸쳐 모든 이동 평균이 같은 방향으로 가리킬 때만 유발됩니다. 이것은 많은 잡음을 필터링하고 신호를 더 신뢰할 수 있습니다.

장점

  1. 다양한 시장 환경에 적응할 수 있는 여러 시간대에 대한 통찰력을 제공합니다.

  2. 다수의 확인을 통해 소음을 필터링하여 신호를 더 신뢰할 수 있습니다.

  3. 명확한 거래 규칙, 이해하기 쉽고 실행하기 쉽다

  4. 개인 요구 사항을 충족시키기 위해 매우 사용자 정의 할 수 있습니다.

  5. 엔트리, 스톱 손실 및 이익 취득에 대한 지침을 제공하며 위험 관리를 촉진합니다.

위험 과 해결책

  1. 여러 이동 평균이 범위 시장에서 교차하여 불분명한 신호를 초래할 수 있습니다. 이동 평균의 수와 길이를 조정함으로써 이것을 줄일 수 있습니다.

  2. 미래의 가격이 여러 이동 평균을 깨는 확률은 낮으며, 잠재적으로 일부 거래를 놓칠 수 있습니다. 이동 평균의 수는 더 낮은 브레이크 오프 난이도에 줄일 수 있습니다.

  3. 신호는 늦어지고, 트렌드 반전을 조기에 파악할 수 없습니다. MACD와 같은 주요 지표를 통합하면 전환점 판단을 향상시킬 수 있습니다.

  4. 생성 된 거래의 수는 일관성 있는 수익을 위해 낮을 수 있습니다. 이동 평균 길이를 단축하거나 다른 전략/지표와 결합하면 도움이 될 수 있습니다.

최적화 방향

  1. 매개 변수 조정: 최적의 매개 변수 혼합을 찾기 위해 이동 평균의 수와 길이를 조정합니다. 예를 들어 5, 10 및 20 일 조합을 테스트 할 수 있습니다.

  2. 다른 지표를 결합: MACD 및 RSI와 같은 지표를 추가하면 전략 회복력을 향상시킬 수 있습니다. 다른 지표는 상호 보완성을 제공합니다.

  3. 전략 집합: 브레이크아웃 시스템 및 트렌드 추적과 같은 다른 전략과 함께 안정성을 향상시킬 수 있습니다. 다른 전략은 위험을 다양화합니다.

  4. 자동 최적화: 객관적 기능을 극대화하고 최적의 매개 변수를 찾기 위해 다양한 매개 변수 세트를 알고리즘적으로 테스트합니다. 수동 간섭을 줄이고 효율성을 향상시킵니다.

결론

다중 이동 평균 종합 전략은 매우 다재다능하고 강력한 분석 도구입니다. 그것은 다중 시간 규모 통찰력, 신뢰할 수있는 신호, 사용 편의성 및 이해 가능성 및 높은 사용자 정의성을 제공합니다. 동시에, 그것은 더 복잡한 시장 체제에 적응하기 위해 매개 변수 조정, 모델 조합 등을 통해 해결할 수있는 몇 가지 한계를 가지고 있습니다. 전략은 기술 분석 기술 개발을 지원하는 학습 도구뿐만 아니라 개별 요구에 맞춘 조정 후 실질적인 거래 구현을 지원하는 학습 도구로 모두 사용될 수 있습니다.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multiple Moving Average Strategy", overlay=true)

// Function to calculate moving average
get_ma(src, length) =>
    ta.sma(src, length)

// Initialize moving average lengths
ma_length_10 = 10
ma_length_20 = 20
ma_length_30 = 30
ma_length_40 = 40
ma_length_50 = 50
ma_length_60 = 60
ma_length_70 = 70
ma_length_80 = 80
ma_length_90 = 90
ma_length_100 = 100

// Calculate 10-day, 20-day, 30-day, 40-day, 50-day, 60-day, 70-day, 80-day, 90-day, and 100-day moving averages
ma_10 = get_ma(close, ma_length_10)
ma_20 = get_ma(close, ma_length_20)
ma_30 = get_ma(close, ma_length_30)
ma_40 = get_ma(close, ma_length_40)
ma_50 = get_ma(close, ma_length_50)
ma_60 = get_ma(close, ma_length_60)
ma_70 = get_ma(close, ma_length_70)
ma_80 = get_ma(close, ma_length_80)
ma_90 = get_ma(close, ma_length_90)
ma_100 = get_ma(close, ma_length_100)

// Generate Buy/Sell signals for the 10 moving averages
buy_signal = close > ma_10
sell_signal = close < ma_10

// Add conditions for each additional moving average length
buy_signal := buy_signal and (close > get_ma(close, ma_length_20))
sell_signal := sell_signal and (close < get_ma(close, ma_length_20))

buy_signal := buy_signal and (close > get_ma(close, ma_length_30))
sell_signal := sell_signal and (close < get_ma(close, ma_length_30))

buy_signal := buy_signal and (close > get_ma(close, ma_length_40))
sell_signal := sell_signal and (close < get_ma(close, ma_length_40))

buy_signal := buy_signal and (close > get_ma(close, ma_length_50))
sell_signal := sell_signal and (close < get_ma(close, ma_length_50))

buy_signal := buy_signal and (close > get_ma(close, ma_length_60))
sell_signal := sell_signal and (close < get_ma(close, ma_length_60))

buy_signal := buy_signal and (close > get_ma(close, ma_length_70))
sell_signal := sell_signal and (close < get_ma(close, ma_length_70))

buy_signal := buy_signal and (close > get_ma(close, ma_length_80))
sell_signal := sell_signal and (close < get_ma(close, ma_length_80))

buy_signal := buy_signal and (close > get_ma(close, ma_length_90))
sell_signal := sell_signal and (close < get_ma(close, ma_length_90))

buy_signal := buy_signal and (close > get_ma(close, ma_length_100))
sell_signal := sell_signal and (close < get_ma(close, ma_length_100))

// Plot Buy/Sell signals on the chart
plotshape(buy_signal, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(sell_signal, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Execute long buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.entry("Buy", strategy.long)

// Execute sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.close("Buy")

// Execute short sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Execute buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.close("Sell")

// Plot closing price and moving averages on the chart
plot(close, title="Close", color=color.blue)
plot(ma_10, title="MA 10", color=color.orange)
plot(ma_20, title="MA 20", color=color.purple)
plot(ma_30, title="MA 30", color=color.blue)
plot(ma_40, title="MA 40", color=color.red)
plot(ma_50, title="MA 50", color=color.green)
plot(ma_60, title="MA 60", color=color.yellow)
plot(ma_70, title="MA 70", color=color.fuchsia)
plot(ma_80, title="MA 80", color=color.gray)
plot(ma_90, title="MA 90", color=color.teal)
plot(ma_100, title="MA 100", color=color.maroon)


더 많은