এই কৌশলটি সম্ভাব্য ক্রয় এবং বিক্রয় সংকেত সনাক্ত করতে ইচিমোকু ক্লাউড, স্বল্পমেয়াদী (55) এবং দীর্ঘমেয়াদী (200) সহজ চলমান গড় (এসএমএ) একত্রিত করে। ক্রয় সংকেতগুলির জন্য দামটি ক্লাউড এবং দীর্ঘমেয়াদী এসএমএর উপরে থাকা এবং এর উপরে অতিক্রম করার পরে স্বল্পমেয়াদী এসএমএ পুনরায় পরীক্ষা করা প্রয়োজন। বিক্রয় সংকেতগুলির জন্য দামটি ক্লাউড এবং দীর্ঘমেয়াদী এসএমএর নীচে থাকা এবং এর নীচে অতিক্রম করার পরে স্বল্পমেয়াদী এসএমএ পুনরায় পরীক্ষা করা প্রয়োজন। কৌশলটি ব্যাপ্তি বাজার বা উচ্চ সংবাদ ইভেন্টের সময় সংকেত উত্পাদন এড়ায়, কারণ এই সময়গুলিতে আরও ভুয়া আউট থাকে। ব্যাকটেস্টিং দেখায় যে কৌশলটি 1 ঘন্টা এবং 2 ঘন্টা সময়সীমার উপর সেরা সম্পাদন করে।
কৌশলটি নিম্নলিখিত নীতিগুলির উপর ভিত্তি করেঃ
কোডটি প্রথমে প্রয়োজনীয় ইচিমোকু ক্লাউড উপাদানগুলি (রূপান্তর লাইন, বেস লাইন, লিডিং স্প্যান এ এবং বি), পাশাপাশি স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী এসএমএগুলি গণনা করে। এটি ক্লাউড এবং চলমান গড়ের তুলনায় মূল্য অবস্থান সনাক্ত করার জন্য একাধিক শর্ত নির্ধারণ করে। যখন সমস্ত কেনা / বিক্রয় শর্ত পূরণ করা হয়, তখন কোডটি যথাক্রমে ক্রয় এবং বিক্রয় সংকেত উত্পন্ন করে।
/*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")