رشتہ دار حجم قیمت کی حکمت عملی غیر معمولی تجارتی حجم اور قیمت کی اتار چڑھاؤ پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ یہ حکمت عملی موجودہ تجارتی حجم کا تاریخی اوسط کے ساتھ موازنہ کرتی ہے تاکہ یہ طے کیا جاسکے کہ آیا تجارتی حجم غیر معمولی ہے۔ یہ یہ بھی طے کرنے کے لئے اوسط حقیقی حد کے وقفے کو جوڑتا ہے کہ آیا قیمت نسبتا stable مستحکم ہے۔ جب تجارتی حجم غیر معمولی بڑھتا ہے اور قیمت نسبتا stable مستحکم ہوتی ہے تو ، اسے انٹری سگنل سمجھا جاتا ہے۔
رشتہ دار حجم کی قیمت کی حکمت عملی کا بنیادی منطق فیصلہ کرنے کے لئے دو اشارے پر مبنی ہے: رشتہ دار تجارتی حجم اور قیمتوں میں اتار چڑھاؤ کی حد۔
سب سے پہلے ، ہم حالیہ 20 ادوار میں تجارتی حجم کے سادہ چلنے والے اوسط کو تاریخی اوسط تجارتی حجم کے طور پر شمار کرتے ہیں۔ پھر ہم ایک متعدد پیرامیٹر (جیسے 1.5 گنا) مرتب کرتے ہیں۔ جب موجودہ تجارتی حجم اوسط تجارتی حجم سے 1.5 گنا زیادہ ہے تو ، ہم تجارتی حجم کو غیر معمولی سمجھتے ہیں اور
دوسرا ، ہم قیمتوں کی اتار چڑھاؤ کی پیمائش کے طور پر حالیہ 14 ادوار میں اوسط حقیقی حد (اے ٹی آر) کا حساب لگاتے ہیں۔ اسی وقت ، ہم اوسط اتار چڑھاؤ کے معیاری انحراف کا حساب لگاتے ہیں۔ اگر موجودہ حقیقی اتار چڑھاؤ اوسط پلس یا مائنس ایک معیاری انحراف کے درمیان ہے تو ، ہم قیمت کی اتار چڑھاؤ کو نسبتا stable مستحکم حد میں سمجھتے ہیں۔
جب مذکورہ بالا دونوں شرائط بیک وقت پوری ہوجاتی ہیں تو ، ایک طویل پوزیشن کھولنے کے لئے ایک طویل سگنل جاری کیا جاتا ہے۔ انعقاد کی مدت کے دوران ، دو بار اے ٹی آر کو اسٹاپ نقصان کی سطح کے طور پر استعمال کیا جاتا ہے ، اور سب سے زیادہ قیمت مائنس دو بار اے ٹی آر کو منافع کی سطح کے طور پر استعمال کیا جاتا ہے۔
رشتہ دار حجم کی قیمت کی حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ یہ غیر معمولی تجارتی حجم کی وجہ سے آنے والی قیمت کے رجحانات کو پکڑتا ہے۔ جب تجارتی حجم میں اضافہ ہوتا ہے تو ، یہ مارکیٹ کے شرکاء کے رویے میں تبدیلی کی نمائندگی کرتا ہے ، جو اکثر قیمتوں میں خرابی اور نئے رجحانات کی تشکیل کا اشارہ کرتا ہے۔ تجارتی حجم اور تاریخی اوسط کے مابین تعلقات کا موازنہ کرکے ، حکمت عملی غیر معمولی تجارتی حجم کے وقت کو مؤثر طریقے سے طے کرسکتی ہے۔
دوسری طرف ، حکمت عملی میں اتار چڑھاؤ کی شرح کو بھی مدنظر رکھا جاتا ہے ، تاکہ قیمتوں کے نسبتا stable مستحکم ادوار کے دوران سگنل پیدا ہوں۔ اس سے پرتشدد اتار چڑھاؤ کے دوران اونچائیوں کا پیچھا کرنے سے ہونے والے نقصان کے بڑے خطرے سے بچتا ہے۔ اس سے منافع کے مواقع بھی بڑھتے ہیں کیونکہ رجحانات عام طور پر نسبتا stability استحکام کے بعد توڑنا شروع کرتے ہیں۔
اس حکمت عملی کا سب سے بڑا خطرہ یہ ہے کہ تجارتی حجم کے اشارے میں نئے رجحانات کا 100٪ یقین نہیں ہوسکتا ہے۔ تجارتی حجم میں اضافے جھوٹے بریک آؤٹ ہوسکتے ہیں اور قیمتیں تیزی سے الٹ جاتی ہیں۔ ایسی صورتوں میں ، حکمت عملی میں زیادہ نقصان ہوتا ہے۔
نقصانات کو کم کرنے کے لئے ،
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
فیصلے کے لئے دیگر اشارے شامل کریں، جیسے تبدیلی کا تناسب، کاروبار وغیرہ، تاکہ تجارتی حجم غیر معمولی سگنل کو زیادہ قابل اعتماد بنایا جاسکے۔
اے ٹی آر پیرامیٹر کو مختلف اسٹاک کے لئے بہتر بنایا جاسکتا ہے تاکہ مستحکم قیمت کی حد کو زیادہ درست طریقے سے طے کیا جاسکے۔
مشین لرننگ الگورتھم شامل کریں غیر معمولی تجارتی حجم کا فعال طور پر فیصلہ کرنے کے لئے، نہ صرف تاریخی اوسط کے ساتھ سادہ موازنہ.
قیمتوں کی اتار چڑھاؤ کی پیشن گوئی کرنے کے لئے گہری سیکھنے کے ماڈل استعمال کریں، نہ صرف تاریخی اے ٹی آر پر مبنی.
رشتہ دار حجم قیمت کی حکمت عملی غیر معمولی تجارتی حجم کو ایک خاص سگنل کے طور پر پکڑتی ہے اور تجارتی سگنل جاری کرنے کے لئے قیمت کے استحکام کے فیصلے کو جوڑتی ہے۔ یہ حکمت عملی آسان اور عملی ہے ، اور غیر معمولی اسٹاک ٹریڈنگ کے حجم کو ٹریک کرنے میں اچھی طرح کام کرتی ہے۔ لیکن غلط سگنل کا بھی ایک خاص خطرہ ہے جس کو تاثیر کو بہتر بنانے کے لئے اشارے کے فیصلوں کے ذریعہ مزید بہتر بنانے کی ضرورت ہے۔
/*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)