This strategy is a momentum tracking trading system based on price volatility and moving average crossovers. It triggers signals by monitoring price volatility exceeding 1.91% (Black Swan events) and combines EMA144 and EMA169 crossovers to confirm trend direction and exit timing. The strategy is particularly suitable for short-term trading on 1-3 minute timeframes, capable of quickly capturing significant market volatility opportunities.
The core logic consists of two main components:
The strategy enters long positions when detecting upward volatility above 1.91% and short positions for downward volatility. Positions are automatically closed when moving averages cross in the opposite direction to manage risk.
This strategy achieves quick response to market anomalies and trend following by combining volatility monitoring with moving average crossovers. While the strategy design is sound with good risk control mechanisms, traders need to optimize parameters and manage risks according to actual market conditions. It’s recommended to start with small positions in live trading and gradually validate strategy performance across different market environments.
/*backtest start: 2024-12-05 00:00:00 end: 2024-12-12 00:00:00 period: 45m basePeriod: 45m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //黑天鹅警报器,作者():道格拉斯机器人 //适合1分钟-3分钟的k线,发生波动超过百分之二时,自动报警 strategy('黑天鹅警报', overlay=true, initial_capital=10000, currency='USD', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, pyramiding=3) //------------------------------------------- //------------------------------------------- timecondition = timeframe.period == '480' or timeframe.period == '240' or timeframe.period == 'D' or timeframe.period == '720' // Make input options that configure backtest date range startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31) startMonth = input.int(title='Start Month', defval=11, minval=1, maxval=12) startYear = input.int(title='Start Year', defval=2018, minval=1800, maxval=2100) endDate = input.int(title='End Date', defval=1, minval=1, maxval=31) endMonth = input.int(title='End Month', defval=11, minval=1, maxval=12) endYear = input.int(title='End Year', defval=2031, minval=1800, maxval=2100) // Look if the close time of the current bar // falls inside the date range inDateRange = time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0) and time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0) // Inputs a = input(1, title='Key Vaule. \'This changes the sensitivity\'') c = input(10, title='ATR Period') h = input(false, title='Signals from Heikin Ashi Candles') ma60 = ta.sma(close, 60) ema144 = ta.ema(close, 144) ema169 = ta.ema(close, 169) ma20 = ta.sma(close, 20) plot(ema144, color=color.new(color.yellow, 0), title='144') plot(ema169, color=color.new(color.orange, 0), title='169') heitiane = close - open heitiane := math.abs(heitiane) heitiane /= close if inDateRange and heitiane > 0.0191 and close < open // and close>f3 strategy.entry('botsell20', strategy.short, comment='黑天鹅追空' + str.tostring(heitiane)) if ta.crossover(ema144, ema169) strategy.close('botsell20', comment='平空') if inDateRange and heitiane > 0.0191 and close > open // and close>f3 strategy.entry('botbuy20', strategy.long, comment='白天鹅追多' + str.tostring(heitiane)) if ta.crossunder(ema144, ema169) strategy.close('botbuy20', comment='平多')