এটি একটি প্রবণতা অনুসরণকারী কৌশল যা ট্রেডিং সংকেত তৈরির জন্য ট্রিপল এক্সপোনেন্সিয়াল মুভিং এভারেজ (ইএমএ) এবং স্টোকস্টিক রিলেটিভ স্ট্রেনথ ইনডেক্স (স্টোক আরএসআই) একত্রিত করে। যখন দ্রুত ইএমএ মাঝারি ইএমএর উপরে এবং মাঝারি ইএমএ ধীর ইএমএর উপরে অতিক্রম করে তখন এটি দীর্ঘ হয়। যখন বিপরীত ঘটে তখন এটি সংক্ষিপ্ত হয়। কৌশলটি একটি সহায়ক সূচক হিসাবে স্টোক আরএসআইও ব্যবহার করে।
৮,১৪,৫০ দিনের ইএমএ ব্যবহার করুন। ৮ দিনের ইএমএ > ১৪ দিনের ইএমএ > ৫০ দিনের ইএমএ হলে লম্বা যান। বিপরীত হলে শর্ট যান।
সহায়ক সূচক হিসাবে স্টোকাস্টিক আরএসআই ব্যবহার করুন। প্রথমে 14 দিনের আরএসআই গণনা করুন, তারপরে আরএসআইতে স্টোকাস্টিক গণনা করুন, অবশেষে 3 দিনের এসএমএ কে লাইন হিসাবে এবং 3 দিনের এসএমএ কে লাইনে ডি লাইন হিসাবে গণনা করুন। ডি এর উপর কে ক্রসিং দীর্ঘ সংকেত দেয়।
লং সিগন্যালে বন্ধ > ৮ দিনের ইএমএ হলে লং ট্রেড লিখুন। লং সিগন্যালে বন্ধ < ৮ দিনের ইএমএ হলে শর্ট ট্রেড লিখুন।
স্টপ লস সেট করা হয় 1 ATR দূরত্ব এন্ট্রি মূল্যের নীচে/উপরে। লাভ সেট করা হয় 4 ATR দূরত্ব এন্ট্রি মূল্যের উপরে/উপরে।
EMA একটি বেস সূচক হিসাবে প্রবণতা কার্যকরভাবে ট্র্যাক করতে পারে। ট্রিপল EMA একাধিক সময়কালের combing দ্বারা উভয় স্বল্প ও দীর্ঘমেয়াদী প্রবণতা ধরা।
স্টোচ আরএসআই যোগ করলে মিথ্যা সংকেত ফিল্টার করা যায় এবং প্রবেশের নির্ভুলতা বাড়ানো যায়।
এটিআর ভিত্তিক স্টপ লস এবং লাভ নেওয়ার মাধ্যমে বাজারের অস্থিরতাকে গতিশীলভাবে ট্র্যাক করা যায়, যা অনুপযুক্ত স্থানান্তর এড়ায়।
এই কৌশলটির পরামিতিগুলি ভালভাবে সামঞ্জস্য করা হয়েছে এবং ট্রেন্ডিং সময়কালে দুর্দান্ত পারফর্ম করে। ড্রডাউন ছোট এবং দীর্ঘমেয়াদী ব্যবসায়ের জন্য মুনাফা ধারাবাহিক।
একাধিক সূচকগুলির সংমিশ্রণ হুইপসা ঝুঁকি বাড়ায়। ইএমএ এবং স্টক আরএসআই এর মধ্যে দ্বন্দ্বপূর্ণ সংকেতগুলি খারাপ স্তরে প্রবেশের কারণ হতে পারে। এই ক্ষেত্রে দামের প্রবণতা নিজেই পর্যবেক্ষণের প্রয়োজন।
সংরক্ষণশীল স্টপ লস এবং লাভের সেটিংগুলি বিপুল বাজারের ওঠানামা দ্বারা লঙ্ঘিত হতে পারে, যা আরও প্রবণতা মিস করে অকাল প্রস্থান ঘটায়। এটিআর পরামিতিগুলি সামঞ্জস্য করা বা এসএল / টিপি গুণকগুলি বাড়ানো সাহায্য করতে পারে।
ট্রিপল ইএমএ সেটআপে দ্রুত এবং মাঝারি রেখাগুলি বিপরীতমুখী হলে নির্দিষ্ট বিলম্ব থাকে। প্রবেশের সিদ্ধান্ত নিতে দামের প্রবণতা নিজেই পর্যবেক্ষণ করা দরকার।
এই কৌশলটি ট্রেন্ডিং মার্কেটের পক্ষে। পার্শ্ববর্তী বাজারগুলি ভালভাবে সম্পাদন করবে না। এমএ সময়কাল সামঞ্জস্য করা বা অন্যান্য সহায়ক সূচক যুক্ত করা সহায়ক হতে পারে।
আরও ভাল এন্ট্রি জন্য MACD মত সূচক যোগ করুন. MAs বিভিন্ন সময়ের সমন্বয় পরীক্ষা.
ATR এ দীর্ঘ / সংক্ষিপ্ত পরীক্ষার পরামিতিগুলি অনুকূলিতকরণ। যেমন 1 ATR থেকে 1.5 ATR এ স্টপ লস সামঞ্জস্য করা, আরও ভাল ফলাফলের জন্য 4 ATR থেকে 3 ATR থেকে লাভ নিন।
স্টোক আরএসআই মুছে ফেলা এবং কেবলমাত্র এমএগুলিকে শব্দ ফিল্টারিং এবং আরও স্থিতিশীল মুনাফা রাখার জন্য রাখা।
ট্রেডিং ভলিউমের মতো প্রবণতা মূল্যায়নের জন্য আরও মানদণ্ড যুক্ত করা, উল্লেখযোগ্য স্তরের নিচে কাজ করার জন্য।
এই কৌশলটি প্রবণতা নির্ধারণের জন্য ট্রিপল ইএমএ এবং স্টক আরএসআইকে একত্রিত করে। কঠোর এন্ট্রি সংকেতগুলি অপ্রয়োজনীয় বাণিজ্য হ্রাস করে। এটিআর-এর উপর ভিত্তি করে ডায়নামিক এসএল এবং টিপি পরামিতিগুলিকে অভিযোজিত করে তোলে। ব্যাকটেস্টগুলি ছোট ড্রডাউন এবং ধারাবাহিক মুনাফার সাথে প্রবণতার সময়কালে দুর্দান্ত ফলাফল দেখায়। আরও অপ্টিমাইজেশন আরও ভাল ফলাফলের দিকে পরিচালিত করতে পারে।
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // 3ESRA // v0.2a // Coded by Vaida Bogdan // 3ESRA consists of a 3 EMA cross + a close above (for longs) the quickest EMA // or below (for shorts). Note that I've deactivated the RSI Cross Over/Under // (you can modify the code and activate it). The strategy also uses a stop loss // that's at 1 ATR distance from the entry price and a take profit that's at // 4 times the ATR distance from the entry price. // Feedback: // Tested BTCUSDT Daily // 1. Stoch-RSI makes you miss opportunities. // 2. Changing RR to 4:1 times ATR works better. //@version=4 strategy(title="3 EMA + Stochastic RSI + ATR", shorttitle="3ESRA", overlay=true, pyramiding=1, process_orders_on_close=true, calc_on_every_tick=true, initial_capital=1000, currency = currency.USD, default_qty_value=10, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.1, slippage=2) startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Backtesting range") startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Backtesting range") startYear = input(title="Start Year", type=input.integer, defval=1900, minval=1800, maxval=2100, group="Backtesting range") endDate = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31, group="Backtesting range") endMonth = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Backtesting range") endYear = input(title="End Year", type=input.integer, defval=2040, minval=1800, maxval=2100, group="Backtesting range") // Date range filtering inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 23, 59)) fast = input(8, minval=8, title="Fast EMA", group="EMAs") medium = input(14, minval=8, title="Medium EMA", group="EMAs") slow = input(50, minval=8, title="Slow EMA", group="EMAs") src = input(close, title="Source") smoothK = input(3, "K", minval=1, group="Stoch-RSI", inline="K&D") smoothD = input(3, "D", minval=1, group="Stoch-RSI", inline="K&D") lengthRSI = input(14, "RSI Length", minval=1, group="Stoch-RSI", inline="length") lengthStoch = input(14, "Stochastic Length", minval=1, group="Stoch-RSI", inline="length") rsiSrc = input(close, title="RSI Source", group="Stoch-RSI") length = input(title="Length", defval=14, minval=1, group="ATR") smoothing = input(title="Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"], group="ATR") // EMAs fastema = ema(src, fast) mediumema = ema(src, medium) slowema = ema(src, slow) // S-RSI rsi1 = rsi(rsiSrc, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) sRsiCrossOver = k[1] < d[1] and k > d sRsiCrossUnder = k[1] > d[1] and k < d // ATR ma_function(source, length) => if smoothing == "RMA" rma(source, length) else if smoothing == "SMA" sma(source, length) else if smoothing == "EMA" ema(source, length) else wma(source, length) atr = ma_function(tr(true), length) // Trading Logic longCond1 = (fastema > mediumema) and (mediumema > slowema) longCond2 = true // longCond2 = sRsiCrossOver longCond3 = close > fastema longCond4 = strategy.position_size <= 0 longCond = longCond1 and longCond2 and longCond3 and longCond4 and inDateRange shortCond1 = (fastema < mediumema) and (mediumema < slowema) shortCond2 = true // shortCond2 = sRsiCrossUnder shortCond3 = close < fastema shortCond4 = strategy.position_size >= 0 shortCond = shortCond1 and shortCond2 and shortCond3 and shortCond4 and inDateRange var takeProfit = float(na), var stopLoss = float(na) if longCond and strategy.position_size <= 0 takeProfit := close + 4*atr stopLoss := close - 1*atr // takeProfit := close + 2*atr // stopLoss := close - 3*atr else if shortCond and strategy.position_size >= 0 takeProfit := close - 4*atr stopLoss := close + 1*atr // takeProfit := close - 2*atr // stopLoss := close + 3*atr // Strategy calls strategy.entry("3ESRA", strategy.long, comment="Long", when=longCond and strategy.position_size <= 0) strategy.entry("3ESRA", strategy.short, comment="Short", when=shortCond and strategy.position_size >= 0) strategy.exit(id="TP-SL", from_entry="3ESRA", limit=takeProfit, stop=stopLoss) if (not inDateRange) strategy.close_all() // Plot EMAs plot(fastema, color=color.purple, linewidth=2, title="Fast EMA") plot(mediumema, color=color.teal, linewidth=2, title="Medium EMA") plot(slowema, color=color.yellow, linewidth=2, title="Slow EMA") // Plot S-RSI // plotshape((strategy.position_size > 0) ? na : sRsiCrossOver, title="StochRSI Cross Over", style=shape.triangleup, location=location.belowbar, color=color.teal, text="SRSI", size=size.small) // Plot trade bgcolor(strategy.position_size > 0 ? color.new(color.green, 75) : strategy.position_size < 0 ? color.new(color.red,75) : color(na)) // Plot Strategy plot((strategy.position_size != 0) ? takeProfit : na, style=plot.style_linebr, color=color.green, title="TP") plot((strategy.position_size != 0) ? stopLoss : na, style=plot.style_linebr, color=color.red, title="SL")