本策略结合了一目均衡指标和隐冲突指标,实现了一个较为简单的量化交易策略。当一目均衡线高于隐冲突线且收盘价高于一目均衡线时生成买入信号;当一目均衡线低于隐冲突线且收盘价低于一目均衡线时生成卖出信号。该策略适用于加密货币等高波动性资产的短线交易。
一目均衡指标包含前转线、基准线和延迟线三条曲线。前转线代表最近一定周期的平均价,基准线代表更长周期的平均价,延迟线则通常是前转线和基准线的平均值。当短期平均价高于长期平均价时,代表着当前处于价格上涨趋势中。
隐冲突指标包含先行线A和先行线B两条曲线。它们代表不同长度周期内价格波动幅度的平均值。当先行线A高于先行线B时,代表短期内波动增大,价格上涨动能比较足。
本策略利用一目均衡线判断大致趋势方向,利用隐冲突先行线判断价格动能,结合收盘价形成确切的交易信号。当出现上涨趋势且波动放大时买入,出现下跌趋势且波动收缩时卖出,从而获利。
这是一个较为简单的量化交易策略,它具有如下几个优势:
本策略也存在一些风险,主要包括:
本策略可从以下几个方面进行优化:
本策略整体来说是一个非常简单的量化交易策略,它结合一目均衡线和隐冲突指标,判断价格趋势和动能,形成交易信号。该策略适合高波动性资产的短线交易,可获得不错的收益。当然,任何策略都不可能完美,本策略也有一定的优化空间,可从入场规则、止损机制、参数选择等方面进行改进,使其效果更好。
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ichimoku Cloud + ema 50 Strategy", overlay=true)
len = input.int(50, minval=1, title="Length")
src = input(close, title="Source")
out = ta.ema(src, len)
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(1, minval=1, title="Lagging Span")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
title="Leading Span B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))
plot(out, title="EMA", color=color.white)
// Condition for Buy Signal
buy_signal = close > out and leadLine1 > leadLine2
// Condition for Sell Signal
sell_signal = close < out and leadLine2 > leadLine1
// Strategy entry and exit conditions
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (sell_signal)
strategy.entry("Sell", strategy.short)
// Exit long position if candle closes below EMA 50
if (strategy.opentrades > 0)
if (close < out)
strategy.close("Buy")
// Exit short position if candle closes above EMA 50
if (strategy.opentrades < 0)
if (close > out)
strategy.close("Sell")