রেঙ্কো এটিআর ট্রেন্ড রিভার্সাল কৌশল একটি অনন্য ট্রেডিং পদ্ধতি যা আর্থিক বাজারে ট্রেন্ড রিভার্সাল পয়েন্টগুলি সনাক্ত করতে গড় সত্য পরিসীমা (এটিআর) সূচকের সাথে একত্রে রেঙ্কো চার্টগুলি ব্যবহার করে। রেঙ্কো চার্টগুলির পুনরায় আঁকার সমস্যা দূর করে, এই কৌশলটি সঠিকভাবে টার্নিং পয়েন্টগুলি ক্যাপচার করতে এবং ট্রেডিং সিদ্ধান্তের জন্য পরিষ্কার সংকেত সরবরাহ করতে সক্ষম।
এই কৌশলটি প্রথমে একটি নির্দিষ্ট সময়ের জন্য ATR মান গণনা করে এবং এই ATR কে রেঙ্কো চার্টের ইট আকার হিসাবে ব্যবহার করে। যখন দামের গতি এক ATR ছাড়িয়ে যায় তখন নতুন রেঙ্কো ইটগুলি আঁকা হয়। এইভাবে, রেঙ্কো চার্ট স্বয়ংক্রিয়ভাবে বাজারের অস্থিরতার সাথে খাপ খাইয়ে নিতে পারে, উচ্চতর অস্থিরতার জন্য বৃহত্তর ইট আকার এবং কম অস্থিরতার সময়ের জন্য ছোট ইট আকার সহ।
রেঙ্কো চার্টের ওপেন প্রাইস বন্ধের দামের নিচে অতিক্রম করলে একটি ক্রয় সংকেত তৈরি হয়। বিপরীতভাবে, ওপেন প্রাইস বন্ধের দামের উপরে অতিক্রম করলে একটি বিক্রয় সংকেত তৈরি হয়। এই সংকেতগুলি সম্ভাব্য প্রবণতা বিপরীত পয়েন্ট চিহ্নিত করে।
কৌশলটি গতিশীলভাবে ব্যবহারকারীর সংজ্ঞায়িত ইনপুট পরামিতিগুলির উপর ভিত্তি করে রেনকো ওপেন মূল্যের শতাংশ হিসাবে প্রতিটি ব্যবসায়ের জন্য স্টপ-লস এবং লাভের মাত্রা নির্ধারণ করে। এটি প্রতিটি ব্যবসায়ের জন্য ঝুঁকি এবং পুরষ্কার নিয়ন্ত্রণ করে।
খোলা এবং বন্ধের দামগুলি ম্যানুয়ালি গণনা করে, পুনরায় চিত্রিত করা দূর করা হয়, সংকেতগুলি আরও সঠিক এবং সময়মত করে তোলে।
ATR-ভিত্তিক ইট আকার কৌশলকে স্বয়ংক্রিয়ভাবে বিভিন্ন বাজারের অস্থিরতার অবস্থার সাথে মানিয়ে নিতে দেয়।
স্টপ লস এবং লাভ নেওয়ার মাত্রা নির্ধারণের গতিশীল প্রক্রিয়াটি বাজারের অস্থিরতার ভিত্তিতে ঝুঁকি নিয়ন্ত্রণকে আরও ভাল করে তোলে।
রেনকো চার্ট বাজারের গোলমালকে ফিল্টার করে এবং ট্রেন্ড বিপরীতমুখী হওয়ার জন্য একটি পরিষ্কার ভিজ্যুয়াল সরবরাহ করে।
ব্যবহারকারীদের বিভিন্ন বাজারের পরিবেশের জন্য ATR সময়কাল, স্টপ লস % এবং লাভ % এর মতো পরামিতিগুলি অনুকূল করতে হবে। খারাপ পরামিতি সেটিং কৌশল কর্মক্ষমতা হ্রাস করতে পারে।
প্রধান সংবাদ ঘটনা বা নীতি প্রকাশের ফলে স্টপ লস ছাড়িয়ে দ্রুত স্লাইপ বা লাভের স্তর নিতে পারে, যা বড় ক্ষতির দিকে পরিচালিত করে।
কিছু ক্ষেত্রে, নির্দেশিত বিপরীত প্যাটার্নটি বাস্তবায়িত হতে পারে না, যার ফলে ব্যবসায় হারাতে পারে।
সামগ্রিক প্রবণতার দিকনির্দেশনা পরিমাপ করতে উচ্চতর সময়সীমা ব্যবহার করা যেতে পারে। কম সময়সীমা মিথ্যা সংকেত ফিল্টার করতে পারে।
গতি, অস্থিরতা বা অন্যান্য সূচকগুলির সংমিশ্রণ ব্যবহার করে সিগন্যালের গুণমান বাড়ানো যায় এবং মিথ্যা সংকেতগুলি এড়ানো যায়।
বাজারের অস্থিরতা এবং প্রবেশ মূল্য এবং বর্তমান মূল্যের মধ্যে দূরত্বের উপর ভিত্তি করে লাভের অনুপাতগুলি গতিশীলভাবে সামঞ্জস্য করা যেতে পারে।
রেঙ্কো এটিআর ট্রেন্ড রিভার্সাল কৌশল সফলভাবে আর্থিক বাজারে স্বয়ংক্রিয়ভাবে ট্রেন্ড রিভার্সাল পয়েন্টগুলি সনাক্ত করতে এটিআর সূচক সহ রেঙ্কো চার্টগুলি ব্যবহার করে। মূল সুবিধাগুলির মধ্যে রয়েছে পুনরায় পেইন্টিং নির্মূল, পরিবর্তনশীল অস্থিরতার সাথে স্বয়ংক্রিয় অভিযোজনযোগ্যতা এবং গতিশীল স্টপ লস / লাভ গ্রহণ। তবে ব্যবহারকারীদের প্যারামিটার অপ্টিমাইজেশন ঝুঁকি, ইভেন্টের ঝুঁকি এবং ব্যর্থ বিপরীত ঝুঁকি সম্পর্কে সতর্ক থাকতে হবে। আরও উন্নতিতে একাধিক সময়সীমা ব্যবহার, অন্যান্য সূচকগুলি একত্রিত করা এবং গতিশীল লাভ গ্রহণের সমন্বয় অন্তর্ভুক্ত থাকতে পারে।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='[tradinghook] - Renko Trend Reversal Strategy', shorttitle='[tradinghook] - Renko TRS', overlay=true ,initial_capital = 100, commission_value = 0.05, default_qty_value = 5) // INPUTS renkoATRLength = input.int(10, minval=1, title='ATR Length') stopLossPct = input.float(3, title='Stop Loss Percentage', step=0.1) takeProfitPct = input.float(20, title='Take Profit Percentage', step=0.1) startDate = input(timestamp("01 July 2023 00:00"), title="Start Date") endDate = input(timestamp("31 Dec 2025 23:59"), title="End Date") enableShorts = input.bool(true, title="Enable Shorts") var float stopLossPrice = na var float takeProfitPrice = na atr = ta.atr(renkoATRLength) // thanks to https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/ for manually calculating renkoClose and renkoOpen in order to remove repaint getRenkoClose() => p1 = 0.0 p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1]) p1 Renko3() => p3 = 0.0 p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1]) p3 getRenkoOpen() => open_v = 0.0 Br_2 = Renko3() open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1]) open_v renkoOpen = getRenkoOpen() renkoClose = getRenkoClose() // COLORS colorGreen = #089981 colorRed = #F23645 bgTransparency = 95 bgColorRed = color.new(colorRed, bgTransparency) bgColorGreen = color.new(colorGreen, bgTransparency) lineColor = renkoClose < renkoOpen ? colorRed : colorGreen bgColor = renkoClose < renkoOpen ? bgColorRed : bgColorGreen // PLOTS plot(renkoOpen, title="Renko Open", style=plot.style_line, linewidth=2, color=lineColor) bgcolor(bgColor) // SIGNALS isWithinTimeRange = true buySignal = ta.crossunder(renkoOpen, renkoClose) and isWithinTimeRange sellSignal = ta.crossover(renkoOpen, renkoClose) and isWithinTimeRange and enableShorts if (buySignal) stopLossPrice := renkoOpen * (1 - stopLossPct / 100) takeProfitPrice := renkoOpen * (1 + takeProfitPct / 100) strategy.entry("Long", strategy.long) strategy.exit("ExitLong", "Long", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice)) if (sellSignal) stopLossPrice := renkoOpen * (1 + stopLossPct / 100) takeProfitPrice := renkoOpen * (1 - takeProfitPct / 100) strategy.entry("Short", strategy.short) strategy.exit("ExitShort", "Short", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))