이중 이동 평균 거래 전략

저자:차오장, 날짜: 2024-02-18 15:11:04
태그:

img

전반적인 설명

이 전략은 이중 이동 평균을 사용하여 거래 신호를 생성합니다. 단기 이동 평균이 장기 이동 평균을 넘을 때 구매 신호를 보내고 역행이 발생하면 판매 신호를 보내줍니다. 이 전략은 유동 평균의 트렌드 추적 능력을 결합하여 가격 추세를 효과적으로 파악하고 트렌드 거래를 구현합니다.

전략 논리

이 전략은 서로 다른 기간을 가진 두 개의 기하급수적 이동 평균 (EMA) 을 활용합니다. EMA1은 9로 설정된 기간을 가진 단기 MA이고, EMA2는 21로 설정된 기간을 가진 장기 MA입니다. 이 전략은 EMA1이 EMA2를 넘을 때 구매 신호를 생성하고, EMA2를 넘을 때 판매 신호를 생성합니다.

이렇게 함으로써 전략은 가격이 새로운 트렌드 방향을 시작할 때 신호를 캡처하기 위해 이동 평균의 트렌드 추적 기능을 활용합니다. 예를 들어, 가격이 하락에서 반등되면 단기 MA는 장기 MA보다 일찍 상승합니다. 위의 교차는 상승 추세가 시작된다는 초기 신호를 생성합니다.

장점

이 전략의 가장 큰 강점은 가격 트렌드를 효과적으로 식별 할 수있는 능력에 있으며, 특히 강한 트렌드 경향을 가진 시장에 적합합니다. 이동 평균 자체는 트렌드를 따르는 훌륭한 특징을 가지고 있으며, 이중 MA 메커니즘은 그것을 더욱 향상시킵니다. 또한, 단일 MA 전략에 비해 이중 MA는 더 많은 잘못된 신호를 필터링하고 신뢰성을 향상시킬 수 있습니다.

단점

가장 큰 위험은 가격이 급격하게 변동할 때, MAs의 후진 성격은 최고의 입문 또는 출구 지점을 놓치는 결과를 초래할 수 있다는 것입니다. 또한 시장이 범위에서 통합되면 더 많은 유효하지 않은 신호가 발생하고 전략의 안정성이 떨어질 수 있습니다.

위험을 완화하기 위해, MA 기간과 같은 매개 변수는 그에 따라 조정되거나 추가 필터를 추가할 수 있습니다. 예를 들어, 변동성 지수를 결합하여 임계치를 설정하고 매우 변동적인 조건에서 거래를 피합니다.

강화

최적화 공간은 주로 다음과 같은 측면에 있습니다.

  1. 최적의 조합을 찾기 위해 MA 기간 매개 변수를 최적화
  2. 신호 신뢰성을 향상시키기 위해 필터로 다른 지표를 추가합니다.
  3. 각기 다른 제품과 시장 체제에 따라 적응 가능한 매개 변수를 설정합니다.
  4. 정밀한 입구점을 결정하기 위해 부피 지표를 결합하십시오.
  5. 스톱 로스 메커니즘을 최적화

요약

이 전략은 트렌드 반전을 감지하기 위한 가격 트렌드 추적 능력의 강점과 함께 이중 지수적인 이동 평균에 의해 신호를 생성합니다. 그러나 MA 지연과 같은 제한이 있습니다. 다음 단계는 신호 품질, 엔트리 타이밍 및 Stop Loss을 다양한 차원에서 향상시키는 것입니다.


/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
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/
// © technicalTruff99446

//@version=4
strategy("AhmetMSA", overlay=true, initial_capital = 10000, commission_value = 0.002, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, calc_on_order_fills = true)
//2. DEĞERDEN SONRA GEÇMİŞ HESAPLAMA DEĞERİ, KOMİSYON ORANI, PARANIN TAMAMI, DEĞERLERİ EKLEMDİ

emaShPD = input (title="EMA KISA PERİYOT", defval=9, minval=1)
emaLngPD = input (title="EMA UZUN PERİYOT", defval=21, minval=1)

//input   DEĞİŞKEN DEĞER ATAMA

ema1 = ema (close,emaShPD)
ema2 = ema (close,emaLngPD)

//EMALAR ARASINI BOYAMA upTrend downTrend
upTrend   = plot (ema1, color=#4DFF00, linewidth=2, title= "EMA KISA", transp=0)
downTrend = plot (ema2, color=#FF0C00, linewidth=3, title= "EMA UZUN", transp=0)
//linewidth ÇİZGİ KALINLIĞI
//title     İSİM VERME

//BACKTESTİN BAŞLANGIÇ TARİHİNİ BELİRLEME
yearin = input(2024, title = "Backtest Başlangıç Tarihi")
//longCondition = crossover(ema1, ema2)
//shortCondition = crossover(ema2, ema1)
buy = crossover(ema1, ema2) and yearin >= year
sell = crossover(ema2, ema1) and yearin >= year
//ta.crossunder  KESİŞİM KODU

//Barları BOYAMA
barbuy  = ema1 >= ema2
barsell = ema2 <  ema1




//AL SAT AŞK KUTUCUKLU EKRANA YAZMA
plotshape(buy, title = "AL AŞK", text = 'AL AŞK', style = shape.labelup, location = location.belowbar, color= color.green,   textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "SAT AŞK", text = 'SAT AŞK', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

//Barları BOYAMA KOŞULU
barcolor(barbuy? #4DFF00: barsell? #FF0C00: #FF0C00)


fill(upTrend, downTrend, color = ema1 >= ema2?#4DFF00 : #FF0C00, transp = 80, title = "bgcolor")

//longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
//shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
//14 GÜNLÜĞÜN KAPANIŞDEĞERİNİN 28 GÜNLÜK KAPANIŞ DEĞERİNİ KESMESİ KOŞULU



if (buy)
    strategy.entry("AL AŞK", strategy.long)


if (sell)
    strategy.entry("SAT AŞK", strategy.short)


더 많은