এই কৌশলটি একাধিক এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ) ক্রসওভারের উপর ভিত্তি করে একটি প্রবণতা অনুসরণকারী সিস্টেম, যা গতিশীল স্টপ-লস এবং লাভ গ্রহণের প্রক্রিয়াগুলির সাথে মিলিত। কৌশলটি তিনটি ইএমএ ব্যবহার করে - 21-অবধি, 50-অবধি এবং 200-অবধি - স্বল্প ও মাঝারি মেয়াদী ইএমএ ক্রসওভারের মাধ্যমে ট্রেডিং সংকেত উত্পাদন করে যখন সামগ্রিক প্রবণতার দিকটি নিশ্চিত করতে দীর্ঘমেয়াদী ইএমএ ব্যবহার করে। এতে ঝুঁকি পরিচালনার জন্য নমনীয় স্টপ-লস এবং লাভ গ্রহণের স্তর অন্তর্ভুক্ত রয়েছে। কৌশলটি উল্লেখযোগ্য অস্থিরতা এবং মাঝারি থেকে দীর্ঘমেয়াদী প্রবণতা ট্রেডিং সহ বাজারগুলির জন্য বিশেষভাবে উপযুক্ত।
মূল যুক্তিটি একটি ট্রিপল ইএমএ সিস্টেমের সিঙ্ক্রোনাস প্রভাবের উপর ভিত্তি করেঃ
এই কৌশলটি একাধিক ইএমএ সিস্টেমের সমন্বয়ের মাধ্যমে কার্যকরভাবে বাজারের প্রবণতা ক্যাপচার করে। এর বিস্তৃত ঝুঁকি ব্যবস্থাপনা প্রক্রিয়া এবং পরিষ্কার ট্রেডিং যুক্তি এটিকে একটি ব্যবহারিক ট্রেডিং সরঞ্জাম করে তোলে। ক্রমাগত অপ্টিমাইজেশন এবং উন্নতির মাধ্যমে কৌশলটি বিভিন্ন বাজারের পরিবেশে আরও ভালভাবে মানিয়ে নিতে পারে, ট্রেডিং দক্ষতা এবং স্থিতিশীলতা বাড়িয়ে তোলে। ব্যবসায়ীদের লাইভ বাস্তবায়নের আগে পুঙ্খানুপুঙ্খ ব্যাকটেস্টিং এবং পরামিতি অপ্টিমাইজেশন পরিচালনা করার পরামর্শ দেওয়া হয়, বাজারের বৈশিষ্ট্য এবং স্বতন্ত্র ঝুঁকি পছন্দগুলির উপর ভিত্তি করে যথাযথ সমন্বয় করা।
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-17 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover with SL and TP Levels", overlay=true) // Input settings for stop loss and take profit slTicks = input.int(50, title="Stop Loss (ticks)", minval=1) tpTicks = input.int(100, title="Take Profit (ticks)", minval=1) // Input settings for moving averages shortMAPeriod = input.int(21, title="Short MA Period") longMAPeriod = input.int(50, title="Long MA Period") thirdMAPeriod = input.int(200, title="Third MA Period") // Calculate moving averages shortMA = ta.ema(close, shortMAPeriod) // Short EMA (21-period) longMA = ta.ema(close, longMAPeriod) // Long EMA (50-period) thirdMA = ta.ema(close, thirdMAPeriod) // Third EMA (200-period) // Detect crossovers for entry signals bullishCross = ta.crossover(shortMA, longMA) and close > thirdMA bearishCross = ta.crossunder(shortMA, longMA) and close < thirdMA // Initialize variables for SL and TP var float longSL = na var float longTP = na var float shortSL = na var float shortTP = na // Execute trades based on crossovers if (bullishCross) longSL := close - slTicks * syminfo.mintick longTP := close + tpTicks * syminfo.mintick strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=longSL, limit=longTP) if (bearishCross) shortSL := close + slTicks * syminfo.mintick shortTP := close - tpTicks * syminfo.mintick strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=shortSL, limit=shortTP) // Plot the MAs plot(shortMA, color=color.green, linewidth=2, title="21-period EMA") plot(longMA, color=color.red, linewidth=2, title="50-period EMA") plot(thirdMA, color=color.blue, linewidth=2, title="200-period EMA") // Plot buy/sell signals plotshape(series=bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small, offset=-1) plotshape(series=bearishCross, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small, offset=-1) // // Draw SL and TP lines for Long positions // if (bullishCross) // line.new(x1=bar_index, y1=longSL, x2=bar_index + 1, y2=longSL, color=color.red, width=2, style=line.style_dotted) // line.new(x1=bar_index, y1=longTP, x2=bar_index + 1, y2=longTP, color=color.green, width=2, style=line.style_dotted) // label.new(bar_index, longSL, text="Long SL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) // label.new(bar_index, longTP, text="Long TP", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small) // // Draw SL and TP lines for Short positions // if (bearishCross) // line.new(x1=bar_index, y1=shortSL, x2=bar_index + 1, y2=shortSL, color=color.red, width=2, style=line.style_dotted) // line.new(x1=bar_index, y1=shortTP, x2=bar_index + 1, y2=shortTP, color=color.green, width=2, style=line.style_dotted) // label.new(bar_index, shortSL, text="Short SL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) // label.new(bar_index, shortTP, text="Short TP", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)