3개의 EMA 교차 플러스 Stochastic RSI 전략


생성 날짜: 2023-11-15 10:47:20 마지막으로 수정됨: 2023-11-15 10:47:20
복사: 0 클릭수: 954
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

3개의 EMA 교차 플러스 Stochastic RSI 전략

개요

이것은 여러 지표들을 결합한 트렌드 추적 전략이다. 그것은 동시적으로 3개의 다른 주기적인 EMA, Stochastic RSI, ATR를 사용하여 트렌드 방향을 식별하고 포지션을 구축한다. 빠른 주기적인 EMA에서 느린 주기적인 EMA를 통과할 때 포지션을 더 많이 하고, 스톱로스는 가장 최근의 ATR의 3배 아래에 위치하고, 스톱로스는 가장 최근의 ATR의 2배에 위치한다.

원칙

이 전략은 세 개의 EMA 평균선을 사용한다. 각각 8주기, 14주기, 50주기 EMA이다. 이들은 각각 다른 시간대의 가격 트렌드를 나타낸다. 8주기 EMA에서 14주기 EMA를 통과하고, 14주기 EMA에서 50주기 EMA를 통과하면, 현재 트렌드 시작 단계에 있음을 나타내고, 다중 포지션을 구축하는 것을 선택할 수 있다.

스토카스틱 RSI 지표는 RSI와 스토카스틱 계산 방법을 결합하여 과매매 과매매 현상을 발견 할 수 있습니다. 스토카스틱 RSI의 K 라인이 아래에서 D 라인을 통과하면 시장이 과매매 상태에서 시선으로 전환하고 있음을 나타냅니다.

ATR은 근래의 변동 범위를 나타냅니다. 전략은 ATR의 3배를 중지 거리로, 2배를 중지 거리로 사용하여 수익을 잠금하고 위험을 제어합니다.

장점

  • EMA 평균선을 사용하면 가격 데이터의 일부 잡음을 제거하고 트렌드 방향을 식별 할 수 있습니다.
  • 스토카스틱 RSI 지표는 역전 기회를 발견할 수 있습니다.
  • ATR 다이내믹 트래킹 스톱로스 스톱은 시장의 변동에 따라 합리적인 수익 손실 거리를 설정할 수 있습니다.

위험

  • 다중 지표 조합은 잘못된 신호를 나타낼 수 있습니다.
  • 고정된 스톱 스 배수는 시장의 변화에 적응할 수 없습니다.
  • 짧은 주기가 얼마나 역효과에 취약한지

EMA 주기 변수를 조정하여 지표의 민감도를 최적화할 수 있다. 또한 ATR의 스톱 스 배수를 조정할 수 있으며, 시장 상황에 따라 적절한 변수를 설정할 수 있다. 또한, 다른 지표 보조 판단을 추가하는 것을 고려할 수 있으며, 잘못된 신호가 발생하지 않도록 한다.

최적화 방향

  • EMA 주기 변수를 조정하여 지표의 민감도를 최적화합니다.
  • ATR 중지 손실 중지 배수를 조정할 수 있습니다.
  • 다른 지표로 판단하여 잘못된 신호를 피하십시오.

요약하다

이 전략은 종합적으로 트렌드 방향을 고려하고, 오버 바이 오버 셀 현상과 변동 범위를 입력 시점을 식별하기 위해 사용합니다. EMA 평균선과 Stochastic 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)