
이것은 여러 지표들을 결합한 트렌드 추적 전략이다. 그것은 동시적으로 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 주기 변수를 조정하여 지표의 민감도를 최적화할 수 있다. 또한 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)