이중 EMA 크로스오버 거래 전략

저자:차오장, 날짜: 2023-10-17 13:56:54
태그:

img

전반적인 설명

이 전략은 입점 및 출구 시기를 결정하기 위해 이중 EMA 라인의 황금 십자 및 죽음의 십자를 사용합니다. 구체적으로, 빠른 EMA 라인이 밑에서 느린 EMA 라인의 위에 넘어가면 긴 진입을 위해 황금 십자 신호가 생성됩니다. 빠른 EMA 라인이 위에서 느린 EMA 라인의 아래에 넘어가면 짧은 진입을 위해 죽음의 십자 신호가 생성됩니다. 이 전략은 간단하고 구현하기가 쉽고 매우 일반적인 거래 전략입니다.

전략 논리

이 전략의 핵심 코드는 다음과 같습니다.

fast = input(25, title="Fast")
slow = input(75, title="Slow") 

matype1=ema(source, fast)
matype2=ema(source, slow)

longCondition = crossover(matype1, matype2)
shortCondition = crossunder(matype1, matype2) 

if (longCondition)
    strategy.entry("Long", strategy.long)
     
if (shortCondition)
    strategy.entry("Short", strategy.short) 

이 전략은 먼저 두 개의 EMA 라인을 설정하고, 빠른 EMA 기간은 25이며 느린 EMA 기간은 75입니다. 두 개의 EMA 라인의 값을 계산합니다. 빠른 EMA가 느린 EMA를 넘으면 longCondition이 true가 됩니다. 빠른 EMA가 느린 EMA를 넘으면 shortCondition이 true가 됩니다. 해당 조건이 true가 되면, 그것은 long 또는 short가 됩니다.

이 전략은 시장 소음을 필터링하기 위해 EMA의 매끄러운 기능을 활용하며, 트렌드 변화를 빠르게 파악할 수 있습니다. 두 EMA 라인 사이의 황금과 죽음의 교차는 상대적으로 강한 거래 신호를 형성하여 거래 위험을 효과적으로 제어 할 수 있습니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 논리는 간단하고 직관적이며 이해하기 쉽고 실행하기 쉽습니다.

  2. EMA는 시장 변동을 완화시키고 잘못된 신호를 효과적으로 필터합니다.

  3. 금색 십자가와 죽음의 십자가는 위험을 통제하기 위한 강력한 거래 신호입니다.

  4. 유연한 EMA 기간은 다른 시장 환경에 적합합니다.

  5. 다른 기술 지표와 쉽게 결합할 수 있습니다.

  6. 더 나은 결과를 위해 EMA 매개 변수를 최적화 할 수 있습니다.

위험 분석

이 전략의 위험은 다음과 같습니다.

  1. EMA가 자주 교차하기 때문에 범위 제한 시장에서 빈번한 비효율 신호.

  2. EMA가 뒤떨어지면 단기적인 기회를 놓칠 수 있습니다.

  3. EMA 크로스오버만으로는 트렌드 반전을 식별할 수 없으며 수익 잠재력을 제한합니다.

  4. 고정된 EMA 기간은 시장 변화에 적응할 수 없습니다.

  5. 상당한 자본이 필요하고, 그렇지 않으면 위험을 증가시킵니다.

  6. 엄격한 스톱 로즈가 필요합니다. 그렇지 않으면 단 1회 손실이 엄청나게 될 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 다른 시장 조건에 맞게 EMA 기간을 최적화하십시오.

  2. 신호 품질을 향상시키기 위해 MACD, 볼링거 밴드 같은 다른 필터를 추가합니다.

  3. 비효율적인 거래를 줄이기 위해 ATR, ADX와 같은 트렌드 판단 지표를 추가합니다.

  4. 트렌드 방향을 결정하기 위해 여러 시간 프레임 분석을 포함합니다.

  5. 기계 학습을 사용하여 동적으로 EMA 기간을 최적화합니다.

  6. 리스크를 통제하기 위해 포지션 사이즈를 최적화하십시오.

  7. 단일 손실을 제한하기 위해 스톱 로스 전략을 최적화하십시오.

요약

이 전략은 EMA의 이중 황금 십자가와 죽음의 십자가를 거래 신호로 사용하여 고전적인 트렌드 다음 전략을 형성합니다. 간단하고 쉽게 구현할 수 있으며 다른 지표와 결합하여 트렌드 판단에 대한 상대적으로 낮은 요구 사항이있는 투자자에게 적합합니다. 그러나 또한 이익 제한과 위험이 있으며, 다른 시장 환경에 대한 적절한 최적화를 요구합니다. 전반적으로 전략 개발 및 심도있는 연구에 훌륭한 기반을 제공합니다.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 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/
// Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars

//@version=4
strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true)

matype = input("ema")
hidema = input(false)
sourcetype = input(close, title="Source Type")
source=close
 
// STEP 1:
// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=231)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12) 
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

fast = input(25, title="Fast")
slow = input(75, title="Slow")

matype1=ema(source, fast)
matype2=ema(source, slow)


signalcolor = source > matype2 ? color.blue : color.red
signal = cross(fast, slow) 



hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA")
yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA")
//kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme")
 

longCondition = crossover(matype1, matype2)
if (afterStartDate and longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(matype1, matype2)
if (afterStartDate and shortCondition)
    strategy.entry("Short", strategy.short)
    

//--------------------------------------------------------

//volume based color bars
length=input(21, "length", minval=1)
avrg=sma(volume,length)

vold1 = volume > avrg*1.5 and close<open
vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open
vold3 = volume < avrg *0.5 and close<open

volu1 = volume > avrg*1.5 and close>open
volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open
volu3 = volume< avrg*0.5 and close>open

cold1=#800000
cold2=#FF0000
cold3=color.orange

colu1=#006400
colu2=color.lime
colu3=#7FFFD4

ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na

barcolor(ac)

더 많은