리소스 로딩... 로딩...

적응적인 이동 평균과 가중화 이동 평균의 크로스 오버 거래 전략

저자:차오장, 날짜: 2024-01-23 14:13:55
태그:

img

전반적인 설명

이 전략은 이동 평균에 대한 적응 지표 (AIOMA) 및 가중 이동 평균 (WMA) 지표에 기반한 거래 신호를 생성합니다. AIOMA와 WMA 사이의 크로스오버를 기반으로 구매 및 판매 신호를 생성합니다.

전략 이름

AIOMA-WMA 적응적 크로스오버 전략

전략 논리

이 전략은 다음과 같은 주요 구성 요소를 포함합니다.

  1. AIOMA 지표 계산

    • 정해진 길이의 계수 이동 평균 (EMA) 의 일련을 계산합니다.
    • 이 EMA를 연쇄하여 평평한 값을 생성합니다
    • 최종 AIOMA는 마지막 평형 값의 EMA입니다.
  2. WMA 지표 계산

    • 지정된 길이의 WMA를 계산합니다
  3. 신호 생성

    • WMA가 AIOMA 위를 넘을 때 신호를 사
    • WMA가 AIOMA 아래로 넘어가면 신호를 팔자
  4. 거래 논리

    • 구매 신호로 긴 포지션을 입력합니다
    • 판매 신호에 따라 짧은 포지션을 입력합니다
    • 역차선 신호에 가까운 위치

장점

  1. 두 가지 다른 종류의 이동 평균을 사용하면 신호 정확도가 향상됩니다.
  2. AIOMA는 여러 가지 기하급수적인 평형을 통해 잘못된 신호를 감소시킵니다.
  3. 주요 지표인 WMA는 가격 변화에 더 빠르게 반응하여 동향을 조기에 파악합니다.
  4. 간단한 거래 논리, 이해하기 쉽고 구현하기 쉽습니다

위험성

  1. 여러 EMA 평형화로 인한 과도한 지연
  2. WMA는 단기 가격 변동으로 인한 잘못된 신호에 취약합니다.
  3. 손해를 막는 논리가 없어 큰 손실로 이어질 수 있습니다.

매개 변수 최적화, 중지 손실 추가, 다른 지표와 필터링 등을 통해 위험을 줄일 수 있습니다.

개선 영역

  1. 최적 값을 찾기 위해 다른 매개 변수 조합을 테스트
  2. 입시 신호와 함께 트리거 스톱 로스 명령
  3. 변동성 지표를 이용한 신호 필터링
  4. 포지션 사이즈 전략을 포함

결론

이 전략은 AIOMA와 WMA의 강점을 결합하여 트레이딩 신호를 생성하기 위해 크로스오버를 사용합니다. 단일 이동 평균에 비해 신호 품질을 향상시킵니다. 매개 변수 최적화, 스톱 로스 전략, 변동성 필터링 등과 같은 추가 정교화는 견고한 거래 시스템으로 만들 수 있습니다.


/*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"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SDTA

//@version=5
strategy("AIOMA-WMA Strategy", overlay=true)

// Parametreler
aioma_length = input(14, "AIOMA Length")
wma_length = input(21, "WMA Length")

// AIOMA hesaplama
length1 = aioma_length
ema1 = ta.ema(close, length1)
length2 = aioma_length
ema2 = ta.ema(ema1, length2)
length3 = aioma_length
ema3 = ta.ema(ema2, length3)
length4 = aioma_length
ema4 = ta.ema(ema3, length4)
aioma = ta.ema(ema4, aioma_length)

// WMA hesaplama
wma = ta.wma(close, wma_length)

// Kesişim kontrolü
cross_up = ta.crossover(wma, aioma)
cross_down = ta.crossunder(wma, aioma)

// İşlem fonksiyonu
enterTrade(dir, price, signalText, color) =>
    if dir
        strategy.entry("Enter", strategy.long)
        label.new(x = bar_index, y = price, text = signalText, color = color, textcolor = color, style = label.style_label_up, size = size.small, tooltip = "Entry Signal")
    else if not dir
        strategy.entry("Exit", strategy.short)
        label.new(x = bar_index, y = price, text = signalText, color = color, textcolor = color, style = label.style_label_down, size = size.small, tooltip = "Exit Signal")

// Long pozisyon girişi
if cross_up
    enterTrade(true, low, "Buy Signal", color.green)

// Short pozisyon girişi
if cross_down
    enterTrade(false, high, "Sell Signal", color.red)

// Pozisyon kapatma
if cross_up and strategy.position_size > 0
    strategy.close("Enter")
if cross_down and strategy.position_size < 0
    strategy.close("Exit")

// Grafiğe plot
plot(aioma, color=color.blue, linewidth=2, title="AIOMA")
plot(wma, color=color.red, linewidth=2, title="WMA")


더 많은