均线多空平衡交易策略是一种利用不同周期的移动平均线 golden和death交叉进行多空平衡交易的策略。该策略同时结合K线显示颜色、背景颜色、形状标记等多种视觉效果来辅助观察趋势变化。该策略适用于对移动均线理论较为熟悉的中高级交易者。
该策略首先定义了两个用户可调整的参数:活跃均线周期len1和基准均线周期len2。活跃均线周期短,可捕捉短期趋势变化;基准均线周期长,可过滤掉短期市场噪音。用户可以自由选择5种不同类型的移动平均线:EMA指数移动平均线、SMA简单移动平均线、WMA加权移动平均线、DEMA双指数移动平均线和VWMA成交量加权移动平均线。代码通过if逻辑判断用户的选择,计算出不同类型的均线。
当短期均线上穿长期均线时生成金叉信号,开多单;短期均线下穿长期均线时生成死叉信号,开空单。多空平衡交易增加了获利机会。此外,K线的颜色也显示了目前的多空趋势情况。
形状标记直观显示了金叉和死叉的位置。背景颜色辅助判断趋势方向。该策略同时具有“多空平衡”和“仅多头”两种交易模式可选。
均线产生误导信号的风险
特定周期更适合该策略的风险
多空交易增加亏损风险
均线多空平衡交易策略整合了均线指标的优势,实现了多空平衡交易。该策略视觉效果丰富,便于掌握市场趋势;而参数可自定义,适应能力强。但需要注意误导信号和仓位管理问题。该策略为中高级交易者提供了一个可定制和优化的参考框架。
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("MASelect Crossover Strat", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
av1 = input(title="Active MA", defval="EMA", options=["EMA", "SMA", "WMA", "DEMA", "VWMA"])
av2 = input(title="Base MA", defval="EMA", options=["EMA", "SMA", "WMA", "DEMA", "VWMA"])
len1 = input(20, "Active Length")
len2 = input(100, "Base Length")
src = input(close, "Source")
strat = input(defval="Long+Short", options=["Long+Short", "Long Only"])
ema1 = ema(src, len1)
ema2 = ema(src, len2)
sma1 = sma(src, len1)
sma2 = sma(src, len2)
wma1 = wma(src, len1)
wma2 = wma(src, len2)
e1 = ema(src, len1)
e2 = ema(e1, len1)
dema1 = 2 * e1 - e2
e3 = ema(src, len2)
e4 = ema(e3, len2)
dema2 = 2 * e3 - e4
vwma1 = vwma(src, len1)
vwma2 = vwma(src, len2)
ma1 = av1 == "EMA"?ema1:av1=="SMA"?sma1:av1=="WMA"?wma1:av1=="DEMA"?dema1:av1=="VWMA"?vwma1:na
ma2 = av2 == "EMA"?ema2:av2=="SMA"?sma2:av2=="WMA"?wma2:av2=="DEMA"?dema2:av2=="VWMA"?vwma2:na
co = crossover(ma1, ma2)
cu = crossunder(ma1, ma2)
barcolor(co?lime:cu?yellow:na)
col = ma1 >= ma2?lime:red
bgcolor(co or cu?yellow:col)
plotshape(co, style=shape.triangleup, location=location.belowbar)
plotshape(cu, style=shape.triangledown)
plot(ma1, color=col, linewidth=3), plot(ma2, style=circles, linewidth=1)
strategy.entry("Buy", strategy.long, when=co)
if strat=="Long+Short"
strategy.entry("Sell", strategy.short, when=cu)
else
strategy.close("Buy", when=cu)