Chiến lược này kết hợp đám mây Ichimoku, trung bình di chuyển đơn giản ngắn hạn (55) và dài hạn (200) để xác định các tín hiệu mua và bán tiềm năng. Các tín hiệu mua đòi hỏi giá phải ở trên đám mây và SMA dài hạn, và kiểm tra lại SMA ngắn hạn sau khi vượt qua trên nó. Các tín hiệu bán đòi hỏi giá phải ở dưới đám mây và SMA dài hạn, và kiểm tra lại SMA ngắn hạn sau khi vượt qua dưới nó. Chiến lược tránh tạo ra tín hiệu trong các thị trường dao động hoặc các sự kiện tin tức cao, vì những giai đoạn này có xu hướng có nhiều giả mạo hơn.
Chiến lược dựa trên các nguyên tắc sau:
Mã đầu tiên tính toán các thành phần của đám mây Ichimoku cần thiết (Conversion Line, Base Line, Leading Span A và B), cũng như SMA ngắn hạn và dài hạn. Sau đó nó xác định nhiều điều kiện để xác định vị trí giá tương đối với đám mây và đường trung bình động. Khi tất cả các điều kiện mua / bán được đáp ứng, mã tạo ra tín hiệu mua và bán tương ứng.
Chiến lược
/*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")