Strategi ini menggabungkan Awan Ichimoku, jangka pendek (55) dan jangka panjang (200) Purata Bergerak Sederhana (SMA) untuk mengenal pasti isyarat beli dan jual yang berpotensi. Isyarat beli memerlukan harga berada di atas awan dan SMA jangka panjang, dan untuk menguji semula SMA jangka pendek selepas melintasi di atasnya. Isyarat jual memerlukan harga berada di bawah awan dan SMA jangka panjang, dan untuk menguji semula SMA jangka pendek selepas melintasi di bawahnya. Strategi ini mengelakkan menghasilkan isyarat semasa pasaran berkisar atau peristiwa berita tinggi, kerana tempoh ini cenderung mempunyai lebih banyak palsu.
Strategi ini berdasarkan prinsip-prinsip berikut:
Kod ini mula-mula mengira komponen Ichimoku Cloud yang diperlukan (Garis Penukaran, Garis Asas, Leading Span A dan B), serta SMA jangka pendek dan jangka panjang. Kemudian ia menentukan pelbagai syarat untuk mengenal pasti kedudukan harga berbanding awan dan purata bergerak. Apabila semua syarat beli / jual dipenuhi, kod menghasilkan isyarat beli dan jual masing-masing.
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Ichimoku Cloud and Moving Average Strategy", shorttitle="ICMA", overlay=true) // Input parameters shortMA = input.int(55, title="Short-term Moving Average Length") longMA = input.int(200, title="Long-term Moving Average Length") // Calculate moving averages shortSMA = ta.sma(close, shortMA) longSMA = ta.sma(close, longMA) // Ichimoku Cloud settings conversionPeriod = input.int(9, title="Conversion Line Period") basePeriod = input.int(26, title="Base Line Period") spanBPeriod = input.int(52, title="Span B Period") displacement = input.int(26, title="Displacement") // Calculate Ichimoku Cloud components conversionLine = ta.sma(high + low, conversionPeriod) / 2 baseLine = ta.sma(high + low, basePeriod) / 2 leadSpanA = (conversionLine + baseLine) / 2 leadSpanB = ta.sma(high + low, spanBPeriod) / 2 // Plot Ichimoku Cloud components plot(leadSpanA, color=color.blue, title="Leading Span A") plot(leadSpanB, color=color.red, title="Leading Span B") // Entry conditions aboveCloud = close > leadSpanA and close > leadSpanB belowCloud = close < leadSpanA and close < leadSpanB aboveShortMA = close > shortSMA aboveLongMA = close > longSMA belowShortMA = close < shortSMA belowLongMA = close < longSMA // Buy condition (Price retests 55 moving average after being above it) buyCondition = aboveCloud and aboveLongMA and close[1] < shortSMA and close > shortSMA // Sell condition (Price retests 55 moving average after being below it) sellCondition = belowCloud and belowLongMA and close[1] > shortSMA and close < shortSMA // Strategy entry and exit strategy.entry("Buy", strategy.long, when = buyCondition) strategy.entry("Sell", strategy.short, when = sellCondition) // Plot moving averages plot(shortSMA, color=color.green, title="Short-term SMA") plot(longSMA, color=color.red, title="Long-term SMA") // Plot buy and sell signals plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")