এই কৌশলটি একটি দ্বৈত-দিকের ট্রেডিং কৌশল যা অস্থিরতা ট্র্যাক করে। এটি স্টপ লস সেট করতে গড় সত্য পরিসীমা (এটিআর) সূচক ব্যবহার করে এবং স্টপ লস স্তরটি ভেঙে যাওয়ার দামের উপর ভিত্তি করে প্রবণতা দিক নির্ধারণ করে। প্রবণতা দিক পরিবর্তন হলে এটি বিপরীত অবস্থানগুলি খোলে।
কৌশলটি অস্থিরতা গণনা করতে 3-দিনের এটিআর ব্যবহার করে। একটি সহগ দ্বারা গুণিত এটিআর মানটি স্টপ লস স্তর হিসাবে ব্যবহৃত হয়। যখন দাম স্টপ লস স্তরের উপরে থাকে, তখন এটি একটি আপট্রেন্ড হিসাবে বিচার করে এবং দাম স্টপ লস স্তরের নীচে পড়লে দীর্ঘ অবস্থানগুলি বন্ধ করে। যখন দাম স্টপ লস স্তরের নীচে থাকে, তখন এটি একটি ডাউনট্রেন্ড হিসাবে বিচার করে এবং দাম স্টপ লস স্তরের উপরে উঠলে শর্ট অবস্থানগুলি বন্ধ করে। এটি প্রবণতা পরিবর্তনের সময় বিপরীত অবস্থানগুলি খোলে। প্রবণতা পরিবর্তনের সময় স্টপ লস স্তরটি অনুকূলিত হয় এবং প্রবণতা পরিবর্তনের সময় পুনরায় সেট করা হয়।
ঝুঁকি হ্রাস করার জন্যঃ বৃহত্তর স্টপ স্তরের জন্য এটিআর সহগ বাড়ানো, ব্যবসায়ের ফ্রিকোয়েন্সি সীমাবদ্ধ করা, সর্বনিম্ন লাভের স্তর নির্ধারণ করা ইত্যাদি।
এটি একটি সামগ্রিকভাবে স্থিতিশীল দ্বৈত-দিকের ট্রেলিং স্টপ কৌশল। এটিআর ড্রডাউনগুলি নিয়ন্ত্রণ করতে গতিশীল স্টপ স্তর সেট করে। দ্বৈত-দিকের ট্রেডিং লাভের সম্ভাবনাও বাড়ায়। আরও অপ্টিমাইজেশন কৌশলটিকে আরও শক্তিশালী করতে পারে, প্রবণতা অনুসরণ করার ক্ষমতা বাড়িয়ে তুলতে পারে।
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("BCH Swinger v1", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100) ///////////////////////////////////////////////////////////// //START - SET DATE RANGE // === BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1) FromDay = input(defval = 1, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year") ToMonth = input(defval = 10, title = "To Month", minval = 1) ToDay = input(defval = 01, title = "To Day", minval = 1) ToYear = input(defval = 2020, title = "To Year") startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1) endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59) withinTimeRange = true ///////////////////////////////////////////////////////////// //END - SET DATE RANGE ///////////////////////////////////////////////////////////// //START - INDICATORS length = input(3) mult = input(1, minval = 0.01) atr_ = atr(length) max1 = max(nz(max_[1]), close) min1 = min(nz(min_[1]), close) is_uptrend_prev = nz(is_uptrend[1], true) stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev = nz(vstop[1]) vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend = close - vstop1 >= 0 is_trend_changed = is_uptrend != is_uptrend_prev max_ = is_trend_changed ? close : max1 min_ = is_trend_changed ? close : min1 vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2) ///////////////////////////////////////////////////////////// //END - INDICATORS ///////////////////////////////////////////////////////////// //START - TRADING RULES direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1) strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) condition1 = close > vstop and withinTimeRange condition2 = close < vstop and withinTimeRange strategy.entry("BUY", strategy.long, when = condition1) strategy.entry("SELL", strategy.short, when = condition2) ///////////////////////////////////////////////////////////// //END - TRADING RULES