
Strategi ini menggabungkan awan grafik keseimbangan pertama dan jangka pendek (55) dan jangka panjang (200) purata bergerak sederhana (SMA) untuk mengenal pasti isyarat jual beli yang berpotensi. Isyarat beli memerlukan harga yang lebih tinggi daripada awan dan jangka panjang SMA, dan melangkau kembali SMA pendek selepas melewati SMA pendek di atas. Isyarat jual memerlukan harga yang lebih rendah daripada awan dan SMA panjang, dan melangkau kembali SMA pendek selepas melewati SMA pendek di bawah.
Strategi ini berdasarkan kepada prinsip-prinsip berikut:
Program pertama mengira komponen awan pertama yang diperlukan ((garis peralihan, garis asas, span A dan B), dan SMA jangka pendek dan jangka panjang. Kemudian menentukan pelbagai syarat untuk mengenal pasti kedudukan harga berbanding dengan lapisan awan dan garis rata. Apabila semua syarat membeli / menjual dipenuhi, program menghasilkan isyarat membeli dan menjual masing-masing.
Strategi “satu awan berbilang perdagangan rata-rata” dengan menggabungkan awan grafik keseimbangan pertama dan purata bergerak sederhana, mencari peluang masuk berisiko rendah untuk melangkaui garis rata-rata dalam trend yang telah ditubuhkan. Dengan menyaring perdagangan semasa pasaran berhampiran dan peristiwa berita utama, strategi ini dapat mengurangkan risiko isyarat palsu, dan dengan itu meningkatkan prestasi keseluruhan.
/*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")