海空和一目均衡表交易策略


创建日期: 2023-09-18 15:13:35 最后修改: 2023-09-18 15:13:35
复制: 0 点击次数: 1059
avatar of ChaoZhang ChaoZhang
1
关注
1364
关注者

概述

该策略结合使用海空和一目均衡表指标判断趋势方向并进行趋势跟踪。海空平滑K线数据降低噪音。一目均衡表通过转换线、基准线等多种信号综合判断趋势强弱。结合双重指标提高策略稳定性。

策略原理

计算海空的收盘价,并绘制转换线、基准线等一目均衡表指标。当收盘价高于前两日且高于云图上沿和延迟线时做多。当收盘价低于前两日且低于云图下沿和延迟线时做空。一目均衡表的转换线和基准线交叉也作为辅助信号。

优势分析

  • 海空过滤假突破,提高信号质量
  • 一目均衡表多个指标信号相互验证
  • 延迟线避免被套,确保止盈
  • 顺势而为,持仓时间长,获利空间大

风险分析

  • 海空指标平滑程度无法完美优化
  • 一目均衡表参数设置对结果影响显著
  • 持仓时间过长可能亏损扩大
  • 交易频次较低,不适合短线交易

可适当调整平滑参数,缩短持仓周期,优化一目均衡表参数等来控制风险。

优化方向

  • 测试不同的海空平滑参数
  • 优化一目均衡表的周期参数
  • 设置离场后的再入场策略
  • 在不同品种中测试参数健壮性

总结

该策略综合多个指标判断趋势方向,回撤控制能力较强。可通过调参等方法进一步提升效果。

策略源码
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("Heiken Ashi + Ichimoku Kinko Hyo Strategy", shorttitle="HaI", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1000, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)

hahigh = security(heikinashi(syminfo.tickerid), timeframe.period, high)
halow = security(heikinashi(syminfo.tickerid), timeframe.period, low)

TenkanSenPeriods = input(9, minval=1, title="Tenkan Sen Periods")
KijunSenPeriods = input(24, minval=1, title="Kijun Sen Periods")
SenkouSpanBPeriods = input(51, minval=1, title="Senkou Span B Periods")
displacement = input(24, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
TenkanSen = donchian(TenkanSenPeriods)
KijunSen = donchian(KijunSenPeriods)
SenkouSpanA = avg(TenkanSen, KijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)
SenkouSpanH = max(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
SenkouSpanL = min(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
ChikouSpan = close[displacement-1]

plot(TenkanSen, color=blue, title="Tenkan Sen", linewidth = 2)
plot(KijunSen, color=maroon, title="Kijun Sen", linewidth = 3)
plot(close, offset = -displacement, color=orange, title="Chikou Span", linewidth = 2)
sa=plot (SenkouSpanA, offset = displacement, color=green,  title="Senkou Span A", linewidth = 2)
sb=plot (SenkouSpanB, offset = displacement, color=red,  title="Senkou Span B", linewidth = 3)
fill(sa, sb, color = SenkouSpanA > SenkouSpanB ? green : red)

longCondition = hahigh > max(hahigh[1],hahigh[2]) and close>ChikouSpan and close>SenkouSpanH and (TenkanSen>=KijunSen or close>KijunSen)
if (longCondition)
    strategy.entry("Long",strategy.long)

shortCondition = halow < min(halow[1],halow[2]) and close<ChikouSpan and close<SenkouSpanL and (TenkanSen<=KijunSen or close<KijunSen)
if (shortCondition)
    strategy.entry("Short",strategy.short)

closelong = halow < min(halow[1],halow[2]) and (TenkanSen<KijunSen or close<TenkanSen or close<KijunSen or close<SenkouSpanH or close<ChikouSpan)
if (closelong)
    strategy.close("Long")

closeshort = hahigh > max(hahigh[1],hahigh[2]) and (TenkanSen>KijunSen or close>TenkanSen or close>KijunSen or close>SenkouSpanL or close>ChikouSpan)
if (closeshort)
    strategy.close("Short")