双均线交叉策略是一种比较简单的量化交易策略。它通过计算最近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)