전략에 따른 ATR 지표 트렌드와 결합된 이중 이동 평균 오차

저자:차오장, 날짜: 2023-11-16 11:25:23
태그:

img

전반적인 설명

이 전략은 시장 변동성을 판단하기 위해 ATR 지표와 결합하여 이중 EMA 이동 평균에 의해 형성된 황금 십자 및 죽은 십자 신호를 사용하여 낮은 구매-높은 판매 트렌드를 따르는 전략을 구현합니다. 빠른 선이 느린 선 위에 넘어가고 ATR 지표가 전날보다 낮을 때, 그것은 길게 갈 상승 신호로 간주됩니다. 빠른 선이 느린 선 아래에 넘어가고 ATR 지표가 전날보다 높을 때, 그것은 짧게 갈 하락 신호로 간주됩니다.

전략 논리

  1. 길이 20과 55의 이중 EMA 이동 평균을 사용하십시오. 빠른 선이 느린 선 위에 넘어가 황금색 십자가를 생성하면 상승 신호로 간주됩니다. 빠른 선이 느린 선 아래에 넘어가 죽은 십자가를 생성하면 하향 신호로 간주됩니다.

  2. 길이의 ATR 지표를 사용하십시오. ATR 지표는 시장의 변동성과 위험 수준을 반영합니다. ATR이 전날보다 낮을 때 시장 변동성이 약화되고 장기간 거래가 적합하다는 것을 나타냅니다. ATR이 전날보다 높을 때 시장 변동성이 증가하고 단축하는 것이 적합하다는 것을 나타냅니다.

  3. 빠른 선 금이 느린 선을 넘어서 ATR이 전날보다 낮을 때만 장거리. 빠른 선 죽은 선이 느린 선을 넘어서 ATR이 전날보다 높을 때만 단축하십시오. 시장 변동성이 높을 때 개입하는 것을 피합니다.

  4. ATR 지표는 또한 스톱 로스 및 영리 수준을 설정하는 데 사용됩니다. 스톱 로스는 현재 가격에서 마이너스 ATR을 스톱 로스 곱으로 설정합니다. 이윤을 취하는 것은 현재 가격과 ATR을 영리 곱으로 설정합니다.

  5. 기본 스톱 로스 배수는 3xATR이고 기본 취익 배수는 3xATR입니다. 이것은 스톱 로스와 취익이 시장 변동성을 동적으로 따라갈 수 있도록합니다.

전략 의 장점

  1. 이중 이동 평균 시스템을 사용하면 장기/단기 상태를 더 강력하게 확인 할 수 있습니다. 시장에서 자주 발생하는 잘못된 파업으로 오해되는 것을 피합니다.

  2. ATR 지표를 도입하면 변동성이 낮을 때만 전략이 작동 할 수 있습니다. 이것은 많은 잘못된 신호를 필터링하고 시스템 위험을 줄입니다.

  3. 동적 ATR 스톱 손실/이익 취득 방식은 시장 변동성 수준에 따라 스톱 및 타겟을 설정할 수 있습니다. 이것은 스톱이 너무 가깝거나 타겟이 너무 게되는 것을 방지합니다.

  4. 이동 평균 크로스오버를 추가 출구 메커니즘으로 설정할 수 있습니다. 이것은 시스템의 수익성을 더욱 최적화 할 수 있습니다.

  5. 동적 스톱 로스 및 ATR에 기반한 이익 취득 수준은 트렌드 거래 논리와 더 잘 어울립니다. 스톱 로스는 너무 민감하지 않으며 이익 취득은 너무 느슨하지 않습니다.

전략 의 위험

  1. 이중 이동 평균은 신호에 약간의 지연이 있습니다. 이것은 더 강한 단기 트렌드를 놓칠 수 있습니다.

  2. 변동성이 높을 때 ATR는 상승하고 진입 기회를 놓칠 수 있습니다. ATR 매개 변수는 그에 따라 조정해야합니다.

  3. 긴 홀딩 기간 동안, 스톱 로스는 너무 가까이 갈 수 있습니다. 트렌드 강도에 따라 느려져야 합니다.

  4. 이동평균은 불안정한 시장에서 좋지 않은 성과를 내고 있습니다. 확인을 위해 다른 지표가 필요합니다.

  5. ATR 매개 변수는 다른 제품과 시간 프레임에 따라 조정해야합니다. 잘못된 매개 변수는 성능에 부정적인 영향을 줄 것입니다.

개선 할 수 있는 분야

  1. 다른 길이 이동 평균 조합을 테스트하여 제품의 트렌드 특성에 맞는 매개 변수를 찾습니다.

  2. MACD, KD와 같은 다른 지표를 통합하여 이동 평균 크로스오버 신호를 확인하고 Entscheidungssicherheit을 향상시킵니다.

  3. ATR 매개 변수를 백트테스팅을 통해 최적화하여 제품의 변동성 특성에 더 잘 대응합니다.

  4. 트렌드 강도에 따라 동적으로 스톱 로스/프로피트 취득을 조정할 수 있도록 ATR 곱셈 인수를 조절할 수 있도록 합니다.

  5. 트렌드 강도 지표를 포함하여 약한 트렌드에서 스톱 로스 요구 사항을 줄이고 강한 트렌드에서 수익을 증가시킵니다.

요약

이 전략은 상대적으로 완전한 트렌드 다음 시스템을 형성하기 위해 이중 EMA의 트렌드 판단과 ATR 변동성 지표의 위험 통제를 통합합니다. 최적화의 초점은 이동 평균과 ATR 매개 변수를 제품 특성에 맞추기 위해 조정하고, 동적 스톱 손실/이익을 취하는 메커니즘을 설계하여 트렌드 힘의 변화를 따라가기 위해입니다. 매개 변수 및 논리 최적화로, 이 전략은 훌륭한 트렌드 다음 전략이 될 수 있습니다.


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

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)






더 많은