এই কৌশলটি একাধিক প্রযুক্তিগত সূচকের উপর ভিত্তি করে একটি বিস্তৃত ট্রেডিং সিস্টেম, মূলত এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ), রিলেটিভ স্ট্রেনথ ইনডেক্স (আরএসআই) এবং ট্রেডিং ভলিউম ব্যবহার করে ট্রেডিং সিগন্যাল তৈরি এবং অবস্থান পরিচালনা করে। কৌশলটি ইএমএ ক্রসওভারের মাধ্যমে বাজারের প্রবণতা নির্ধারণ করে, ওভারকপ এবং ওভারসোল্ড শর্তগুলি বিচার করতে আরএসআই সূচক ব্যবহার করে এবং সংকেতের শক্তি নিশ্চিত করতে ট্রেডিং ভলিউমকে একত্রিত করে। উপরন্তু, কৌশলটিতে গতিশীল মুনাফা গ্রহণ এবং স্টপ-লস প্রক্রিয়া, পাশাপাশি ঝুঁকি নিয়ন্ত্রণ এবং ট্রেডিং কর্মক্ষমতা অনুকূল করার জন্য একটি নির্দিষ্ট হোল্ডিং সময় সীমা অন্তর্ভুক্ত রয়েছে।
ট্রেড সিগন্যাল জেনারেশনঃ
ডায়নামিক টেক-ওফট এবং স্টপ-লসঃ
স্থির সময়কালঃ
ইএমএ স্টপ লসঃ
ভলিউম নিশ্চিতকরণঃ
মাল্টি-ইন্ডিকেটর সিনার্জিঃ ব্যাপক বাজার বিশ্লেষণের জন্য ইএমএ, আরএসআই এবং ভলিউমকে একত্রিত করে, সংকেতের নির্ভরযোগ্যতা উন্নত করে।
ডায়নামিক রিস্ক ম্যানেজমেন্টঃ বাজারের অস্থিরতার উপর ভিত্তি করে রিয়েল টাইমে লাভ এবং স্টপ লস সামঞ্জস্য করে, বিভিন্ন বাজারের পরিবেশে অভিযোজিত করে।
স্থির হোল্ডিং সময়ঃ দীর্ঘমেয়াদী হোল্ডিংয়ের সাথে যুক্ত ঝুঁকিগুলি এড়ানো, প্রতিটি ব্যবসায়ের জন্য এক্সপোজার সময় নিয়ন্ত্রণ করা।
ইএমএ ডায়নামিক স্টপ-লসঃ গতিশীল সমর্থন এবং প্রতিরোধ হিসাবে চলমান গড় ব্যবহার করে, আরও নমনীয় স্টপ-লস সুরক্ষা প্রদান করে।
ভলিউম কনফার্মেশনঃ সিগন্যালের শক্তি নিশ্চিত করতে ভলিউম ব্রেকআউট ব্যবহার করে, ট্রেডের নির্ভুলতা বাড়ায়।
ভিজ্যুয়াল এইডসঃ চার্টে ক্রয়/বিক্রয় সংকেত এবং মূল মূল্য স্তরগুলি বিশ্লেষণ এবং সিদ্ধান্ত গ্রহণের সুবিধার্থে নোট করে।
বিপজ্জনক বাজার ঝুঁকিঃ ইএমএ ক্রসওভারগুলি পার্শ্ববর্তী, অস্থির বাজারে ঘন ঘন মিথ্যা সংকেত তৈরি করতে পারে।
স্থির আরএসআই থ্রেশহোল্ডঃ নির্ধারিত আরএসআই থ্রেশহোল্ডগুলি সমস্ত বাজারের অবস্থার জন্য উপযুক্ত নাও হতে পারে।
ভলিউম থ্রেশহোল্ড সংবেদনশীলতাঃ 3x গড় ভলিউম থ্রেশহোল্ড খুব বেশি বা কম হতে পারে, নির্দিষ্ট বাজারের জন্য সমন্বয় প্রয়োজন।
স্থির হোল্ডিং সময়সীমাঃ ১৫টি ক্যান্ডেলের স্থির বন্ধের সময়টি অকাল লাভজনক ব্যবসায়ের সমাপ্তি ঘটাতে পারে।
লাভ এবং স্টপ-লস মূল্য নির্ধারণঃ লাভ এবং স্টপ-লসের জন্য উচ্চ পরিমাণের ঘটনায় বন্ধের মূল্য ব্যবহার করা অনুকূল নাও হতে পারে।
ডায়নামিক আরএসআই থ্রেশহোল্ডঃ বাজারের অস্থিরতার ভিত্তিতে আরএসআই ওভারকুপ/ওভারসোল্ড থ্রেশহোল্ড স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে।
ভলিউম থ্রেশহোল্ডগুলি অপ্টিমাইজ করুনঃ ঐতিহাসিক তথ্যের উপর ভিত্তি করে ভলিউম ব্রেকআউট মাল্টিপ্লায়ারগুলিকে গতিশীলভাবে সামঞ্জস্য করার জন্য একটি অভিযোজনশীল প্রক্রিয়া চালু করুন।
হোল্ডিং টাইম ম্যানেজমেন্ট উন্নত করুনঃ ট্রেন্ড শক্তি এবং লাভজনকতার ভিত্তিতে সর্বোচ্চ হোল্ডিং সময়কে গতিশীলভাবে সামঞ্জস্য করুন।
লাভ এবং স্টপ-লস সেটিং উন্নত করুনঃ বাজারের অস্থিরতার ভিত্তিতে লাভ এবং স্টপ-লসের দামগুলি গতিশীলভাবে সেট করার জন্য ATR সূচকটি অন্তর্ভুক্ত করার বিষয়টি বিবেচনা করুন।
ট্রেন্ড ফিল্টার যুক্ত করুন: প্রাথমিক প্রবণতার বিরুদ্ধে ট্রেডিং এড়াতে দীর্ঘমেয়াদী EMA বা প্রবণতা সূচক প্রবর্তন করুন।
প্রাইস অ্যাকশন বিশ্লেষণ অন্তর্ভুক্ত করুনঃ প্রবেশ এবং প্রস্থান নির্ভুলতা উন্নত করতে ক্যান্ডেলস্টিক প্যাটার্ন এবং সমর্থন / প্রতিরোধের স্তরগুলি একত্রিত করুন।
ড্রডাউন কন্ট্রোল বিবেচনা করুনঃ সর্বাধিক ড্রডাউন সীমা নির্ধারণ করুন, নির্দিষ্ট ড্রডাউন স্তরগুলি পৌঁছে গেলে অবস্থান বন্ধ করতে বাধ্য করুন।
এই মাল্টি-ইন্ডিকেটর গতিশীল ট্রেডিং কৌশলটি ইএমএ, আরএসআই এবং ভলিউমকে একত্রিত করে একটি বিস্তৃত ট্রেডিং সিস্টেম তৈরি করে। এটি কেবলমাত্র বাজারের প্রবণতা ক্যাপচার করে না বরং গতিশীল লাভ / স্টপ-লস এবং স্থির হোল্ডিং সময়গুলির মাধ্যমে ঝুঁকি পরিচালনা করে। কৌশলটির শক্তিগুলি এর বহু-মাত্রিক বিশ্লেষণ এবং নমনীয় ঝুঁকি ব্যবস্থাপনায় রয়েছে, তবে এটি পরিবর্তিত বাজারের পরিবেশের চ্যালেঞ্জের মুখোমুখি হয়। আরও আরএসআই থ্রেশহোল্ড, ভলিউম বিচারের মানদণ্ড, হোল্ডিং টাইম ম্যানেজমেন্ট এবং লাভ / স্টপ-লস সেটিংস অপ্টিমাইজ করে, এই কৌশলটির বিভিন্ন বাজারের অবস্থার মধ্যে আরও ভাল পারফরম্যান্সের সম্ভাবনা রয়েছে। শেষ পর্যন্ত, এই কৌশলটি ব্যবসায়ীদের একটি নির্ভরযোগ্য কাঠামো সরবরাহ করে যা পৃথক ট্রেডিং স্টাইল এবং বাজারের বৈশিষ্ট্য অনুসারে কাস্টমাইজ এবং উন্নত করা যায়।
/*backtest start: 2024-06-29 00:00:00 end: 2024-07-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA & RSI Strategy", overlay=true) // Install indicators ema34 = ta.ema(close, 34) ema89 = ta.ema(close, 89) ema54 = ta.ema(close, 54) ema150 = ta.ema(close, 150) rsi = ta.rsi(close, 14) // Draw indicator plot(ema34, color=color.red, title="EMA 34") plot(ema89, color=color.blue, title="EMA 89") //plot(ema54, color=color.green, title="EMA 54") //plot(ema150, color=color.yellow, title="EMA 150") hline(50, "RSI 50", color=color.gray) plot(rsi, title="RSI", color=color.orange, linewidth=2, offset=-1) // condition long or short longCondition = ta.crossover(ema34, ema89) and rsi > 30 shortCondition = ta.crossunder(ema34, ema89) and rsi < 70 // Add strategy long if (longCondition) strategy.entry("Long", strategy.long) // Add strategy short if (shortCondition) strategy.entry("Short", strategy.short) // Calculate the average volume of previous candles length = 20 // Number of candles to calculate average volume avgVolume = ta.sma(volume, length) highVolumeCondition = volume > 3 * avgVolume // Determine take profit and stop loss prices when there is high volume var float takeProfitPriceLong = na var float stopLossPriceLong = na var float takeProfitPriceShort = na var float stopLossPriceShort = na if (longCondition) takeProfitPriceLong := na stopLossPriceLong := na if (shortCondition) takeProfitPriceShort := na stopLossPriceShort := na // Update take profit and stop loss prices when volume is high if (strategy.opentrades.entry_id(0) == "Long" and highVolumeCondition) takeProfitPriceLong := close stopLossPriceLong := close if (strategy.opentrades.entry_id(0) == "Short" and highVolumeCondition) takeProfitPriceShort := close stopLossPriceShort := close // Execute exit orders for buy and sell orders when there is high volume if (not na(takeProfitPriceLong)) strategy.exit("Take Profit Long", from_entry="Long", limit=takeProfitPriceLong, stop=stopLossPriceLong) if (not na(takeProfitPriceShort)) strategy.exit("Take Profit Short", from_entry="Short", limit=takeProfitPriceShort, stop=stopLossPriceShort) // Track the number of candles since the order was opened var int barsSinceEntryLong = na var int barsSinceEntryShort = na var bool longPositionClosed = false var bool shortPositionClosed = false if (longCondition) barsSinceEntryLong := 0 longPositionClosed := false if (shortCondition) barsSinceEntryShort := 0 shortPositionClosed := false if (strategy.opentrades.entry_id(0) == "Long") barsSinceEntryLong := barsSinceEntryLong + 1 if (strategy.opentrades.entry_id(0) == "Short") barsSinceEntryShort := barsSinceEntryShort + 1 // Check the conditions to close the order at the 15th candle if (strategy.opentrades.entry_id(0) == "Long" and barsSinceEntryLong >= 15 and not longPositionClosed) strategy.close("Long") longPositionClosed := true if (strategy.opentrades.entry_id(0) == "Short" and barsSinceEntryShort >= 15 and not shortPositionClosed) strategy.close("Short") shortPositionClosed := true // Thêm stop loss theo EMA34 if (strategy.opentrades.entry_id(0) == "Long") strategy.exit("Stop Loss Long", from_entry="Long", stop=ema34) if (strategy.opentrades.entry_id(0) == "Short") strategy.exit("Stop Loss Short", from_entry="Short", stop=ema34) // Displays buy/sell signals and price levels on the chart plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Displays take profit and stop loss prices on the chart // var line takeProfitLineLong = na // var line stopLossLineLong = na // var line takeProfitLineShort = na // var line stopLossLineShort = na // if (not na(takeProfitPriceLong)) // if na(takeProfitLineLong) // takeProfitLineLong := line.new(x1=bar_index, y1=takeProfitPriceLong, x2=bar_index + 1, y2=takeProfitPriceLong, color=color.blue, width=1, style=line.style_dashed) // else // line.set_xy1(takeProfitLineLong, x=bar_index, y=takeProfitPriceLong) // line.set_xy2(takeProfitLineLong, x=bar_index + 1, y=takeProfitPriceLong) // if (not na(stopLossPriceLong)) // if na(stopLossLineLong) // stopLossLineLong := line.new(x1=bar_index, y1=stopLossPriceLong, x2=bar_index + 1, y2=stopLossPriceLong, color=color.red, width=1, style=line.style_dashed) // else // line.set_xy1(stopLossLineLong, x=bar_index, y=stopLossPriceLong) // line.set_xy2(stopLossLineLong, x=bar_index + 1, y=stopLossPriceLong) // if (not na(takeProfitPriceShort)) // if na(takeProfitLineShort) // takeProfitLineShort := line.new(x1=bar_index, y1=takeProfitPriceShort, x2=bar_index + 1, y2=takeProfitPriceShort, color=color.blue, width=1, style=line.style_dashed) // else // line.set_xy1(takeProfitLineShort, x=bar_index, y=takeProfitPriceShort) // line.set_xy2(takeProfitLineShort, x=bar_index + 1, y=takeProfitPriceShort) // if (not na(stopLossPriceShort)) // if na(stopLossLineShort) // stopLossLineShort := line.new(x1=bar_index, y1=stopLossPriceShort, x2=bar_index + 1, y2=stopLossPriceShort, color=color.red, width=1, style=line.style_dashed) // else // line.set_xy1(stopLossLineShort, x=bar_index, y=stopLossPriceShort) // line.set_xy2(stopLossLineShort, x=bar_index + 1, y=stopLossPriceShort) // // Shows annotations for take profit and stop loss prices // if (not na(takeProfitPriceLong)) // label.new(x=bar_index, y=takeProfitPriceLong, text="TP Long", style=label.style_label_down, color=color.blue, textcolor=color.white) // if (not na(stopLossPriceLong)) // label.new(x=bar_index, y=stopLossPriceLong, text="SL Long", style=label.style_label_up, color=color.red, textcolor=color.white) // if (not na(takeProfitPriceShort)) // label.new(x=bar_index, y=takeProfitPriceShort, text="TP Short", style=label.style_label_up, color=color.blue, textcolor=color.white) // if (not na(stopLossPriceShort)) // label.new(x=bar_index, y=stopLossPriceShort, text="SL Short", style=label.style_label_down, color=color.red, textcolor=color.white)