এই কৌশলটি ক্রিপ্টোকারেন্সিগুলির জন্য ট্রেডিং সংকেতগুলি সনাক্ত করতে মুভিং এভারেজ কনভার্জেন্স ডিভার্জেন্স (এমএসিডি) এবং আপেক্ষিক শক্তি সূচক (আরএসআই) সূচকগুলি ব্যবহার করে। এটি ট্রেডিং সিদ্ধান্ত গ্রহণের জন্য বাজার প্রবণতা এবং ওভারকুপ / ওভারসোল্ড স্তরগুলি বিচার করার জন্য আরএসআই সহ স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী চলমান গড়ের মধ্যে পার্থক্য গণনা করে।
স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী চলমান গড় হিসাবে 12 দিনের EMA এবং 26 দিনের EMA গণনা করুন।
MACD হিস্টোগ্রাম হিসাবে সংক্ষিপ্ত এবং দীর্ঘ EMA এর মধ্যে পার্থক্য গণনা করুন।
সিগন্যাল লাইন হিসেবে এমএসিডি এর ৯ দিনের ইএমএ গণনা করুন।
অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয়ের মাত্রা নির্ধারণের জন্য ১৪ দিনের আরএসআই গণনা করুন।
যখন MACD সিগন্যাল লাইনের উপরে ক্রস করে এবং RSI 81 এর বেশি হয় তখন ক্রয় সংকেত প্রদর্শন করে।
যখন MACD সিগন্যাল লাইনের নিচে অতিক্রম করে এবং RSI 27 এর কম হয় তখন বিক্রয় সংকেত প্রদর্শন করুন।
প্রবেশ এবং প্রস্থান জন্য অন্তর্নির্মিত কৌশল মডিউল ব্যবহার করুন.
এমএসিডি প্রবণতা এবং পরিবর্তন সনাক্ত করতে পারে, আরএসআই ওভারকুপ/ওভারসোল্ড স্তর দেখায়। উভয়কে একত্রিত করা সংকেত নির্ভুলতা উন্নত করে।
শূন্য রেখার উপরে/নিচে ম্যাকডি স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী প্রবণতার দিক নির্দেশনা/শক্তি নির্দেশ করে।
উচ্চ/নিম্ন স্তরে RSI সম্ভাব্য ওভারহাইটিং/ওভারসোল্ডিং নির্দেশ করে। ট্রেডিং সিগন্যাল খুঁজে পেতে সাহায্য করে।
স্পষ্ট এবং সহজ ট্রেডিং সিগন্যাল, ব্যবসায়ের পদ্ধতিগতভাবে সম্পাদন করা সহজ।
অপ্টিমাইজেশান এবং বিভিন্ন বাজারের অবস্থার সাথে মানিয়ে নিতে কাস্টমাইজযোগ্য পরামিতি।
ম্যাকডি এবং আরএসআই ডেটা মিথ্যা ব্রেকআউট এবং অস্বাভাবিকতার জন্য প্রবণ, ভুল সংকেত তৈরি করতে পারে।
স্থির পরামিতিগুলি বাজারের পরিবর্তনের সাথে মানিয়ে নিতে ব্যর্থ হতে পারে, অপ্টিমাইজেশান প্রয়োজন।
সিগন্যালগুলি বিলম্বিত হতে পারে, পরিবর্তনের সময়ে ট্রেড করতে অক্ষম।
শুধুমাত্র লং/শর্ট, বিভিন্ন মার্কেটে মুনাফা করতে পারছে না।
সর্বোত্তম সেটিংস খুঁজে পেতে বিভিন্ন প্যারামিটার সমন্বয় পরীক্ষা করুন।
মিথ্যা ব্রেকআউট ট্রেড এড়াতে ফিল্টার যুক্ত করুন।
একতরফা বাজারে হ্রাস সীমাবদ্ধ করতে স্টপ লস যোগ করুন।
পজিশনের আকার, প্রবণতা বৃদ্ধি এবং ব্যাপ্তি হ্রাস পরিচালনা করুন।
আরও সঠিক সংকেত পেতে অন্যান্য সূচকগুলির সাথে একত্রিত করুন।
বিভিন্ন যন্ত্রপাতি এবং সময়সীমার উপর পরীক্ষা।
এই কৌশলটি ট্রেন্ড এবং ট্রেডিং সিগন্যাল সনাক্ত করতে এমএসিডি এবং আরএসআইয়ের পরিপূরক শক্তি ব্যবহার করে। সূক্ষ্ম টিউনিং পরামিতি এবং ফিল্টার যুক্ত করা স্থিতিশীলতা এবং লাভজনকতা উন্নত করতে পারে। স্টপ এবং পজিশন সাইজিং সামঞ্জস্য করা লাভ সর্বাধিকীকরণ এবং ঝুঁকি হ্রাস করতে সহায়তা করে। এমএসিডি এবং আরএসআইয়ের উপকারিতা এবং অসুবিধা এই কৌশলটিকে স্বল্পমেয়াদী ব্যবসায়ের পরিবর্তে মাঝারি থেকে দীর্ঘমেয়াদী প্রবণতা ধরার জন্য আরও উপযুক্ত করে তোলে। সামগ্রিকভাবে, এটি একটি সহজ এবং ব্যবহারিক কৌশল যা উন্নত ব্যাকটেস্ট এবং লাইভ ফলাফল অর্জনের জন্য আরও পরীক্ষা এবং অপ্টিমাইজেশনের মূল্যবান।
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-12 04:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Revision: 5 // Author: @Hugo_Moriceau //study("Thesis_EMLYON_Withdate-strategies-Daily_Crypto_Moriceau_indicator",overlay=true) // Pyramide 10 order size 100, every tick strategy("Daily_Crypto_Moriceau_indicator",overlay=true) // === GENERAL INPUTS === fast = 12, slow = 26 fastMA = ema(close, fast) slowMA = ema(close, slow) macd = fastMA - slowMA signal = sma(macd, 9) rsi = rsi(close,14) tradeInvert = input(defval = false, title = "Invert Trade Direction?") // === LOGIC === // is fast ma above slow ma? aboveBelow = fastMA >= slowMA ? true : false // are we inverting our trade direction? tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false // === Plot Setting === //plot(fastMA,color=red) //plot(slowMA,color=blue) //barcolor(color=iff(fastMA > slowMA, yellow, na)) //barcolor(color=iff(fastMA < slowMA, black, na)) barcolor(color=iff(macd > 0.12*close , fuchsia, na)) barcolor(color=iff(macd < -0.1*close , lime, na)) dataS= macd > 0.125 and rsi>81 and fastMA > slowMA dataB= macd < -0.1 and rsi<27 and fastMA< slowMA plotchar(dataB, char='B',color=black,size = size.tiny,location = location.belowbar,transp= 0) plotchar(dataS, char='S',color=black,size = size.tiny,location = location.abovebar,transp= 0) // === BACKTEST RANGE === FromMonth = input(defval = 01, title = "From Month", minval = 1) FromDay = input(defval = 01, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year", minval = 2014) ToMonth = input(defval = 2, title = "To Month", minval = 1) ToDay = input(defval = 10, title = "To Day", minval = 1) ToYear = input(defval = 2019, title = "To Year", minval = 2018) // === STRATEGY RELATED INPUTS ===+ // the risk management inputs inpTakeProfit = input(defval = 20000, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 1500, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 100, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === STRATEGY - LONG POSITION EXECUTION === enterLong() => not tradeDirection[1] and tradeDirection exitLong() => tradeDirection[1] and not tradeDirection strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in strategy.close(id = "Long", when = exitLong()) // ...and when to get out // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => tradeDirection[1] and not tradeDirection exitShort() => not tradeDirection[1] and tradeDirection strategy.entry(id = "Short", long = false, when = enterShort()) strategy.close(id = "Short", when = exitShort()) // === STRATEGY RISK MANAGEMENT EXECUTION === // finally, make use of all the earlier values we got prepped strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)