这个策略利用九日均线和二十日均线的交叉来判断趋势方向,以此制定买入和卖出策略。它综合了移动均线、K线和量价指标,是一个典型的短线交易策略。
这是一个基于九日均线和二十日均线交叉的简单趋势跟随策略。具体来说,它包括以下几个部分:
设置K线的颜色。当今日收盘价高于昨日时,K线设为绿色;当今日收盘价低于昨日时,K线设为红色。
设置九日均线的颜色。当九日均线上涨且二十日均线也上涨时,九日均线设置为绿色;当九日均线下跌且九日均线也下跌时,设置为红色;其余情况设置为黑色。
设置二十日均线的颜色。当二十日均线上涨时设置为黑色,下跌时设置为黑色,其余不变。
绘制二百日均线,设置为深蓝色。
绘制九日均线和二十日均线的交叉点,设置为洋红色。
绘制成交量加权平均价(VWAP),设置为白色。
当九日均线上穿二十日均线时,做多;当九日均线下穿二十日均线时,做空。
以上部分综合运用了均线、K线、交叉点和量价指标来判断市场趋势和信号,是一个典型的技术分析策略。
这是一个简单实用的短线策略,具有以下几个优势:
操作简单,容易掌握。仅需要观察两个均线的关系即可。
回撤较小,适合短线操作。九日和二十日均线具有一定的平滑性,可以减少短线市场噪音的影响。
容易发现趋势信号。均线交叉是明确的趋势转折信号,不易错过。
综合多种技术指标,提高决策质量。结合K线、均线和量价指标,可以更全面判断趋势方向。
实现代码简洁,容易测试和优化。MQL4语言可以快速实现该策略逻辑,便于参数调整。
可适用于不同品种和周期。股票、外汇、数字货币等只要有OHLC数据都可以运用该策略。
尽管该策略有一定优势,但也存在以下风险:
九日和二十日均线参数需要优化。在不同市场周期下效果可能会有较大差异。
容易产生假突破和回调。均线交叉信号可能会被迅速抹平。
无法处理趋势震荡市。当市场长期处于无明确趋势时,该策略会产生频繁交易亏损。
需承担震荡调整风险。如果发生错误的做空,震荡行情可能导致亏损加剧。
无法响应突发重大消息。该策略完全依赖历史K线,无法考虑重大消息对价格的影响。
针对上述风险,可以考虑适当调整持仓比例,使用止损策略,优化参数,或与其他因子结合使用。
该策略可以从以下几个方面进行优化:
优化均线参数,找到最佳周期组合。可以尝试不同的短期和中期均线周期,寻找最匹配的组合。
增加其他指标过滤Signals,如MACD,KD,布林带等。可以减少假信号。
增加止损策略。设定移动止损或指数移动止损,可以控制单笔亏损。
结合趋势过滤器操作。只在趋势明显时参与交易,避免震荡市场。
优化资金管理策略。设置仓位大小、止损幅度、追踪止损等细节,可以提高策略稳定性。
测试不同品种和周期下的数据。调整参数,使策略更具鲁棒性。
增加机器学习等高级技术。使用RNN,LSTM等方法进行特征工程和参数优化。
该策略整体而言是一个简单实用的短期趋势跟随策略。它使用均线交叉判定趋势方向,结合K线、均线和量价指标进行决策,可以有效识别趋势信号。但该策略也存在一些风险,需要对参数、止损和资金管理进行优化,才能长期稳定运用。机器学习等新技术也可以提升策略的效果。总体来说,该策略为量化交易提供了一个简单可靠的思路,值得研究和应用。
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=1
strategy("Dieyson daytrade EMA 9+20+200+VWAP and bar & line color", overlay=true)
//bar color rules
Dgbar = close>close[1] and ema(close,20)>ema(close[1],20)
Drbar = close<close[1] and ema(close,20)<ema(close[1],20)
//Barcolors
barcolor(Dgbar ? green : na)
barcolor(Drbar ? red : na)
//MM09 Colorful
MMgreen9 = ema(close,9)>ema(close[1],9) and ema(close,20)>ema(close[1],20)
MMred9 = ema(close,9)<ema(close[1],9) and ema(close,9)<ema(close[1],9)
col8 = (MMgreen9 ? color(green,0) : na)
col28 = (MMred9 ? color(red,0) : na)
col38 = (not MMgreen9 and not MMred9 ? color(black,0) : na)
plot(ema(close,9), color=col8, style=line, linewidth=2)
plot(ema(close,9), color=col28, style=line, linewidth=2)
plot(ema(close,9), color=col38, style=line, linewidth=2)
//MM20 Colorful
MMgreen = ema(close,20)>ema(close[1],20)
MMred = ema(close,20)<ema(close[1],20)
col = (MMgreen ? color(black,0) : na)
col2 = (MMred ? color(black,0) : na)
col3 = (not MMgreen and not MMred ? color(black,0) : na)
col4 = color(navy,0)
plot(ema(close,20), color=col, style=line, linewidth=1)
plot(ema(close,20), color=col2, style=line, linewidth=1)
plot(ema(close,20), color=col3, style=line, linewidth=1)
plot(ema(close,200), color=col4, style=line, linewidth=3)
plot(cross(ema(close,9), ema(close,20)) ? ema(close,9) : na, style = cross,color=fuchsia, transp=0, linewidth = 4)
//plot(cross(ema(close,9), ema(close,200)) ? ema(close,9) : na, style = cross, color=fuchsia, transp=0,linewidth = 4)
colorvwap = color(white,0)
plot(vwap, color=colorvwap, style=line, linewidth=1)
c = crossover(ema(close,9), ema(close,20)) and ema(close,9) > ema(close,20)
v = crossunder(ema(close,9), ema(close,20))
strategy.entry("COMPRA", strategy.long,when=c)
strategy.entry("VENDA", strategy.short,when=v)