该策略通过组合应用8日、13日、21日和55日EMA,在它们出现金叉或死叉时判断多头或空头信号,目的是捕捉中长线趋势。
分别计算8日、13日、21日和55日EMA均线。
当8日、13日、21日EMA全部上穿55日EMA时,产生买入信号。
当8日、13日、21日EMA全部下穿55日EMA时,产生卖出信号。
在金叉时做多入场,死叉时做空入场。
在反向交叉出现时平仓。
多重EMA组合能有效过滤假突破。
55日EMA作为中轴,避免被套。
回测显示最近10年该策略每年都能带来稳定收益。
可视化交叉情况,操作简单,适合新手。
固定参数组合,不同品种和市场需要独立测试优化。
无法有效应对震荡行情,存在频繁止损风险。
没有设置止损,无法控制单次损失。
交易频率可能过高或过低,需要参数调整。
样本期限只有10年,需扩大样本验证稳健性。
测试不同EMA周期的参数组合,寻找最佳匹配。
加入成交量等指标避免假突破。
设置移动止损或固定止损点。
优化仓位大小,降低单笔风险。
在高位做空,低点做多,实现双向交易。
拓展至其他品种和更长时间段进行回测验证。
该策略利用多重EMA交叉判断中长线趋势方向,实现了简单的趋势跟踪。其直观可视化是优点,但存在参数不够优化、止损不完善等问题。需要引入更多技术指标优化参数组合,丰富入场过滤条件,并加入止损来控制风险。此外,还需要通过大时间段和品种的回测不断优化和验证策略,使之成为稳定的可靠趋势跟踪系统。
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 6h
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/
// © ColinMccann18
//@version=4
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// --------------------------------------------------------------RULES------------------------------------------------------------------------------
// - VISUALLY REPRESENTS THE CROSSING OF 8,13,21,55 EMA'S FROM KROWNS PROGRAM
strategy(title="CM EMA Trend Cross STRAT", shorttitle="CM EMA Strat", overlay=true)
ema8 = ema(close,8)
ema13 = ema(close, 13)
ema21 = ema(close, 21)
ema55 = ema(close, 55)
//PLOT
plot(ema8, title="EMA 1",linewidth=2, color=#00eeff)
plot(ema13, title="EMA 2",linewidth=2, color=#fff900)
plot(ema21, title="EMA 3",linewidth=2, color=#42ff0f)
plot(ema55, title="EMA 4",linewidth=2, color=#8b49ff)
//LOGIC---------------------------------------------------------------------------------------------------------------------------------
emacrossover = crossover(ema21, ema55) and ema8 and ema13 > ema55
emacrossunder = crossunder(ema21, ema55) and ema8 and ema13 < ema55
//Long----------------------------------------------------------------------------------------------------------------------------------
longCondition = emacrossover
closelongCondition = emacrossunder
strategy.entry("Long", strategy.long, qty=na, when=longCondition)
strategy.close("Close Long", when=closelongCondition)
//Short----------------------------------------------------------------------------------------------------------------------------------
shortCondition = emacrossunder
closeshortCondition = emacrossover
strategy.entry("Short", strategy.short,qty=na, when=shortCondition)
strategy.close("Close Short", when=closeshortCondition)