এই কৌশলটি মূল্যের প্রবণতার পরিবর্তনগুলি ক্যাপচার করার জন্য দুটি এক্সপোনেনশিয়াল চলমান গড় (ইএমএ) ব্যবহার করে। যখন স্বল্পমেয়াদী ইএমএ নীচে থেকে দীর্ঘমেয়াদী ইএমএর উপরে অতিক্রম করে, তখন একটি ক্রয় সংকেত উত্পন্ন হয়; যখন স্বল্পমেয়াদী ইএমএ উপরে থেকে দীর্ঘমেয়াদী ইএমএর নীচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। কৌশলটি এক দিনের ক্ষতি এবং লাভ নিয়ন্ত্রণের জন্য দৈনিক স্টপ-লস এবং লাভের সীমাও সেট করে।
ইএমএ দ্বৈত চলমান গড় ক্রসওভার কৌশলটি ট্রেন্ডিং মার্কেটের জন্য উপযুক্ত একটি সহজ, সহজেই বোঝা ট্রেডিং কৌশল। দ্রুত এবং ধীর চলমান গড়ের ক্রসওভার ব্যবহার করে, এটি দামের প্রবণতার পরিবর্তনগুলি তুলনামূলকভাবে ভালভাবে ক্যাপচার করতে পারে। একই সাথে, দৈনিক স্টপ-লস এবং লাভ গ্রহণের সেটিংস কার্যকরভাবে ঝুঁকিগুলি নিয়ন্ত্রণ করতে পারে। তবে কৌশলটি অস্থির বাজারে বা প্রবণতা বিপরীতের সময় দুর্বল হতে পারে এবং অন্যান্য প্রযুক্তিগত সূচক এবং বিশ্লেষণ পদ্ধতিগুলিকে একত্রিত করে অনুকূলিতকরণ এবং উন্নতি করতে হবে।
/*backtest start: 2023-06-01 00:00:00 end: 2024-06-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © DD173838 //@version=5 strategy("Moving Average Strategy with Daily Limits", overlay=true) // Moving Average settings shortMaLength = input.int(9, title="Short MA Length") longMaLength = input.int(21, title="Long MA Length") // Calculate MAs shortMa = ta.ema(close, shortMaLength) longMa = ta.ema(close, longMaLength) // Plot MAs plot(shortMa, title="9 EMA", color=color.blue) plot(longMa, title="21 EMA", color=color.red) // Strategy conditions crossUp = ta.crossover(shortMa, longMa) crossDown = ta.crossunder(shortMa, longMa) // Debug plots to check cross conditions plotshape(series=crossUp, title="Cross Up", location=location.belowbar, color=color.green, style=shape.labelup, text="UP") plotshape(series=crossDown, title="Cross Down", location=location.abovebar, color=color.red, style=shape.labeldown, text="DOWN") // Entry at cross signals if (crossUp) strategy.entry("Long", strategy.long) if (crossDown) strategy.entry("Short", strategy.short) // Daily drawdown and profit limits var float startOfDayEquity = na if (na(startOfDayEquity) or ta.change(time('D')) != 0) startOfDayEquity := strategy.equity maxDailyLoss = 50000 * 0.0025 maxDailyProfit = 50000 * 0.02 currentDailyPL = strategy.equity - startOfDayEquity if (currentDailyPL <= -maxDailyLoss) strategy.close_all(comment="Max Daily Loss Reached") if (currentDailyPL >= maxDailyProfit) strategy.close_all(comment="Max Daily Profit Reached")