এই কৌশলটি গতিশীল স্টপ লস পয়েন্ট সেট করতে এবং ঝুঁকি নিয়ন্ত্রণের জন্য মূল্যের ওঠানামা উপর ভিত্তি করে স্টপ লস অবস্থানগুলি সামঞ্জস্য করতে ATR সূচক ব্যবহার করে। প্রধানত এটি 5EMA 20EMA এর উপরে অতিক্রম করার সময় দীর্ঘ প্রবেশ করে এবং তারপরে স্টপ লস পজিশন সেট করতে এবং মুনাফা গ্রহণের জন্য ATR সূচক ব্যবহার করে। স্টপ লস অবস্থানটি আরও লাভের লক করার জন্য দামের গতির উপর ভিত্তি করে সামঞ্জস্য করা হবে।
কৌশলটি প্রথমে বিচার করে যদি 5EMA 20EMA এর উপরে অতিক্রম করে লম্বা হয়। প্রবেশের পরে, এটি ATR সূচক ব্যবহার করে বর্তমান মূল্যের প্রবেশ মূল্যের ATR গুণগুলি গণনা করে এবং প্রবেশ মূল্যের নীচে 1.5ATR এ স্টপ লস পজিশন সেট করে। দাম বাড়ার সাথে সাথে স্টপ লস পজিশনটি ধীরে ধীরে বাড়ানো হয় যাতে পজিশনের মুনাফা বৃদ্ধি পায়।
বিশেষ করে, কৌশলটি নিম্নলিখিত ভেরিয়েবলগুলি সংজ্ঞায়িত করেঃ
প্রবেশের পরে, এটি বর্তমান ATR মান হিসাবে atr_ref গণনা করে এবং বর্তমান মূল্যের সাথে প্রবেশের দামের ATR গুণক হিসাবে atr_div গণনা করে। তারপরে atr_div এর উপর ভিত্তি করে atr_down, atr_current এবং atr_up এর অবস্থানগুলি সেট করে। স্টপ লস মূল্য স্টপ_প্রাইস 1.5ATR এ প্রবেশের দামের নীচে সেট করা হয়।
যখন মূল্য বৃদ্ধি পায়, বর্তমান মূল্যের তুলনা করে, যদি গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড় গড়
যদি মূল্য প্রবেশ মূল্যের 3ATR এর উপরে উঠে যায়, তবে এটি লাভের লক করার জন্য আংশিকভাবে অবস্থান বন্ধ করবে এবং tookProfit সত্যে সেট করবে। এর পরে যদি দাম বাড়তে থাকে তবে এটি স্টপ লস বাড়িয়ে তুলতে থাকবে। যখন স্টপ লস ট্রিগার করা হয়, এটি tookProfit পরীক্ষা করে - যদি ইতিমধ্যে আংশিক লাভের আগে নেওয়া হয় তবে এটি কেবলমাত্র অবশিষ্ট অবস্থানটি বন্ধ করবে; অন্যথায় পুরো অবস্থানটি বন্ধ করুন।
স্টপ লসকে গতিশীলভাবে সামঞ্জস্য করার জন্য ATR সূচক ব্যবহার করে বাজারের অস্থিরতার উপর ভিত্তি করে যুক্তিসঙ্গত স্টপ দূরত্ব সেট করা যেতে পারে।
ক্ষতির সীমা নির্ধারণের সময় প্রবণতা অনুসরণ করুন। লাভ জমা করার জন্য স্টপ লস ধীরে ধীরে বাড়ানো হবে।
আংশিক মুনাফা গ্রহণ প্রক্রিয়া কিছু মুনাফা লক করে এবং ঝুঁকি হ্রাস করে। মুনাফা চালানোর অনুমতি দেওয়ার জন্য স্টপ লস ক্রমাগত বৃদ্ধি পায়।
এটিআর সূচক তীব্র বিপরীত এবং ফাঁক সংবেদনশীল নয়।
ইএমএগুলি প্রবণতা বিপরীতকরণ নির্ধারণ করতে পারে না, প্রবণতা বিপরীতকরণের সময় নতুন পজিশন প্রবেশ করতে পারে।
আংশিক মুনাফা নেওয়ার পর ক্ষতির সম্ভাবনা বেশি।
পরামিতিগুলি আরও অপ্টিমাইজ করার প্রয়োজন, 1.5ATR স্টপ এবং 3ATR লাভ গ্রহণ বিভিন্ন পণ্যের জন্য সামঞ্জস্য করা উচিত।
এটিআর বিলম্বের জন্য ডনচিয়ান চ্যানেলের মতো অন্যান্য স্টপ লস সূচক যুক্ত করার বিষয়টি বিবেচনা করুন।
প্রবণতা বিপরীত মূল্যায়ন করার জন্য বিভিন্ন চলমান গড় পরীক্ষা করুন অথবা MACD ইত্যাদি যোগ করুন।
বিভিন্ন পণ্যের জন্য আংশিক লাভের অনুপাত এবং ফ্রিকোয়েন্সি অপ্টিমাইজ করুন।
স্টপ এবং লাভ নেওয়ার জন্য ATR মাল্টিপলসের প্যারামিটার অপ্টিমাইজেশন। ট্রেলিং স্টপ লস বৈশিষ্ট্য যুক্ত করুন।
দুর্বল প্রবণতার সময় পরীক্ষার পারফরম্যান্স, দুর্বল প্রবণতার সময় কৌশল অক্ষম করতে পারে।
কৌশলটি গতিশীল স্টপ লস ম্যানেজমেন্টের জন্য এটিআর ব্যবহারের একটি স্পষ্ট যুক্তি রয়েছে যা এর সবচেয়ে বড় শক্তি। তবে, এটিআর নিজেই পিছিয়ে যাওয়ার মতো সীমাবদ্ধতা রয়েছে। অন্যান্য স্টপ এবং ট্রেন্ড সূচক যুক্ত করা এটিকে উন্নত করবে। এছাড়াও আংশিক লাভের প্রয়োজন পণ্য জুড়ে অপ্টিমাইজেশান। সামগ্রিকভাবে এটি এটিআর ভিত্তিক স্টপ লস ম্যানেজমেন্টের ধারণা সরবরাহ করে তবে আরও অপ্টিমাইজেশন এবং বর্ধনের প্রয়োজন।
/*backtest start: 2022-10-03 00:00:00 end: 2023-10-09 00:00:00 period: 1d basePeriod: 1h 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/ // © ekinbasarkomur //@version=5 strategy("[EKIN] ATR Exit Strategy", overlay=true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, calc_on_every_tick = true) // Simple EMA tracking fastEMA = ta.ema(close, 5) slowEMA = ta.ema (close, 20) atr = ta.atr(14) // We define entry price for future reference var float entry_price = na // We define stop and take profit for future calculations var float stop_price = na var float take_profit_price = na // We define atr limtim its here var float atr_down = na var float atr_up = na var float atr_current = na var float atr_ref = na avg = (low + high) / 2 // Conditions enterCondition = ta.crossover(fastEMA, slowEMA) var bool tookProfit = false timePeriod = time >= timestamp(syminfo.timezone, 2021, 12, 15, 0, 0) InTrade = strategy.position_size > 0 // Go long if conditions are met if (enterCondition and timePeriod and not InTrade) // Calculate and update variables entry_price := avg atr_ref := atr atr_div = int((avg - entry_price) / atr_ref) atr_down := entry_price + (atr_ref * (atr_div - 1.5)) atr_up := entry_price + (atr_ref * (atr_div + 1)) atr_current := entry_price + (atr_ref * atr_div) stop_price := (entry_price - (atr_ref * 1.5)) take_profit_price := (entry_price + (atr_ref * 3)) strategy.order("buy", strategy.long, qty = 2) // Enter here if in position if InTrade or tookProfit stopCondition = avg < stop_price takeProfitCondition = avg > take_profit_price if avg < atr_down stopCondition := true // Move stop price and exit price if price for each atr price increase if avg > atr_up if tookProfit atr_ref := atr atr_div = int((avg - entry_price) / atr_ref) atr_down := entry_price + (atr_ref * (atr_div - 1)) atr_up := entry_price + (atr_ref * (atr_div + 1)) atr_current := entry_price + (atr_ref * atr_div) // Take half of the investment if current price is 3 atr higher than entry price if (takeProfitCondition and timePeriod and InTrade and not tookProfit) strategy.order("take_half_profit", strategy.short, qty = 1) tookProfit := true // Exit position if conditions are met and reset the variables if (stopCondition and timePeriod and InTrade) if tookProfit strategy.order("exit", strategy.short, qty = 1) else strategy.order("stop_loss", strategy.short, qty = 2) tookProfit := false // Plot EMA's plot(fastEMA, color = color.blue) plot(slowEMA, color = color.yellow) // Plot ATR Limit/Stop positions profit_plot = plot(series = InTrade?atr_up:na, title = "profit", color = color.green, style=plot.style_linebr) close_plot = plot(series = InTrade?atr_current:na, title = "close", color = color.white, style=plot.style_linebr) stop_plot = plot(series = InTrade?atr_down:na, title = "stop_loss", color = color.red, style=plot.style_linebr) fill(profit_plot, close_plot, color = color.new(color.green, 80)) fill(close_plot, stop_plot, color =color.new(color.red,80))