이것은 여러 지표를 결합한 트렌드 다음 전략이다. 트렌드 방향을 파악하고 포지션을 설정하기 위해 서로 다른 기간, 스토카스틱 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 기간을 조정하여 수행 할 수 있습니다. 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)