
আপেক্ষিক মূল্য কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা লেনদেনের পরিমাণের অস্বাভাবিকতা এবং মূল্যের অস্থিরতার উপর ভিত্তি করে। এই কৌশলটি লেনদেনের পরিমাণের অস্বাভাবিকতা নির্ধারণ করে, বর্তমান লেনদেনের পরিমাণ এবং historicalতিহাসিক গড় লেনদেনের পরিমাণের সাথে তুলনা করে; একই সাথে গড় প্রকৃত তরঙ্গের ব্যাপ্তির সাথে মিলিত করে, দামগুলি তুলনামূলকভাবে স্থিতিশীল ব্যাপ্তিতে রয়েছে কিনা তা নির্ধারণ করে। লেনদেনের পরিমাণ অস্বাভাবিকভাবে বৃদ্ধি পেলে এবং দামগুলি তুলনামূলকভাবে স্থিতিশীল হলে, এটি প্রবেশের সংকেত হিসাবে বিবেচিত হয়।
আপেক্ষিক পরিমাণের কৌশলটির মূল যুক্তিটি দুটি সূচকের ভিত্তিতে বিচার করা হয়, একটি হ’ল আপেক্ষিক লেনদেনের পরিমাণ এবং অন্যটি হ’ল দামের ওঠানামার ব্যাপ্তি।
প্রথমত, আমরা সাম্প্রতিক 20টি চক্রের লেনদেনের একটি সরল চলমান গড় গণনা করি, যা ঐতিহাসিক লেনদেনের গড় লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের লেনদেনের
দ্বিতীয়ত, আমরা সর্বশেষ ১৪টি চক্রের জন্য গড় প্রকৃত তরঙ্গদৈর্ঘ্য (ATR) গণনা করি যা মূল্যের অস্থিরতার একটি পরিমাপ। একই সাথে গড় তরঙ্গদৈর্ঘ্যের স্ট্যান্ডার্ড ডিফারেনশিয়াল গণনা করা হয়। যদি বর্তমান প্রকৃত তরঙ্গদৈর্ঘ্য গড়ের ধনাত্মক এবং এক মান ডিফারেনশিয়ালের মধ্যে থাকে তবে আমরা মনে করি যে দামের অস্থিরতা তুলনামূলকভাবে স্থিতিশীল পরিসরে রয়েছে।
যখন উপরের দুটি শর্ত একসাথে পূরণ করা হয়, তখন একাধিক সংকেত দেওয়া হয়, পজিশন খোলা হয়। পজিশন ধরে রাখার সময়, সর্বোচ্চ নিম্ন পয়েন্টটি বন্ধ করার জন্য দ্বিগুণ ATR কে বন্ধ করুন, সর্বোচ্চ পয়েন্টটি বন্ধ করার জন্য দ্বিগুণ ATR কে বন্ধ করুন।
আপেক্ষিক মূল্য কৌশলগুলির সর্বাধিক সুবিধা হ’ল অস্বাভাবিক লেনদেনের পরিমাণের সাথে দামের প্রবণতা ধরা। লেনদেনের পরিমাণ যখন বেড়ে যায়, তখন বাজারের অংশগ্রহণকারীদের মনোভাবের পরিবর্তনকে প্রতিনিধিত্ব করে, যা প্রায়শই দামের বিপর্যয় এবং নতুন প্রবণতা গঠনের ইঙ্গিত দেয়। কৌশলটি লেনদেনের পরিমাণ এবং historicalতিহাসিক গড়ের সাথে সম্পর্কের তুলনা করে কার্যকরভাবে লেনদেনের পরিমাণের অস্বাভাবিকতার সময় নির্ধারণ করতে পারে।
অন্যদিকে, কৌশলটি মূল্যের অস্থিরতাও বিবেচনা করে, যার ফলে সংকেতগুলি তুলনামূলকভাবে স্থিতিশীল সময়ে ঘটে। এটি তীব্র ওঠানামা চলাকালীন উচ্চতর ক্ষতির বিশাল ঝুঁকি এড়ায়। এটি লাভের সুযোগও বাড়ায়, কারণ প্রবণতা সাধারণত তুলনামূলকভাবে স্থিতিশীল হওয়ার পরে বিরতি শুরু করে।
এই কৌশলটির সবচেয়ে বড় ঝুঁকি হল যে ট্রেডিং ভলিউম সূচকটি নতুন প্রবণতা শতভাগ নির্ধারণ করতে পারে না, ট্রেডিং ভলিউমের উত্থানটি একটি মিথ্যা ব্রেকডাউন হতে পারে এবং দামগুলি দ্রুত বিপরীত হয়। এই ক্ষেত্রে, কৌশলটি আরও বেশি ক্ষতির সম্মুখীন হয়।
ক্ষতি হ্রাস করার জন্য, লেনদেনের পরিমাণের তুলনায় লেনদেনের পরিমাণের পরিমাপকে যথাযথভাবে সামঞ্জস্য করা যেতে পারে, লেনদেনের পরিমাণের অস্বাভাবিকতার বিচার করার জন্য আরও কঠোর মান নির্ধারণ করা যেতে পারে। বা লেনদেনের পরিমাণ বিশ্লেষণের মতো অন্যান্য বিচারক সূচক যুক্ত করা যেতে পারে, লেনদেনের পরিমাণ বৃদ্ধি লেনদেনের পরিমাণের সাথে মেলে কিনা তা বিচার করতে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
অন্যান্য সূচক যুক্ত করা হয়েছে, যেমন ঊর্ধ্বমুখীতা, লেনদেনের পরিমাণ ইত্যাদি, যাতে লেনদেনের পরিমাণের অস্বাভাবিক সংকেত আরও নির্ভরযোগ্য হয়।
এটিআর প্যারামিটারটি বিভিন্ন স্টকগুলির জন্য অপ্টিমাইজ করা যায়, যা মূল্য স্থিতিশীলতার ব্যাপ্তি আরও সঠিকভাবে নির্ধারণ করতে পারে।
মেশিন লার্নিং অ্যালগরিদম যুক্ত করুন, যাতে ট্রেডিং ভলিউমের অস্বাভাবিকতার বিষয়ে ইতিবাচক বিচার করা যায়, কেবলমাত্র ঐতিহাসিক গড়ের সাথে তুলনা না করে।
ডিপ লার্নিং মডেল ব্যবহার করে মূল্যের প্রবণতার পূর্বাভাস দেওয়া, শুধু ঐতিহাসিক ATR-এর উপর ভিত্তি করে নয়।
আপেক্ষিক মূল্য কৌশলটি লেনদেনের পরিমাণের অস্বাভাবিকতাকে বৈশিষ্ট্যযুক্ত সংকেত হিসাবে ক্যাপচার করে, দামের স্থিতিশীলতার সাথে একত্রে বিচার করে একটি লেনদেনের সংকেত প্রেরণ করে। কৌশলটি সহজ এবং কার্যকর, যখন স্টক লেনদেনের অস্বাভাবিক পরিমাণের ট্র্যাকিংয়ের ক্ষেত্রে কার্যকর হয়। তবে একটি নির্দিষ্ট ভুয়া সংকেতের ঝুঁকিও রয়েছে, বিচারকে আরও কার্যকর করার জন্য সূচকগুলিকে আরও অপ্টিমাইজ করা দরকার।
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 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/
// © DojiEmoji (kevinhhl)
//@version=4
strategy("[KL] Relative Volume + ATR Strategy",overlay=true,pyramiding=1)
ENUM_LONG = "Long"
// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("01 May 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }
len_volat = input(14,title="Length of ATR to determine volatility")
ATR_volat = atr(len_volat)
avg_ATR_volat = sma(ATR_volat, len_volat)
std_ATR_volat = stdev(ATR_volat, len_volat)
// }
// Trailing stop loss {
ATR_X2_TSL = atr(input(14,title="Length of ATR for trailing stop loss")) * input(2.0,title="ATR Multiplier for trailing stop loss",type=input.float)
TSL_source = low
var stop_loss_price = float(0)
TSL_line_color = color.green, TSL_transp = 100
if strategy.position_size == 0 or not within_timeframe
TSL_line_color := color.black
stop_loss_price := TSL_source - ATR_X2_TSL
else if strategy.position_size > 0
stop_loss_price := max(stop_loss_price, TSL_source - ATR_X2_TSL)
TSL_transp := 0
plot(stop_loss_price, color=color.new(TSL_line_color, TSL_transp))
// }
// Signals for entry {
_avg_vol = sma(volume,input(20, title="SMA(volume) length (for relative comparison)"))
_relative_vol = _avg_vol * input(1.5,title="Multiple of avg vol to consider relative volume as being high",type=input.float)
__lowerOfOpenClose = min(open,close)
_wickRatio_lower = (__lowerOfOpenClose - low) / (high - low)
entry_signal1 = volume > _relative_vol
entry_signal2 = ATR_volat < avg_ATR_volat + std_ATR_volat and ATR_volat > avg_ATR_volat - std_ATR_volat
// }
alert_per_bar(msg)=>
prefix = "[" + syminfo.root + "] "
suffix = "(P=" + tostring(close) + "; atr=" + tostring(ATR_volat) + ")"
alert(tostring(prefix) + tostring(msg) + tostring(suffix), alert.freq_once_per_bar)
// MAIN:
if within_timeframe
if strategy.position_size > 0 and strategy.position_size[1] > 0 and (stop_loss_price/stop_loss_price[1]-1) > 0.005
alert_per_bar("TSL raised to " + tostring(stop_loss_price))
// EXIT :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: // placed before entry, will re-enter if stopped out
exit_msg = close <= strategy.position_avg_price ? "stop loss" : "take profit"
if strategy.position_size > 0 and TSL_source <= stop_loss_price
strategy.close(ENUM_LONG, comment=exit_msg)
// ENTRY :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if entry_signal1 and entry_signal2// and entry_signal3
entry_msg = strategy.position_size > 0 ? "adding" : "initial"
strategy.entry(ENUM_LONG, strategy.long, comment=entry_msg)
// CLEAN UP:
if strategy.position_size == 0
stop_loss_price := float(0)