এই কৌশলটি দ্রুত বৃদ্ধি পাচ্ছে এমন স্টকগুলি সনাক্ত করে এবং যখন দাম নতুন উচ্চতা ভেঙে দেয় তখন দীর্ঘ অবস্থান নেয়। এটি লাভকে লক করার জন্য স্থির শতাংশ লাভ গ্রহণ করে। কৌশলটি প্রবণতা অনুসরণকারী কৌশলগুলির অন্তর্গত।
কৌশলটি মূলত দুটি সূচকের উপর ভিত্তি করেঃ
ফাস্ট আরএসআইঃ এটি মূল্যের গতি বিচার করতে সাম্প্রতিক 3 বারের উত্থান এবং পতন গণনা করে। যখন দ্রুত আরএসআই 10 এর নীচে থাকে, তখন এটি ওভারসোল্ড স্ট্যাটাস হিসাবে বিবেচিত হয়।
শরীরের ফিল্টারঃ এটি সাম্প্রতিক 20 বারের গড় শরীরের আকার গণনা করে। যখন শরীরের আকার গড় শরীরের 2.5 গুণ বেশি হয়, এটি একটি বৈধ ব্রেকআউট বলে মনে করা হয়।
যখন দ্রুত আরএসআই 10 এর নিচে থাকে এবং বডি ফিল্টারটি বৈধ হয়, তখন একটি লং পজিশন খোলা হবে। এর পরে, 20% এর একটি নির্দিষ্ট লাভের লাভ নির্ধারণ করা হয়। যখন মূল্য খোলা মূল্য * (1 + লাভের শতাংশ) অতিক্রম করে, তখন অবস্থানটি বন্ধ হয়ে যাবে।
এই কৌশলটির সুবিধা হ'ল এটি ট্রেন্ডের শুরুতে ব্রেকআউট সুযোগগুলি ক্যাপচার করতে পারে। দ্রুত আরএসআই ওভারসোল্ড স্তরগুলি বিচার করে এবং শরীরের ফিল্টার মিথ্যা ব্রেকআউটগুলি এড়ায়। স্থায়ী শতাংশ প্রতিটি ব্যবসায়ের মুনাফায় লাভকে লক করে এবং প্রবণতা ধরে রাখে।
এই কৌশলটির সুবিধাঃ
দ্রুত আরএসআই ওভারসোল্ডের মাত্রা চিহ্নিত করে এবং প্রবেশের নির্ভুলতা বাড়ায়।
শরীরের ফিল্টারটি ভ্রান্ত বিকৃতির কারণে মিথ্যা ব্রেকআউট এড়ায়।
ফিক্সড প্রসেন্টেজ টেক লাভ স্থিতিশীল মুনাফা অর্জন করে এবং প্রবণতা ধরতে পারে।
যুক্তিটি সহজ এবং স্পষ্ট, সহজেই বোঝা যায় এবং বাস্তবায়িত হয়।
দুর্দান্ত প্রসারণযোগ্যতার সাথে মার্জিত কোড কাঠামো, অপ্টিমাইজ করা সহজ।
স্থিতিশীল ইতিবাচক রিটার্ন এবং ব্যাকটেস্টে উচ্চ জয় হার।
কিছু ঝুঁকি লক্ষ্য করুনঃ
কোন স্টপ লস মেকানিজম নেই, ক্ষতি বাড়ার ঝুঁকি আছে।
অযৌক্তিক লাভের মাত্রা অকাল বা খুব গভীর প্রস্থান হতে পারে।
অস্থির বাজারে ধারাবাহিক ছোট ক্ষতি হতে পারে।
অর্থায়নের খরচ বিবেচনা করা হয় না, প্রকৃত রিটার্ন কম হতে পারে।
বিভিন্ন পণ্যের মধ্যে পর্যাপ্ত পরামিতি অপ্টিমাইজেশান নেই।
কিছু দিক অপ্টিমাইজ করা যেতে পারেঃ
একক ট্রেড লস নিয়ন্ত্রণের জন্য স্টপ লস যোগ করুন।
প্রবণতা অনুসরণ করার জন্য গতিশীল লাভের অপ্টিমাইজ করুন।
এন্ট্রি সঠিকতা উন্নত করার জন্য ব্রেকআউট লজিক উন্নত করুন।
মূলধন ব্যবহারের অপ্টিমাইজেশান করার জন্য পজিশন সাইজিং মডিউল যোগ করুন।
বিভিন্ন পণ্যের জন্য প্যারামিটার অপ্টিমাইজেশান মডিউল যোগ করুন।
ঝামেলাপূর্ণ বাজারে ক্ষতি এড়াতে ফিল্টার যুক্ত করুন।
গড় খরচ ব্যবস্থাপনা যোগ করার কথা বিবেচনা করুন।
সংক্ষেপে, এটি একটি মার্জিত এবং সহজ প্রবণতা অনুসরণকারী কৌশল। এটি ওভারসোল্ড স্তরগুলি সনাক্ত করতে দ্রুত আরএসআই, বৈধ ব্রেকআউট নিশ্চিত করতে বডি ফিল্টার এবং স্থিতিশীল রিটার্ন তৈরি করতে স্থির শতাংশ লাভ গ্রহণ ব্যবহার করে। যদিও অপ্টিমাইজেশনের জন্য রুম রয়েছে, কৌশলটি প্রতিক্রিয়াশীল এবং দ্রুত পরিবর্তিত বাজারের জন্য উপযুক্ত, এটি একটি খুব ব্যবহারিক ট্রেডিং কৌশল তৈরি করে। ক্রমাগত অপ্টিমাইজেশনের সাথে এটি একটি শক্তিশালী দীর্ঘমেয়াদী কৌশল হয়ে উঠতে পারে।
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // this is based on https://www.tradingview.com/v/PbQW4mRn/ strategy(title = "ONLY LONG V4 v1", overlay = true, initial_capital = 1000, pyramiding = 1000, calc_on_order_fills = false, calc_on_every_tick = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_value = 0.075) //study(title = "ONLY LONG V4 v1", overlay = true) //Fast RSI src = close fastup = rma(max(change(src), 0), 3) fastdown = rma(-min(change(src), 0), 3) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Body Filter body = abs(close - open) abody = sma(body, 20) mac = sma(close, 20) len = abs(close - mac) sma = sma(len, 100) max = max(open, close) min = min(open, close) up = close < open and len > sma * 2 and min < min[1] and fastrsi < 10 and body > abody * 2.5 // Strategy // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ var bool longCondition = na longCondition := up == 1 ? 1 : na // Get the price of the last opened long var float last_open_longCondition = na last_open_longCondition := longCondition ? close : nz(last_open_longCondition[1]) // Get the bar time of the last opened long var int last_longCondition = 0 last_longCondition := longCondition ? time : nz(last_longCondition[1]) // Take profit // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ tp = input(20, "TAKE PROFIT %", type = input.float, minval = 0, step = 0.5) long_tp = crossover(high, (1+(tp/100))*last_open_longCondition) and not longCondition // Get the time of the last tp close var int last_long_tp = na last_long_tp := long_tp ? time : nz(last_long_tp[1]) Final_Long_tp = long_tp and last_longCondition > nz(last_long_tp[1]) // Count your long conditions var int sectionLongs = 0 sectionLongs := nz(sectionLongs[1]) var int sectionTPs = 0 sectionTPs := nz(sectionTPs[1]) // Longs Counter if longCondition sectionLongs := sectionLongs + 1 sectionTPs := 0 if Final_Long_tp sectionLongs := 0 sectionTPs := sectionTPs + 1 // Signals // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ // Long // label.new( // x = longCondition[1] ? time : na, // y = na, // text = 'LONG'+tostring(sectionLongs), // color=color.lime, // textcolor=color.black, // style = label.style_labelup, // xloc = xloc.bar_time, // yloc = yloc.belowbar, // size = size.tiny) // Tp // label.new( // x = Final_Long_tp ? time : na, // y = na, // text = 'PROFIT '+tostring(tp)+'%', // color=color.orange, // textcolor=color.black, // style = label.style_labeldown, // xloc = xloc.bar_time, // yloc = yloc.abovebar, // size = size.tiny) ltp = iff(Final_Long_tp, (last_open_longCondition*(1+(tp/100))), na), plot(ltp, style=plot.style_cross, linewidth=3, color = color.white, editable = false) // Backtesting // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ testStartYear = input(2019, "BACKTEST START YEAR", minval = 1, maxval = 2222) testStartMonth = input(01, "BACKTEST START MONTH", minval = 1, maxval = 12) testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31) testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) strategy.entry("long", strategy.long, when = longCondition and (time >= testPeriodStart)) strategy.exit("TP", "long", limit = (last_open_longCondition*(1+(tp/100)))) // Alerts // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ alertcondition(longCondition[1], title="Long Alert", message = "LONG") alertcondition(Final_Long_tp, title="Long TP Alert", message = "LONG TP")