
یہ حکمت عملی ایک کثیر ٹائم فریم کی پیمائش اشارے ٹریڈنگ حکمت عملی ہے۔ یہ ممکنہ زیادہ سے زیادہ سگنل کی شناخت کے لئے نسبتا strong مضبوط انڈیکس ((RSI) ، اوسطا حقیقی لہر ((ATR) ، سادہ منتقل اوسط ((SMA) اور اپنی مرضی کے مطابق پیمائش کی شرائط کا استعمال کرتا ہے۔ یہ حکمت عملی متعدد پوزیشنوں کو قائم کرتی ہے جب مخصوص اوور سیل ، پیمائش اشارے کے کراسنگ ، قیمت کی توڑ ، وغیرہ کی شرائط کو پورا کیا جاتا ہے۔
اس حکمت عملی کی بنیاد مندرجہ ذیل اہم نکات پر ہے:
خاص طور پر ، اس حکمت عملی میں RSI اشارے کے لئے لمبائی اور oversold لائن پیرامیٹرز مرتب کیے گئے ہیں ، جن کی بنیاد پر RSI کی قیمت کا حساب لگایا جاتا ہے۔ جب RSI اشارے میں مسلسل کئی K لائنیں oversold لائن سے نیچے ہوں تو ، oversold سگنل پیدا ہوتا ہے۔
اس کے علاوہ ، اس حکمت عملی میں 3 ٹرانزیکشن حجم کی قیمتوں کی تعریف کی گئی ہے ، جس میں مختلف وقت کے دورانیے کے اعداد و شمار کے مطابق حجم کی شرائط کے ایک سے زیادہ سیٹ طے کیے گئے ہیں۔ مثال کے طور پر ، 90 دورانیے کی مقدار 49 دورانیے کی مقدار سے 1.5 گنا زیادہ ہے۔ جب یہ حجم کی شرائط ایک ساتھ مل جاتی ہیں تو ، حجم کی قیمت کے اشارے کا ایک سے زیادہ سگنل جاری کیا جاتا ہے۔
قیمتوں کے معاملے میں ، حکمت عملی 13 سائیکل SMA اشارے کا حساب لگاتی ہے اور اس کی تعداد کی گنتی کرتی ہے K لائنوں کی تعداد جب قیمت SMA کو توڑنے کے بعد اوپر کی طرف بڑھتی ہے۔ جب قیمت نیچے سے اوپر کی طرف سے SMA کو توڑتی ہے اور اس کے بعد K لائنوں کی تعداد 5 سے کم ہوتی ہے تو ، اس کو قیمت کے ٹوٹنے کا اشارہ سمجھا جاتا ہے۔
اے ٹی آر سائیکل پیرامیٹرز کے حوالے سے ، اس حکمت عملی نے چھوٹے دورانیے 5 اور بڑے دورانیے 14 کے اے ٹی آر کو متعین کیا ہے۔ جب چھوٹے دورانیے کا اے ٹی آر بڑے دورانیے کے اے ٹی آر سے کم ہوتا ہے تو ، اس کا مطلب یہ ہے کہ مارکیٹ میں اتار چڑھاؤ میں تیزی سے کمی واقع ہوتی ہے ، جس میں فروغ دینے کے لئے ایک اور سگنل ہوتا ہے۔
آخر میں ، اس حکمت عملی میں مندرجہ بالا متعدد خریداری کی شرائط پر جامع غور کیا گیا ہے ، بشمول اوور سیل ، پیمائش کی قیمت کا اشارہ ، قیمت کی خرابی اور اے ٹی آر اشارے۔ جب یہ شرائط ایک ساتھ مل جاتی ہیں تو ، ایک حتمی کثیر سگنل پیدا ہوتا ہے اور کثیر پوزیشن قائم کی جاتی ہے۔
اس حکمت عملی کے درج ذیل فوائد ہیں:
ایک سے زیادہ ٹائم فریم کی پیمائش کے اشارے کا فیصلہ ، درستگی کو بہتر بنائیں۔ حکمت عملی نہ صرف ایک ہی دور کے پیمائش کے اعداد و شمار پر غور کرتی ہے ، بلکہ پیمائش کی صلاحیتوں کی حراستی کا زیادہ درست اندازہ لگانے کے لئے مختلف دورانیہ کی پیمائش کے حالات کے کراسنگ کا جائزہ لیتی ہے۔
اوور سیل + مقدار + قیمت ٹرپل فیصلے کا طریقہ کار ، خریداری کے اشارے کی وشوسنییتا کو یقینی بناتا ہے۔ اوور سیل خریداری کا سب سے بنیادی نقطہ انتخاب فراہم کرتا ہے ، اس کے علاوہ ، مقدار اور قیمت کے اشارے کو عبور کرنے سے خریداری کے وقت میں اضافی تصدیق اور اعلی وشوسنییتا ہوتی ہے۔
اسٹاپ نقصان روکنے کا طریقہ کار ترتیب دیں تاکہ ہر تجارت کے خطرے کو سختی سے کنٹرول کیا جاسکے۔ اسٹاپ نقصان اور اسٹاپ پیرامیٹرز کو انفرادی خطرے کی ترجیحات کے مطابق ایڈجسٹ کیا جاسکتا ہے ، تاکہ منافع کو زیادہ سے زیادہ کرنے کے لئے ہر ایک کے خطرے کو معقول حد تک کنٹرول کیا جاسکے۔
کثیر اشارے کے انٹیگریٹڈ فیصلے سے لچک میں اضافہ ہوتا ہے۔ یہاں تک کہ اگر کچھ اشارے میں خرابی یا غلطی ہو تو ، آپ کو دوسرے اشارے کے فیصلے پر انحصار کرنے کی اجازت دی جاسکتی ہے تاکہ آپریشن کی مستقل صلاحیت کو یقینی بنایا جاسکے۔
اس حکمت عملی کے کچھ خطرات بھی ہیں:
پیرامیٹرز کی ترتیب کا خطرہ۔ مختلف اشارے کے پیرامیٹرز کی ترتیب براہ راست فیصلے کے نتائج پر اثر انداز ہوتی ہے ، غیر معقول پیرامیٹرز تجارتی سگنل میں انحراف کا سبب بن سکتے ہیں۔ پیرامیٹرز کی معقول قدر کو سنجیدگی سے تلاش کرنے کی ضرورت ہے۔
منافع کی گنجائش محدود ہے۔ متعدد اشارے کو یکجا کرنے کی حکمت عملی کے طور پر ، سگنل کی پیداوار کی تعدد نسبتا conser زیادہ محتاط ہے ، فی یونٹ وقت میں تجارت کی تعداد کم ہے ، منافع کی گنجائش میں کچھ حدود موجود ہیں۔
اشارے پھیلاؤ کا خطرہ۔ جب کچھ اشارے ایک سے زیادہ سگنل دیتے ہیں اور دوسرے اشارے خالی سگنل دیتے ہیں تو حکمت عملی کو بہترین فیصلے کا تعین کرنے سے قاصر ہے۔ اس کے لئے اشارے کے مابین ممکنہ پھیلاؤ کی پیشگی شناخت اور ان سے نمٹنے کی ضرورت ہے۔
اس حکمت عملی کو مزید بہتر بنانے کے لیے مندرجہ ذیل نکات پر غور کیا جا سکتا ہے۔
مشین لرننگ ماڈل کی معاونت کے فیصلے میں اضافہ کریں۔ مقدار کی قیمت اور اتار چڑھاؤ کی خصوصیت کے ماڈل کو تربیت دی جاسکتی ہے ، جو دستی طور پر طے شدہ پیرامیٹرز کی معاونت کرتی ہے ، پیرامیٹرز کو متحرک کرتی ہے۔
اسٹاپ اسٹاپ کی حکمت عملی کی پختگی کو بہتر بنائیں۔ مثال کے طور پر ، فلوٹنگ اسٹاپ ، بیچ اسٹاپ ، ٹریکنگ اسٹاپ وغیرہ کو ترتیب دیا جاسکتا ہے ، جس سے ہر ایک کی آمدنی کو مزید بڑھایا جاسکتا ہے ، جبکہ اس سے بچنے سے بچایا جاسکتا ہے۔
انٹرا لیپ ٹاپ ڈیٹا کا اندازہ لگائیں۔ K لائن کی قیمت کے اعداد و شمار کے علاوہ ، گہرائی میں خرید و فروخت کے لیپ ٹاپ ڈیٹا کے ساتھ مل کر پوزیشن کی تقسیم کا اندازہ لگایا جاسکتا ہے ، جس سے اضافی ریفرنس سگنل فراہم کیے جاسکتے ہیں۔
دیگر اشارے کے انضمام کی جانچ پڑتال کریں۔ یہ حکمت عملی بنیادی طور پر آر ایس آئی ، اے ٹی آر اور ایس ایم اے جیسے اشارے کو انضمام کے لئے استعمال کرتی ہے ، لیکن اس میں دیگر اشارے کے مجموعے جیسے برلن لائن ، کے ڈی جے ، اور تجارت کے سگنل کے وسائل کو بہتر بنانے اور بہتر بنانے کی کوشش کی جاسکتی ہے۔
اس حکمت عملی میں 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