یہ حکمت عملی ایک ملٹی ٹائم فریم حجم قیمت اشارے ٹریڈنگ حکمت عملی ہے۔ یہ ممکنہ لانگ سگنلز کی نشاندہی کرنے کے لئے رشتہ دار طاقت انڈیکس (آر ایس آئی) ، اوسط حقیقی رینج (اے ٹی آر) ، سادہ چلتی اوسط (ایس ایم اے) اور کسٹم حجم قیمت کی شرائط کو جامع طور پر استعمال کرتی ہے۔ جب کچھ زیادہ فروخت ، حجم قیمت کراس اوور ، قیمت کی خرابی اور دیگر اندراج کی شرائط پوری ہوجاتی ہیں تو ، یہ حکمت عملی طویل پوزیشنیں قائم کرے گی۔ یہ ہر تجارت کے لئے رسک انعام تناسب کو کنٹرول کرنے کے لئے اسٹاپ نقصان اور منافع کی سطح بھی طے کرتی ہے۔
اس حکمت عملی کے اہم نکات یہ ہیں:
خاص طور پر ، یہ حکمت عملی RSI اشارے کے لئے لمبائی اور oversold پیرامیٹرز طے کرتی ہے اور ان پیرامیٹرز کی بنیاد پر RSI اقدار کا حساب لگاتی ہے۔ جب RSI متعدد متواتر باروں کے لئے oversold سطح سے نیچے رہتا ہے تو ، oversold سگنل ٹرگر ہوتا ہے۔
اس کے علاوہ ، حکمت عملی میں 3 حجم کی حدیں طے کی گئی ہیں اور مختلف ٹائم فریم کے اعداد و شمار کی بنیاد پر حجم کی قیمت کی متعدد شرائط طے کی گئی ہیں۔ مثال کے طور پر ، 90 کی مدت کی حجم کی قیمت 49 کی مدت سے 1.5 گنا زیادہ ہے۔ جب ان تمام حجم کی قیمت کی شرائط ایک ہی وقت میں پوری ہوجاتی ہیں تو ، حجم کی قیمت کا اشارے ایک طویل سگنل تیار کرتا ہے۔
قیمت کے پہلو پر ، حکمت عملی 13 مدت کے ایس ایم اے کا حساب لگاتی ہے اور جب قیمت ایس ایم اے سے اوپر ٹوٹ جاتی ہے تو باروں کی تعداد گنتی ہے۔ جب قیمت ایس ایم اے سے اوپر ٹوٹ جاتی ہے اور توڑنے کے بعد باروں کی تعداد 5 سے کم ہوتی ہے تو ، اسے قیمت توڑنے کا اشارہ سمجھا جاتا ہے۔
اے ٹی آر پیریڈ پیرامیٹرز کے لئے ، یہ حکمت عملی اے ٹی آر کے لئے 5 کی ایک چھوٹی مدت اور 14 کی ایک بڑی مدت کی وضاحت کرتی ہے۔ جب چھوٹی مدت اے ٹی آر بڑی مدت اے ٹی آر سے کم ہوتی ہے تو ، اس سے یہ اشارہ ہوتا ہے کہ مارکیٹ میں اتار چڑھاؤ میں تیزی آرہی ہے اور طویل سگنل میں معاون ہے۔
آخر میں ، حکمت عملی میں مذکورہ بالا تمام اندراج کے معیارات ، بشمول oversold ، حجم کی قیمت ، قیمت کے وقفے اور ATR اشارے کو مدنظر رکھا جاتا ہے۔ جب یہ تمام شرائط بیک وقت پوری ہوجاتی ہیں تو ، آخری طویل سگنل کو متحرک کیا جاتا ہے اور ایک طویل پوزیشن قائم کی جاتی ہے۔
اس حکمت عملی کے مندرجہ ذیل فوائد ہیں:
ملٹی ٹائم فریم حجم قیمت کی حالت کا فیصلہ درستگی کو بہتر بناتا ہے۔ صرف ایک ٹائم فریم کی بجائے مختلف ٹائم فریموں میں حجم قیمت کے اعداد و شمار کے متعدد سیٹوں کا جائزہ لینے سے ، حکمت عملی تجارتی حجم کی حراستی کا زیادہ درست اندازہ کرسکتی ہے۔
اوور سیلڈ + حجم قیمت + قیمت بریک آؤٹ کی ٹرپل تصدیق کا طریقہ کار قابل اعتماد انٹری سگنلز کو یقینی بناتا ہے۔ اوور سیلڈ کی حالت اندراجات کے لئے بنیادی وقت فراہم کرتی ہے ، جبکہ حجم قیمت اور قیمت کے اشارے سے اضافی تصدیق طویل سگنلز کی وشوسنییتا کو مزید یقینی بناتی ہے۔
اسٹاپ نقصان اور منافع حاصل کرنے کا طریقہ کار ہر تجارت کے خطرے کو سختی سے کنٹرول کرتا ہے۔ ہر تجارت کے خطرے کو معقول حد تک کنٹرول کرتے ہوئے منافع کو زیادہ سے زیادہ کرنے کے لئے ذاتی رسک اشتہار کی بنیاد پر اسٹاپ نقصان اور منافع لینے کے پیرامیٹرز کو ایڈجسٹ کیا جاسکتا ہے۔
متعدد اشارے کو مربوط کرنے سے استحکام بڑھتا ہے۔ یہاں تک کہ اگر کچھ اشارے ناکام ہوجاتے ہیں یا خراب کام کرتے ہیں تو ، حکمت عملی کا فیصلہ کرنے کے لئے پھر بھی دوسرے اشارے پر انحصار کیا جاسکتا ہے اور ایک خاص سطح کی لچک کو یقینی بنایا جاسکتا ہے۔
اس حکمت عملی کے ساتھ کچھ خطرات بھی ہیں:
پیرامیٹر کی تشکیل کا خطرہ۔ اشارے کی پیرامیٹر کی ترتیبات براہ راست فیصلے کو متاثر کرتی ہیں ، اور غلط پیرامیٹرز سے تجارتی سگنلز میں تعصب پیدا ہوسکتا ہے۔ معقول پیرامیٹر کی اقدار کو احتیاط سے توثیق کرنے کی ضرورت ہے۔
محدود منافع کی صلاحیت۔ اجتماعی فیصلے کے لئے متعدد اشارے کو مربوط کرنے والی حکمت عملی کی حیثیت سے ، اس کے اشارے نسبتا less کم تجارت فی یونٹ وقت کے ساتھ زیادہ محتاط ہوتے ہیں ، لہذا منافع کی صلاحیت میں کچھ حدود ہیں۔
اشارے کے فرق کا خطرہ۔ جب کچھ اشارے لمبے سگنل دیتے ہیں جبکہ دوسرے مختصر سگنل دیتے ہیں تو ، حکمت عملی سے زیادہ سے زیادہ فیصلہ طے نہیں ہوسکتا ہے۔ اشارے کے مابین اس طرح کے ممکنہ اختلافات کی شناخت اور پہلے سے حل کرنے کی ضرورت ہے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں مزید بہتر بنایا جاسکتا ہے:
فیصلہ کرنے میں مدد کے لئے مشین لرننگ ماڈلز کو شامل کریں۔ ماڈلز کو دستی طور پر طے شدہ پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرنے کے لئے حجم کی قیمت اور اتار چڑھاؤ کی خصوصیات پر تربیت دی جاسکتی ہے۔
منافع حاصل کرنے کی حکمت عملیوں کی نفاست کو بہتر بنانا ، جیسے ٹریلنگ اسٹاپ منافع حاصل کرنا ، جزوی منافع حاصل کرنا ، وغیرہ تاکہ منافع کے نقصان کو روکتے ہوئے فی تجارت میں مزید اضافہ کیا جاسکے۔
آرڈر بک کے اعداد و شمار کو شامل کرنے کا جائزہ لیں۔ قیمت اور حجم چارٹ کے اعداد و شمار کے علاوہ ، آرڈر بک کے اعداد و شمار میں اضافی حوالہ سگنل فراہم کرنے کے لئے گہرائی سے لیکویڈیٹی تقسیم کی معلومات بھی سامنے آتی ہیں۔
دوسرے اشارے کے ساتھ ٹیسٹ کے مجموعے۔ یہ حکمت عملی بنیادی طور پر RSI ، ATR اور SMA جیسے اشارے کا استعمال کرتی ہے۔ تجارتی سگنل کے ذرائع کو متنوع اور بہتر بنانے کے لئے بولنگر بینڈ اور KDJ جیسے دوسرے اشارے کو بھی جوڑا جاسکتا ہے۔
اس حکمت عملی میں RSI ، ATR ، SMA اور کسٹم حجم قیمت کے حالات سمیت اشارے کا ایک مجموعہ استعمال کیا جاتا ہے تاکہ ممکنہ لانگ انٹری کے مواقع کی نشاندہی کی جاسکے۔ اس کے فوائد جیسے ملٹی ٹائم فریم حجم قیمت کی تشخیص ، ٹرپل تصدیق میکانزم اور اسٹاپ نقصان / منافع لینے کے رسک کنٹرول ہیں۔ تاہم ، پیرامیٹر ترتیب ، محدود منافع کی صلاحیت جیسے خطرات کو بھی نوٹ کرنے کی ضرورت ہے۔ مستقبل میں ، اس حکمت عملی کو مشین لرننگ بڑھانے ، زیادہ نفیس منافع لینے کے ڈیزائن ، آرڈر بک کے اعداد و شمار کے ساتھ ساتھ توسیع شدہ اشارے کے مجموعوں کو شامل کرنے کے ذریعے مزید بڑھا سکتا ہے۔
/*backtest start: 2023-10-24 00:00:00 end: 2023-11-23 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © Kimply_Tr //@version=5 // Strategy settings and parameters strategy(title='Volume ValueWhen Velocity', overlay=true) // Define the stop-loss and take-profit percentages for the long strategy long_stoploss_value = input.float(defval=3, title='Stop-Loss (SL) %', minval=0, group='▶ Stop Loss/Take Profit => Long-Strategy', inline='2') long_stoploss_percentage = close * (long_stoploss_value / 100) / syminfo.mintick // Calculate long stop-loss percentage long_takeprofit_value = input.float(defval=2, title='Take-Profit (TP) %', minval=0, group='▶ Stop Loss/Take Profit => Long-Strategy', inline='2') long_takeprofit_percentage = close * (long_takeprofit_value / 100) / syminfo.mintick // Calculate long take-profit percentage // Define parameters related to ValueWhen occurrences occurrence_ValueWhen_1 = input.int(title='occurrence_ValueWhen_1', defval=1, maxval=100, step=1, group="▶ ValueWhen",tooltip ="Its value must be smaller than (occurrence_ValueWhen_2)") occurrence_ValueWhen_2 = input.int(title='occurrence_ValueWhen_2', defval=5, maxval=100, step=1, group="▶ ValueWhen" ,tooltip="Its value must be greater than (occurrence_ValueWhen_1)") distance_value=input.int(title='distance_value_occurrence', defval=170, maxval=5000, step=1, group="▶ ValueWhen" ,tooltip="It indicates the minimum distance between the occurrences of 1 and 2, i.e. the difference between the occurrences of 1 and 2 is greater than (distance_value_occurrence)") // Define RSI-related parameters rsi_over_sold = input.int(defval=60, minval=1, title='Oversold Level', group='▶ RSI',inline ='2') // Input for oversold level in RSI rsi_length = input.int(defval=40, minval=1, title='RSI Length', group='▶ RSI',inline ='2') // Input for RSI length rsi = ta.rsi(close, rsi_length) // Calculate RSI // Define volume thresholds volume_threshold1 = input.float(title='volume_threshold_1', defval=0.5, maxval=10, step=0.1, group="▶ Volume") volume_threshold2 = input.float(title='volume_threshold_2', defval=0.4, maxval=10, step=0.1, group="▶ Volume") volume_threshold3 = input.float(title='volume_threshold_3', defval=0.62, maxval=10, step=0.1, group="▶ Volume") // ATR (Average True Range) // Define ATR parameters atr_small = input.int(title='ATR_Small', defval=5, maxval=500, step=1, group="▶ Atr",inline ='2') atr_big = input.int(title='ATR_Big ', defval=14, maxval=500, step=1, group="▶ Atr",inline ='2') atr_value3 = ta.atr(15) // Calculate ATR value 3 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Date Range // Define the date range for back-testing start_date = input.int(title='Start Day', defval=1, minval=1, maxval=31, group='▶ Time-Period for Back-Testing', inline='1') // Input for start day end_date = input.int(title='until Day', defval=1, minval=1, maxval=31, group='▶ Time-Period for Back-Testing', inline='1') // Input for end day start_month = input.int(title='Start Month', defval=7, minval=1, maxval=12, group='▶ Time-Period for Back-Testing', inline='2') // Input for start month end_month = input.int(title='until Month', defval=1, minval=1, maxval=12, group='▶ Time-Period for Back-Testing', inline='2') // Input for end month start_year = input.int(title='Start Year', defval=2022, minval=1800, maxval=3000, group='▶ Time-Period for Back-Testing', inline='3') // Input for start year end_year = input.int(title='until Year', defval=2077, minval=1800, maxval=3000, group='▶ Time-Period for Back-Testing', inline='3') // Input for end year in_date_range = time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0) and time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0) // Check if the current time is within the specified date range //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// was_over_sold = ta.barssince(rsi <= rsi_over_sold) <= 10 // Check if RSI was oversold in the last 10 bars //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// getVolume(symbol, bar) => request.security(syminfo.tickerid, "D", volume)[bar] // Function to get volume data for a specific symbol and bar getVolume2(symbol, bar) => request.security(syminfo.tickerid, "39", volume)[bar] // Function to get volume data for a specific symbol and bar 2 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// firstCandleColor1 = request.security(syminfo.tickerid, "D", close[2] > open[1] ? 1 : 0) firstCandleColor2 = request.security(syminfo.tickerid, "1", close[2] > open[0] ? 1 : 0) firstCandleColor3 = request.security(syminfo.tickerid, "W", close[1] > open[1] ? 1 : 0) firstCandleColor= ((firstCandleColor1+firstCandleColor2)) > firstCandleColor3 ? 1 : 0 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// sma = ta.sma(close, 13) // Calculate the simple moving average (SMA) of the close price over 13 periods numCandles = ta.barssince(close > sma) // Count the number of candles since the close price crossed above the SMA atr1=request.security(syminfo.tickerid, "30", ta.atr(atr_small)<ta.atr(atr_big)) // Get the ATR value for the specific security and timeframe (30 minutes) and check if ATR_small is less than ATR_big prevClose = ta.valuewhen(close > sma, close, occurrence_ValueWhen_1) // Get the close price when it first crosses above the SMA based on occurrence_ValueWhen_1 prevCloseBarsAgo = ta.valuewhen(close > sma, close, occurrence_ValueWhen_2) // Get the close price when it first crosses above the SMA based on occurrence_ValueWhen_2 prevCloseChange = (prevCloseBarsAgo - prevClose ) // Calculate the change in the close price between the occurrences of crossing above the SMA atrval=(atr_value3>140) or (atr_value3 < 123) // Check if atr_value3 is either greater than 140 or less than 123 Condition = getVolume(syminfo.tickerid, 90) > volume_threshold1 * getVolume(syminfo.tickerid, 49) and getVolume(syminfo.tickerid, 110) > volume_threshold3 * getVolume(syminfo.tickerid, 49) and getVolume2(syminfo.tickerid, 30) > volume_threshold2 * getVolume2(syminfo.tickerid, 55) and getVolume2(syminfo.tickerid, 7) > volume_threshold2 * getVolume2(syminfo.tickerid, 3) // Check multiple volume conditions buy_signal=Condition and atrval and firstCandleColor==0 and was_over_sold and prevCloseChange> distance_value and atr1 and numCandles<5 // Determine if the buy signal is generated based on various conditions //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Long Strategy // Enter long position if the buy signal conditions are met and within the specified date range if buy_signal and in_date_range strategy.entry('Long', strategy.long, alert_message='Open Long Position') // Enter long position strategy.exit('Long SL/TP', from_entry='Long', loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message='Your SL/TP-Limit for the Long-Strategy has been activated.') // Exit long position with stop-loss and take-profit