这是一个结合一张烟云指标和MACD指标的数字货币交易策略。它利用一张烟云指标判断整体趋势方向和支持阻力位置,再结合MACD指标判断短期趋势和动量,形成交易信号。该策略可以有效识别中长期趋势,并在趋势方向发生转变时及时调整仓位。
该策略使用一张烟云指标的转换线和基准线交叉来判断中期趋势,使用MACD指标判断短期趋势和动量。
当转换线上穿基准线时为牛市信号,价格在云层之上为强势信号;当转换线下穿基准线时为熊市信号,价格在云层之下为弱势信号。
MACDhistogram为零轴以上时为多头动量信号,零轴以下为空头动量信号。MACD线上穿信号线时为买入信号,下穿信号线时为卖出信号。
具体交易规则如下:
多头入场信号:转换线上穿基准线,价格上穿云层,MACD线上穿信号线,做多 多头出场信号:转换线下穿基准线,价格下穿云层,MACD线下穿信号线,平多仓
空头入场信号:转换线下穿基准线,价格下穿云层,MACD线下穿信号线,做空 空头出场信号:转换线上穿基准线,价格上穿云层,MACD线上穿信号线,平空仓
一张烟云指标可判断中长期趋势,MACD可判断短期趋势,二者结合可以捕捉不同级别的交易机会。
一张烟云自带的云层可明确判断支撑与阻力位置。
MACD可有效判断短期超买超卖情况,避免在震荡行情中被套。
策略参数经过优化,可以适用于多种数字货币,具有一定的稳定性。
一张烟云与MACD可产生假信号,需要组合其他指标进行确认。
震荡行情中容易产生背离,应适当调整参数或暂停交易。
云层太厚时,需等待明确突破再入场,可能错过部分机会。
回测数据不足,参数数据拟合需要更长时间周期验证。
可通过组合其他指标确认信号、调整参数适应市场环境、或在特定周期暂停交易来控制风险。
优化一张烟云参数,调整转换线、基准线周期,使之更贴近不同品种的特征。
优化MACD参数,调整长短周期和平滑参数,获得更准确的交易信号。
增加止损策略,在亏损达到一定比例时止损。
增加仓位管理,根据市场情况调整每笔交易的仓位比例。
测试不同的数字货币品种数据,评估策略稳定性。
增加其他指标过滤,避免出现假信号。
该策略整合一张烟云与MACD两个指标的优势,通过转换线和基准线判断中期趋势方向,MACD判断短期超买超卖情况,形成交易信号。策略参数可针对不同品种进行优化,可加入其他指标或止损策略来控制风险,对不同品种效果较好。但需警惕震荡行情中的假信号,通过参数调整和风控来提高策略稳定性。
/*backtest
start: 2023-10-08 00:00:00
end: 2023-10-15 00:00:00
period: 5m
basePeriod: 1m
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/
// © Coinrule
//@version=5
strategy('Ichimoku Cloud with MACD (By Coinrule)',
overlay=true,
initial_capital=1000,
process_orders_on_close=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=30,
commission_type=strategy.commission.percent,
commission_value=0.1)
showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 6, 1, 0, 0)
// Stop Loss and Take Profit for Shorting
Stop_loss = input(1) / 100
Take_profit = input(5) / 100
longStopPrice = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)
// Inputs
ts_bars = input.int(9, minval=1, title='Tenkan-Sen Bars')
ks_bars = input.int(26, minval=1, title='Kijun-Sen Bars')
ssb_bars = input.int(52, minval=1, title='Senkou-Span B Bars')
cs_offset = input.int(26, minval=1, title='Chikou-Span Offset')
ss_offset = input.int(26, minval=1, title='Senkou-Span Offset')
long_entry = input(true, title='Long Entry')
short_entry = input(true, title='Short Entry')
middle(len) => math.avg(ta.lowest(len), ta.highest(len))
// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = math.avg(tenkan, kijun)
senkouB = middle(ssb_bars)
// Plot Ichimoku Kinko Hyo
plot(tenkan, color=color.new(#0496ff, 0), title='Tenkan-Sen')
plot(kijun, color=color.new(#991515, 0), title='Kijun-Sen')
plot(close, offset=-cs_offset + 1, color=color.new(#459915, 0), title='Chikou-Span')
sa = plot(senkouA, offset=ss_offset - 1, color=color.new(color.green, 0), title='Senkou-Span A')
sb = plot(senkouB, offset=ss_offset - 1, color=color.new(color.red, 0), title='Senkou-Span B')
fill(sa, sb, color=senkouA > senkouB ? color.green : color.red, title='Cloud color', transp=90)
ss_high = math.max(senkouA[ss_offset - 1], senkouB[ss_offset - 1])
ss_low = math.min(senkouA[ss_offset - 1], senkouB[ss_offset - 1])
// MACD
[macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9)
// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = ta.mom(close, cs_offset - 1) > 0
cs_cross_bear = ta.mom(close, cs_offset - 1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and ta.crossover(macd, macd_signal)
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and ta.crossunder(macd, macd_signal)
strategy.entry('Long', strategy.long, when=bullish and long_entry and timePeriod)
strategy.close('Long', when=bearish and not short_entry)
strategy.entry('Short', strategy.short, when=bearish and short_entry and timePeriod)
strategy.close('Short', when=bullish and not long_entry)