该策略是一个基于云层突破和双均线交叉的动量交易系统。它结合了一目云指标的多个组成部分来识别市场趋势方向和动量变化,通过价格与云层的位置关系以及转换线与基准线的交叉来产生交易信号。策略的核心思想是在强势趋势中捕捉动量机会。
策略使用了以下关键组件: 1. 转换线(Tenkan-Sen):计算9个周期内的最高价和最低价的中点,反映短期市场趋势 2. 基准线(Kijun-Sen):计算26个周期内的最高价和最低价的中点,反映中期市场趋势 3. 先行带A(Senkou Span A):转换线和基准线的平均值,向前位移26个周期 4. 先行带B(Senkou Span B):计算52个周期内的最高价和最低价的中点,向前位移26个周期 5. 滞后线(Chikou Span):当前收盘价向后位移26个周期
入场条件: - 多头:价格位于云层之上(高于先行带A和B)且转换线上穿基准线 - 空头:价格位于云层之下(低于先行带A和B)且转换线下穿基准线
出场条件:当出现相反的交易信号时平仓
风险控制建议: - 配合其他技术指标进行交叉验证 - 设置适当的止损位置 - 根据不同市场周期动态调整参数 - 实施仓位管理策略
这是一个结合了趋势跟踪和动量交易的综合策略系统。通过云层突破和均线交叉的配合使用,能够在保持策略稳定性的同时,有效捕捉市场趋势机会。策略的成功应用需要认真关注参数优化、风险控制和市场适应性这三个关键方面。
/*backtest
start: 2024-02-08 00:00:00
end: 2025-02-06 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ichimoku Cloud Strategy", shorttitle="IchimokuStrat", overlay=true)
//=== Užívateľské vstupy ===//
tenkanLen = input.int(9, "Tenkan-Sen Length")
kijunLen = input.int(26, "Kijun-Sen Length")
senkouSpanBLen = input.int(52, "Senkou Span B Length")
displacement = input.int(26, "Cloud Displacement")
//=== Výpočet Ichimoku liniek ===//
// Tenkan-Sen (Conversion Line)
tenkanHigh = ta.highest(high, tenkanLen)
tenkanLow = ta.lowest(low, tenkanLen)
tenkan = (tenkanHigh + tenkanLow) / 2.0
// Kijun-Sen (Base Line)
kijunHigh = ta.highest(high, kijunLen)
kijunLow = ta.lowest(low, kijunLen)
kijun = (kijunHigh + kijunLow) / 2.0
// Senkou Span A = (Tenkan + Kijun)/2, posunutý dopredu
spanA = (tenkan + kijun) / 2.0
// Senkou Span B = (highest high + lowest low)/2, posunutý dopredu
spanBHigh = ta.highest(high, senkouSpanBLen)
spanBLow = ta.lowest(low, senkouSpanBLen)
spanB = (spanBHigh + spanBLow) / 2.0
// Chikou Span (voliteľný) = current close, posunutý dozadu
chikou = close[displacement]
//=== Podmienky pre LONG / SHORT ===//
// Cena NAD oblakom => close > spanA a close > spanB
// Tenkan NAD Kijun => tenkan > kijun
longCondition = (close > spanA and close > spanB) and (tenkan > kijun)
// Cena POD oblakom => close < spanA a close < spanB
// Tenkan POD Kijun => tenkan < kijun
shortCondition = (close < spanA and close < spanB) and (tenkan < kijun)
//=== Vstup do pozícií ===//
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
//=== Výstup pri opačnom signáli ===//
if strategy.position_size > 0 and shortCondition
strategy.close("Long", comment="Exit Long")
if strategy.position_size < 0 and longCondition
strategy.close("Short", comment="Exit Short")
//=== Vykreslenie Ichimoku = vyplnený oblak ===//
// Najskôr si ulož premenne (plot) pre spanA, spanB
plotA = plot(spanA, title="Span A", offset=displacement, color=color.new(color.green, 0))
plotB = plot(spanB, title="Span B", offset=displacement, color=color.new(color.red, 0))
// Namiesto plotfill() použijeme fill()
fill(plotA, plotB, title="Cloud Fill", color=color.new(color.green, 80))