3EMA와 스토카스틱 RSI 전략

저자:차오장, 날짜: 2023-11-15 10:47:20
태그:

img

전반적인 설명

이것은 여러 지표를 결합한 트렌드 다음 전략이다. 트렌드 방향을 파악하고 포지션을 설정하기 위해 서로 다른 기간, 스토카스틱 RSI 및 ATR의 세 개의 EMA를 사용합니다. 더 빠른 EMA가 느린 EMA를 넘을 때 길어집니다. 최근 ATR 값의 3 배에 스톱 로스를 설정하고 최근 ATR의 2 배에 이익을 취합니다.

원칙

이 전략은 8~14~50주기 EMA 라인, 즉 다른 기간 동안의 가격 동향을 나타내는 3개의 EMA 라인을 사용합니다. 8주기 EMA가 14주기 EMA를 넘고 14주기 EMA가 50주기 EMA를 넘으면 상승 추세의 시작을 알리고 긴 지위를 시작할 수 있습니다.

스토카스틱 RSI 지표는 과잉 구매/ 과잉 판매 조건을 식별하기 위해 RSI와 스토카스틱 계산을 통합합니다. 스토카스틱 RSI K 라인이 아래에서 D 라인의 위를 넘을 때 시장이 과잉 판매에서 상승 전망으로 전환하고 있음을 시사하며 긴 지위를 허용합니다.

ATR은 최근 변동성 범위를 나타냅니다. 전략은 수익을 잠금하고 위험을 제어하기 위해 3 배의 ATR을 중지 손실 거리와 2 배의 ATR을 수익 거리로 사용합니다.

장점

  • EMA는 가격 데이터의 소음을 필터링하고 트렌드 방향을 식별합니다.
  • 스토카스틱 RSI는 반전 기회를 식별합니다.
  • ATR는 시장 변동성에 따라 동적으로 스톱 손실/이익 취득을 추적합니다

위험성

  • 여러 가지 지표가 서로 충돌하는 신호를 생성할 수 있습니다.
  • 고정된 스톱 로스/프로프트 취득 비율은 변화하는 시장 조건에 적응할 수 없습니다.
  • 환율에 민감한 단기 로그

최적화는 감수성을 최적화하기 위해 EMA 기간을 조정하여 수행 할 수 있습니다. ATR 비율을 조정할 수 있도록하면 시장 조건에 따라 사용자 정의가 가능합니다. 다른 지표를 추가하면 신호를 검증하고 실수를 피하는 데 도움이됩니다.

강화

  • 감수성을 최적화하기 위해 EMA 기간을 조정합니다.
  • ATR 비율을 조절할 수 있도록
  • 거짓 신호를 피하기 위해 다른 표시기를 추가합니다.

결론

이 전략은 트렌드, 과잉 구매/ 과잉 판매 수준, 그리고 변동성 범위를 고려하여 진입 시기를 파악한다. EMA와 스토카스틱 RSI가 결합되어 트렌드를 효과적으로 식별하고, ATR의 동적 스톱 로스/트랙 노프트는 리스크 통제에 도움이 된다. 매개 변수 조정 및 최적화로, 전략은 신뢰할 수 있는 트렌드 다음 시스템으로 변할 수 있다. 그러나 잘못된 신호와 고정 스톱 로스/트랙 노프트 경고는 주의해야 한다.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 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/
// © FreddieChopin
 
//@version=4
strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
 
// 3x EMA
ema1Length = input(8, "EMA1 Length", minval = 1)
ema2Length = input(14, "EMA2 Length", minval = 1)
ema3Length = input(50, "EMA3 Length", minval = 1)
ema1 = ema(close, ema1Length)
ema2 = ema(close, ema2Length)
ema3 = ema(close, ema3Length)
 
plot(ema1, color = color.green)
plot(ema2, color = color.orange)
plot(ema3, color = color.red)
 
// Stochastic RSI
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
 
// ATR
atrPeriod = input(14, "ATR Period")
takeProfitMultiplier= input(2.0, "Take-profit Multiplier")
stopLossMultiplier= input(3.0, "Stop-loss Multiplier")
atrSeries = atr(atrPeriod)[1]
 
longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d)
strategy.entry("long", strategy.long, when = longCondition)
 
float stopLoss = na
float takeProfit = na
 
if (strategy.position_size > 0)
    if (na(stopLoss[1]))
        stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier
    else
        stopLoss := stopLoss[1]
    if (na(takeProfit[1]))
        takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier
    else
        takeProfit := takeProfit[1]
 
    strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss)
 
plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)

더 많은