이것은 기하급수적인 이동 평균 (EMA) 에 기반한 트렌드 추적 브레이크아웃 전략입니다. 월간, 주간 및 일일 시간 프레임에서 트렌드 방향을 판단하고 일일 차트에서 특정 입출동 행동을 실행합니다.
이윤을 취득하고 손실을 멈추는 기준을 설정합니다.
이 전략은 트렌드를 올바르게 판단할 때 매우 좋은 수익 잠재력을 가지고 있습니다. 잘못된 트렌드 판단과 잘못된 신호를 유발하는 과도한 인회에 주의해야합니다. 한편, 수익 취득 및 스톱 손실 설정을 최적화하는 것이 가장자리를 개선하는 열쇠입니다.
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h 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/ // © the_daily_trader //@version=5 // --------------------- Start of Code --------------------- strategy("Swing Trades Validator", overlay=true, margin_long=100, pyramiding = 0) // Indicator Display Checks TakeProfitPercent = input.float(title="Profit Target %", defval=10, minval=1, step=0.05) StopLossPercent = input.float(title="Stop Loss %", defval=10, minval=1, step=0.05) pullbackchoice = input.bool(false, "Relaxed Entry Rules") // EMAs emaH = ta.ema(close, 8) emaHyest = ta.ema(close[1], 8) emaHyest1 = ta.ema(close[2], 8) emaHyest2 = ta.ema(close[3], 8) emaL = ta.ema(close, 21) emaLyest = ta.ema(close[1], 21) emaLyest1 = ta.ema(close[2], 21) emaLyest2 = ta.ema(close[3], 21) emaf = ta.ema(close, 50) emath = ta.ema(close, 200) emathhigh = ta.ema(high, 200) emathlow = ta.ema(low, 200) emaslowmonthly = request.security(syminfo.tickerid, "M", emaL) // Monthly 21ema emafastmonthly = request.security(syminfo.tickerid, "M", emaH) // Monthly 8ema emaslowweekly = request.security(syminfo.tickerid, "W", emaL) // Weekly 21ema emafastweekly = request.security(syminfo.tickerid, "W", emaH) // Weekly 8ema emaslowdaily = request.security(syminfo.tickerid, "D", emaL) // Daily 21ema emafastdaily = request.security(syminfo.tickerid, "D", emaH) // Daily 8ema emafdaily = request.security(syminfo.tickerid, "D", emaf) // Daily 50ema emathdaily = request.security(syminfo.tickerid, "D", emath) // Daily ema emathdailyhigh = request.security(syminfo.tickerid, "D", emathhigh) // Daily ema High emathdailylow = request.security(syminfo.tickerid, "D", emathlow) // Daily ema Low ema21yest = request.security(syminfo.tickerid, "D", emaLyest) // Daily 21ema 1 day ago ema21yest1 = request.security(syminfo.tickerid, "D", emaLyest1) // Daily 21ema 2 days ago ema21yest2 = request.security(syminfo.tickerid, "D", emaLyest2) // Daily 21ema 3 days ago ema8yest = request.security(syminfo.tickerid, "D", emaHyest) // Daily 8ema 1 day ago ema8yest1 = request.security(syminfo.tickerid, "D", emaHyest1) // Daily 8ema 2 days ago ema8yest2 = request.security(syminfo.tickerid, "D", emaHyest2) // Daily 8ema 3 days ago // Prices monthopen = request.security(syminfo.tickerid, 'M', open, barmerge.gaps_off, barmerge.lookahead_on) monthclose = request.security(syminfo.tickerid, 'M', close, barmerge.gaps_off, barmerge.lookahead_on) weekopen = request.security(syminfo.tickerid, 'W', open, barmerge.gaps_off, barmerge.lookahead_on) weekclose = request.security(syminfo.tickerid, 'W', close, barmerge.gaps_off, barmerge.lookahead_on) dayopen = request.security(syminfo.tickerid, 'D', open, barmerge.gaps_off, barmerge.lookahead_on) dayclose = request.security(syminfo.tickerid, 'D', close, barmerge.gaps_off, barmerge.lookahead_on) threedayhigh = request.security(syminfo.tickerid, 'D', high[3], barmerge.gaps_off, barmerge.lookahead_on) twodayhigh = request.security(syminfo.tickerid, 'D', high[2], barmerge.gaps_off, barmerge.lookahead_on) yesthigh = request.security(syminfo.tickerid, 'D', high[1], barmerge.gaps_off, barmerge.lookahead_on) yestlow = request.security(syminfo.tickerid, 'D', low[1], barmerge.gaps_off, barmerge.lookahead_on) // Conditions monthlybullish = emafastmonthly > emaslowmonthly monthlybullishprice = close > emafastmonthly monthlybullishcandle = monthclose > monthopen weeklybullish = emafastweekly > emaslowweekly weeklybullishprice = close > emafastweekly weeklybullishcandle = weekclose > weekopen dailybullish1 = emafdaily > emathdaily dailybullish2 = emafastdaily > emaslowdaily dailybullishprice = close > emafastdaily dailybullishcandle = dayclose > dayopen ringlow = yestlow <= ema8yest aggropullback = twodayhigh < threedayhigh pullback = (pullbackchoice ? aggropullback : 0) pullbackfailure = dayclose > yesthigh and yesthigh < twodayhigh or pullback emasetup = ema8yest > ema21yest and ema8yest1 > ema21yest1 and ema8yest2 > ema21yest2 // Target Profit and Stop Loss Inputs // Input parameters can be found at the beginning of the code ProfitTarget = (close * (TakeProfitPercent / 100)) / syminfo.mintick StopLoss = (close * (StopLossPercent / 100)) / syminfo.mintick longCondition = monthlybullish and monthlybullishprice and weeklybullish and weeklybullishprice and dailybullish1 and dailybullish2 and dailybullishprice and monthlybullishcandle and weeklybullishcandle and dailybullishcandle and ringlow and pullbackfailure and emasetup if (longCondition) strategy.entry("Long", strategy.long) strategy.exit ("Exit", "Long", profit = ProfitTarget, loss = StopLoss) // strategy.close("Long", qty_percent = 100) // -----------xxxxxxxxxxx------------- End of Code -----------xxxxxxxxxxx---------------