双重动量策略通过识别股票连续上涨或下跌的K线形态,实现低买高卖的目的。它使用简单的指标判断,易于实现,适用于中短线交易。
该策略主要基于两个指标:上涨K线数量和下跌K线数量。
以上参数可以通过调整 LongEnterAfter、LongExitAfter、ShortEnterAfter 和 ShortExitAfter 来确定具体的交易规则。
该策略捕捉股票价位动量的变化,通过持续监测每日收盘价的涨跌情况来判断进出场时机。当出现指标参数设置的K线形态时,进行相应的买入开仓或卖出平仓操作。
综上,双重动量策略的核心在于识别股价的短期涨跌趋势,以此来确定交易方向和时机。它简单直接,通过参数设置可以调整策略的积极程度。
双重动量策略具有以下优势:
总体来说,双重动量策略适合对股价变化较为敏感,追求高操作频率的投资者。它可以抓住个股的短期运行,获得超额收益。通过调整参数可以控制策略的频率和风险。
双重动量策略也存在以下风险:
为了控制风险,可以考虑以下措施:
该策略可以考虑以下几点进行优化:
增加趋势判断指标,避免趋势结束时的错交易。可以引入MACD、KDJ等指标判断大趋势。
增加成交量判断,在 volume 掉量时避免建仓。
设置移动止损以锁定利润,可以使用ATR至少N倍来跟踪止损。
增加回测参数组合优化,寻找最优参数以提高稳定性。
增加算法交易模块,实现更智能的 order management。
利用机器学习技术发现更有效的交易信号。
总体来说,主要优化方向是提高策略稳定性,控制风险,发掘更有效的alpha。同时,增强算法交易能力也很重要。
双重动量策略通过简单的连续上涨下跌K线判断实现股票选时交易。它易于实现,可以调整参数控制积极程度。主要适合追求短期获利的投资者,尤其适合中小市值股票。同时,也需要注意参数过优化、止损设置、成交量变化等风险,通过优化可以提高策略稳定性。总体来说,双重动量策略是一个高效灵活的量化策略,值得探索其应用价值。
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy(title="simple momentum", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // ==================================== // STUDY AND STRATEGY // Inputs LongEnterAfter = input(title="enter long after X rising blocks", defval=2) LongExitAfter = input(title="exit long after X falling blocks", defval=1) ShortEnterAfter = input(title="enter short after X falling blocks", defval=2) ShortExitAfter = input(title="exit short after X rising blocks", defval=1) // Criteria Valid = change(time) LongEnter = Valid and rising(close, LongEnterAfter) LongExit = Valid and falling(close, LongExitAfter) ShortEnter = Valid and falling(close, ShortEnterAfter) ShortExit = Valid and rising(close, ShortExitAfter) // ==================================== // STRATEGY TradeSinceYear = input(title="trade since year", defval=2017) TradeSinceMonth = input(title="trade since month", defval=1) if year > TradeSinceYear or (year == TradeSinceYear and month >= TradeSinceMonth) strategy.entry("long", strategy.long, when = LongEnter) strategy.close("long", when = LongExit) strategy.entry("short", strategy.short, when = ShortEnter) strategy.close("short", when = ShortExit)