双均线交叉策略是一种比较简单的量化交易策略。它通过计算最近7根K线的平均收盘价和20根K线的平均收盘价,当短期均线从下方上穿长期均线时做多,当短期均线从上方下穿长期均线时做空,采取此类操作可以捕捉市场中期趋势的转折点。
该策略的核心逻辑是计算最近7根K线(不包含当前K线)的平均收盘价作为短期均线,计算20根K线(不包含最近7根K线)的平均收盘价作为长期均线。当短期均线从下方上穿长期均线时,表示市场由跌转涨,做多;当短期均线从上方下穿长期均线时,表示市场由涨转跌,做空。
做多信号触发后,按整个账户资金的数量开仓做多;做空信号触发后,按做多头寸的数量平掉做多头寸再按该数量开仓做空。每次开仓后的头寸将持有20-25根K线,在此期间如果出现亏损将止损一半头寸,如果出现足够的盈利会止盈一半头寸。
这是一个非常简单的双均线交叉策略,它的优势主要体现在:
这是一个较简单的趋势跟踪策略,它也面临一些潜在的风险:
针对上述风险,可以通过以下方式进行优化:
这是一个较为简单的双均线交叉策略,主要可以从以下几个方面进行深入优化:
2.增加其他过滤指标,如量能指标、波动率指标等,避免在震荡市场中产生错误信号;
优化止损止盈策略,测试不同的止损止盈比例,确定最优参数;
测试不同的市场周期,优化持仓时间长度,判断哪些周期该策略效果最好;
增加机器学习算法,通过反向测试不断优化策略参数,使策略更稳定。
本策略是一个较为简单的双均线交叉策略,通过计算不同周期的均线交叉来判断中期趋势转折点。该策略实用性较强,思路简单易于操作。但该策略也存在一定的局限性,主要问题在于无法有效判断市场真实转折点。未来需要从增加过滤指标、优化参数以及加入机器学习等方面不断对该策略进行优化,使其能够在更多类型的市场中稳定获得 Alpha。
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 2h 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/ // © nrathi2211 //@version=5 strategy("Closing Prices", overlay=true) //variables closingB7 = ta.highest(close, 7)[7] closingB14 = ta.highest(close, 7)[20] highB14 = ta.highest(low, 50)[7] capital = 50000 //functions qty_find(float price) => capital / int(price) profit_take() => profit = strategy.opentrades.profit(strategy.opentrades - 1) profit*.95 if(closingB7 < closingB14) if(ta.crossover(close, closingB7)) strategy.entry("long_buy", strategy.long, qty_find(close)) current_profit = strategy.opentrades.profit(strategy.opentrades - 1) if(current_profit < 0) strategy.close("Exit long_buy SL", "long_buy", qty_percent = 50) else if(current_profit < profit_take()) strategy.close("Exit long_buy TP", "long_buy", qty_percent = 50) if(ta.crossunder(close, closingB7)) strategy.exit("long_sell", from_entry = "long_buy", stop = closingB7) plot(closingB7, "cl", color.green, 2) //plot(closingB14, "cl", color.red, 2) plot(highB14, "cl", color.purple, 2)