শক্তিশালী দ্বৈত চলমান গড় ট্রেডিং কৌশলটি মধ্যম থেকে দীর্ঘমেয়াদী প্রবণতার দিক সনাক্ত করতে আপেক্ষিক শক্তি সূচক (আরএসআই) এবং পরিবর্তনের হার (আরওসি) উভয় সূচকের শক্তিকে একত্রিত করে। অন্তর্নির্মিত ফিল্টার এবং স্টপ লস শর্তগুলির সাথে, এই কৌশলটি প্রবণতার দিকটি নিশ্চিত হওয়ার পরেই বাজারে প্রবেশ করে, যা কার্যকরভাবে মিথ্যা ব্রেকআউটের ঝুঁকি হ্রাস করে।
এই কৌশলটি প্রবেশ সংকেতগুলি নির্ধারণের জন্য আরএসআই এবং আরওসি সূচকগুলির সংমিশ্রণ ব্যবহার করে। যখন দামগুলি ওভারবয়ড / ওভারসোল্ড অঞ্চলে পৌঁছায়, তখন এটি সম্ভাব্য বিপরীত পয়েন্টগুলি এবং বিপরীত সংকেতগুলির গঠন নির্দেশ করে। যখন দামগুলি এই অঞ্চলের মধ্যে দোলায়, তখন এটি বর্তমান প্রবণতা কিছু সময়ের জন্য অব্যাহত থাকতে পারে বলে মনে করে। আরওসি সূচক পরিবর্তনের হারের দৃষ্টিকোণ থেকে দামের প্রবণতা এবং গতির বিচার করে। দুটি সূচক বাজারের কাঠামো মূল্যায়নে একে অপরের পরিপূরক।
এছাড়াও, কৌশলটি কোনও ট্রেডে প্রবেশের আগে মধ্যম থেকে দীর্ঘমেয়াদী প্রবণতা ফিল্টার (এসএমএ) এবং স্বল্পমেয়াদী স্টপ লস লাইন অন্তর্ভুক্ত করে। এটি নিশ্চিত করে যে এন্ট্রিগুলি কেবলমাত্র নিশ্চিত প্রবণতা দিক এবং দোলনশীল বাজারে আসন্ন স্টপ লস ঝুঁকি ছাড়াই ঘটে। এই জাতীয় কনফিগারেশনগুলি পরিসীমা-সীমাবদ্ধ পরিবেশে হুইপসাউড হওয়ার সম্ভাবনা হ্রাস করে, কৌশলটিকে ব্যবসায়ীদের জন্য ঝুঁকি-পরিচালনাযোগ্য করে তোলে।
নমনীয় ইনপুট সেটিংস ব্যবসায়ীদের কেবলমাত্র আরএসআই, কেবলমাত্র আরওসি বা উভয়ই প্রবেশের ট্রিগার হিসাবে বেছে নিতে দেয়। এটি বিভিন্ন পণ্য এবং বাজারের অবস্থার মধ্যে কৌশলটির অভিযোজনযোগ্যতা প্রসারিত করে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল প্রবেশের সিদ্ধান্তের জন্য প্রবণতা এবং বিপরীত সংকেত উভয়ই একত্রিত করা, সঠিক সময় নিশ্চিত করার জন্য প্রবণতা এবং কাঠামোগত কারণ উভয়ই বিবেচনা করা। একক সূচক কৌশলগুলির তুলনায়, আরএসআই + আরওসি কম্বিনেশন কৌশলটিকে বাজারের গোলমাল এবং র্যান্ডমালিটির বিরুদ্ধে আরও শক্তিশালী করে তোলে।
আরেকটি সুবিধা হ'ল অন্তর্নির্মিত ট্রেন্ড ফিল্টার (এসএমএ) এবং স্বল্পমেয়াদী স্টপ লস, যা দোলনশীল বাজারে আটকা পড়ার সম্ভাবনা হ্রাস করে। ট্রেন্ড ডায়াগনোসিস এবং স্বল্পমেয়াদী স্টপ লসের মাধ্যমে প্রতিরক্ষা দুটি লাইন এটিকে একটি ঝুঁকি-নিয়ন্ত্রিত শক্তিশালী কৌশল করে তোলে।
অবশেষে, একাধিক পরামিতি সেটিং সংমিশ্রণ ব্যবসায়ীরা বিভিন্ন পণ্য এবং বাজার পরিবেশের জন্য কৌশল অপ্টিমাইজ করার অনুমতি দেয়। প্রবণতা বা পরিসীমা-বান্ধব বাজারে হোক না কেন, পরামিতি টিউনিংয়ের মাধ্যমে কৌশলটি অভিযোজিত হতে পারে।
কৌশলটির সবচেয়ে বড় ঝুঁকিটি আরএসআই এবং আরওসির মতো বিপরীত সংকেত সূচকগুলির বিলম্বিত প্রকৃতি থেকে আসে। যখন প্রবণতা পরিবর্তন হতে শুরু করে, এই সূচকগুলি প্রায়শই পরামিতিগুলিতে নির্ধারিত প্রান্তিক স্তরে পৌঁছানোর আগে পিছনে থাকে। এই ধরনের বিলম্ব কৌশলটির প্রবেশকে বিলম্বিত করতে পারে এবং এটি প্রবণতা প্রবর্তনের প্রাথমিক পর্যায়ে মিস করতে পারে।
আরেকটি সম্ভাব্য ঝুঁকি হ'ল দোলনশীল বাজারে, আরএসআই এবং আরওসি পরামিতি সেটিংগুলি খুব সংবেদনশীল হয়ে উঠতে পারে এবং নির্দিষ্ট মিথ্যা সংকেত তৈরি করতে পারে। যদি স্বল্পমেয়াদী স্টপ লসের সাথে একই সাথে ট্রিগার করা হয় তবে এই জাতীয় মিথ্যা সংকেতগুলি প্রকৃত ক্ষতির দিকে পরিচালিত করতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
বাজারের কাঠামোর বহুমুখী মূল্যায়নের মাধ্যমে সংকেতের নির্ভুলতা উন্নত করতে কেডিজে, এমএসিডি এর মতো কম্বো ব্যবহারের জন্য আরও সূচক অন্তর্ভুক্ত করুন
RSI এবং ROC পরামিতিগুলিতে অভিযোজিত অপ্টিমাইজেশান প্রক্রিয়া প্রবর্তন করুন যাতে সেটিংগুলি রিয়েল-টাইম অস্থিরতার ভিত্তিতে গতিশীলভাবে সামঞ্জস্য করতে পারে
প্রবণতা সরঞ্জাম এবং বিপরীত সরঞ্জামগুলি একই সাথে শর্ত পূরণ করার সময় নিশ্চিতকরণ প্রক্রিয়া যুক্ত করে প্রবেশের যুক্তিকে পরিমার্জন করুন, দোলনায় মিথ্যা সংকেতগুলিতে কাজ করা এড়ানো
স্টপ লস পরিসীমা প্রসারিত করুন বা স্টপ লস ক্লাস্টারিংয়ের কারণে মিসড মুনাফা হ্রাস করে, বিপরীতমুখী আরও জায়গা সরবরাহ করতে ট্রেলিং স্টপ লস সেট করুন
শক্তিশালী ডুয়াল মুভিং এভারেজ ট্রেডিং কৌশলটি মধ্যম থেকে দীর্ঘমেয়াদী প্রবণতা নিশ্চিতকরণের পরে কাঠামোগত সুযোগগুলি ক্যাপচার করার জন্য প্রবণতা নির্ণয় এবং বিপরীতমুখী সূচকগুলিকে সফলভাবে একত্রিত করে। শক্তিশালী কনফিগারযোগ্যতার সাথে, ব্যবসায়ীরা পৃথক স্টক এবং বাজারের অবস্থার জন্য পরামিতিগুলি অনুকূল করতে পারে। দ্বৈত প্রতিরক্ষা লাইন এটিকে ঝুঁকি-নিয়ন্ত্রিত পছন্দও করে তোলে। আরও সূচক অন্তর্ভুক্ত করে বা অভিযোজিত পরামিতি টিউনিং প্রক্রিয়া স্থাপন করে আরও পারফরম্যান্স উন্নতি অর্জন করা যেতে পারে।
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © GlobalMarketSignals //@version=4 strategy("GMS: RSI & ROC Strategy", overlay=true) LongShort = input(title="Long Only or Short Only or Both?", type=input.string, defval="Both", options=["Both", "Long Only", "Short Only"]) RSIroc = input(title="RSI Only, ROC Only, Both?", type=input.string, defval="Both", options=["Both", "RSI Only", "ROC Only"]) RSILength = input(title="RSI Length", type = input.integer ,defval=14) RSIUpper = input(title="RSI Upper Threshold", type = input.float ,defval=70) RSILower = input(title="RSI Lower Threshold", type = input.float ,defval=30) ROCLength = input(title="ROC Length", type = input.integer ,defval=14) ROCUpper = input(title="ROC Upper Threshold", type = input.float ,defval=0.01) ROCLower = input(title="ROC Lower Threshold", type = input.float ,defval=-0.01) LongExit = input(title="Long Exit SMA Length", type = input.integer ,defval=5) ShortExit = input(title="Short Exit SMA Length", type = input.integer ,defval=5) AboveBelow = input(title="Trend SMA Filter?", type=input.string, defval="Above", options=["Above", "Below", "Don't Include"]) TrendLength = input(title="Trend SMA Length", type = input.integer ,defval=200) //RSI ONLY //Long Side if LongShort =="Long Only" and AboveBelow == "Above" and RSIroc == "RSI Only" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close>sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Long Only" and AboveBelow == "Below" and RSIroc == "RSI Only" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close<sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Long Only" and AboveBelow == "Don't Include" and RSIroc == "RSI Only" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Above" and RSIroc == "RSI Only" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close>sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Below" and RSIroc == "RSI Only" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close<sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Don't Include" and RSIroc == "RSI Only" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit)) strategy.close("LONG", when = close>sma(close,LongExit)) //RSI ONLY //SHORT SIDE if LongShort =="Short Only" and AboveBelow == "Above" and RSIroc == "RSI Only" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Short Only" and AboveBelow == "Below" and RSIroc == "RSI Only" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Short Only" and AboveBelow == "Don't Include" and RSIroc == "RSI Only" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Above" and RSIroc == "RSI Only" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Below" and RSIroc == "RSI Only" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Don't Include" and RSIroc == "RSI Only" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit)) strategy.close("SHORT", when = close<sma(close,ShortExit)) ///////-----------------///////////// ///////-----------------///////////// ///////-----------------///////////// //ROC ONLY //Long Side if LongShort =="Long Only" and AboveBelow == "Above" and RSIroc == "ROC Only" strategy.entry("LONG", true, when = roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close>sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Long Only" and AboveBelow == "Below" and RSIroc == "ROC Only" strategy.entry("LONG", true, when = roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close<sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Long Only" and AboveBelow == "Don't Include" and RSIroc == "ROC Only" strategy.entry("LONG", true, when = roc(close,ROCLength)<ROCLower and close< sma(close,LongExit)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Above" and RSIroc == "ROC Only" strategy.entry("LONG", true, when = roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close>sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Below" and RSIroc == "ROC Only" strategy.entry("LONG", true, when = roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close<sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Don't Include" and RSIroc == "ROC Only" strategy.entry("LONG", true, when = rsi(close,ROCLength)<ROCLower and close< sma(close,LongExit)) strategy.close("LONG", when = close>sma(close,LongExit)) //ROC ONLY //SHORT SIDE if LongShort =="Short Only" and AboveBelow == "Above" and RSIroc == "ROC Only" strategy.entry("SHORT", false, when = roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Short Only" and AboveBelow == "Below" and RSIroc == "ROC Only" strategy.entry("SHORT", false, when = roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Short Only" and AboveBelow == "Don't Include" and RSIroc == "ROC Only" strategy.entry("SHORT", false, when = roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Above" and RSIroc == "ROC Only" strategy.entry("SHORT", false, when = roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Below" and RSIroc == "ROC Only" strategy.entry("SHORT", false, when = roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Don't Include" and RSIroc == "ROC Only" strategy.entry("SHORT", false, when = roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit)) strategy.close("SHORT", when = close<sma(close,ShortExit)) ///////-----------------///////////// ///////-----------------///////////// ///////-----------------///////////// //BOTH //Long Side if LongShort =="Long Only" and AboveBelow == "Above" and RSIroc == "Both" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close>sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Long Only" and AboveBelow == "Below" and RSIroc == "Both" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close<sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Long Only" and AboveBelow == "Don't Include" and RSIroc == "Both" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and roc(close,ROCLength)<ROCLower and close< sma(close,LongExit)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Above" and RSIroc == "Both" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close>sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Below" and RSIroc == "Both" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and roc(close,ROCLength)<ROCLower and close< sma(close,LongExit) and close<sma(close,TrendLength)) strategy.close("LONG", when = close>sma(close,LongExit)) if LongShort =="Both" and AboveBelow == "Don't Include" and RSIroc == "Both" strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and roc(close,ROCLength)<ROCLower and close< sma(close,LongExit)) strategy.close("LONG", when = close>sma(close,LongExit)) //BOTH //SHORT SIDE if LongShort =="Short Only" and AboveBelow == "Above" and RSIroc == "Both" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Short Only" and AboveBelow == "Below" and RSIroc == "Both" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Short Only" and AboveBelow == "Don't Include" and RSIroc == "Both" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Above" and RSIroc == "Both" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Below" and RSIroc == "Both" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength)) strategy.close("SHORT", when = close<sma(close,ShortExit)) if LongShort =="Both" and AboveBelow == "Don't Include" and RSIroc == "Both" strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and roc(close,ROCLength)>ROCUpper and close> sma(close,ShortExit)) strategy.close("SHORT", when = close<sma(close,ShortExit))