ماورائی وقت کے فریموں پر مبنی حکمت عملیوں کا رجحان


تخلیق کی تاریخ: 2024-02-21 11:05:17 آخر میں ترمیم کریں: 2024-02-21 11:05:17
کاپی: 0 کلکس کی تعداد: 690
1
پر توجہ دیں
1617
پیروکار

ماورائی وقت کے فریموں پر مبنی حکمت عملیوں کا رجحان

جائزہ

اس حکمت عملی کا بنیادی خیال مارکیٹ کے رجحانات کی نشاندہی کرنے کے لئے متعدد ٹائم فریموں کو جوڑنا ہے ، اعلی ٹائم فریم پر تجاوزات کے اشارے کو فلٹر کے طور پر استعمال کرنا ، اور نچلے ٹائم فریم پر خرید و فروخت کے اشارے بھیجنا ہے۔ اس حکمت عملی کا مقصد اعلی ٹائم فریم کے ذریعہ فراہم کردہ مارکیٹ کی ساخت کی معلومات کو استعمال کرنا ہے تاکہ تجارتی فیصلوں کے معیار کو بہتر بنایا جاسکے۔

حکمت عملی کا اصول

یہ حکمت عملی سیکیورٹی فنکشن کو کال کرکے اعلی ٹائم فریم (ڈیفالٹ موجودہ ٹائم فریم کے 4x) کی حد سے تجاوز کرنے والے اشارے کی قیمت حاصل کرتی ہے۔ حد سے تجاوز کرنے والے اشارے میں دو لائنیں شامل ہیں: حد سے تجاوز کرنے والی لائن اور رجحان لائن۔ حد سے تجاوز کرنے والی لائن جب رجحان لائن کے اوپر ہوتی ہے تو بیجنگ سگنل ہوتی ہے ، اور جب نیچے ہوتی ہے تو بیجنگ سگنل ہوتی ہے۔

اس حکمت عملی میں اعلی ٹائم فریم کے اوپری رجحان کی سمت کو فلٹرنگ کی شرط کے طور پر استعمال کیا گیا ہے۔ اس حکمت عملی میں صرف اس وقت ٹریڈنگ سگنل جاری کیا جاتا ہے جب اعلی ٹائم فریم کے اوپری رجحان کی سمت اعلی ٹائم فریم کے ساتھ مل جاتی ہے۔ یعنی ، اس حکمت عملی میں صرف اس وقت زیادہ یا کم ہوتا ہے جب دونوں ٹائم فریموں پر اوپری رجحان کے اشارے ایک ہی سمت میں سگنل دیتے ہیں۔

اس سے کم ٹائم فریم مارکیٹ کے شور کی مداخلت سے بچنے اور سگنل کی وشوسنییتا کو بہتر بنایا جاسکتا ہے۔ اس کے ساتھ ہی اعلی ٹائم فریم کا استعمال کرتے ہوئے مارکیٹ کی ساخت کا اندازہ لگائیں اور مجموعی طور پر صحیح فیصلہ کریں۔

اسٹریٹجک فوائد

  • اعلی ٹائم فریم کے ذریعہ فراہم کردہ مارکیٹ ڈھانچے کی معلومات کا استعمال کرتے ہوئے ، کم ٹائم فریم کے شور کو فلٹر کریں ، اور تجارتی فیصلوں کے معیار کو بہتر بنائیں
  • ایک سے زیادہ ٹائم فریم تجزیہ کے ساتھ مل کر ٹریڈنگ سگنل کو زیادہ قابل اعتماد بناتا ہے
  • اپنی مرضی کے مطابق آؤٹ ٹرینڈ اشارے کے پیرامیٹرز ، خرید و فروخت کی حکمت عملی کو بہتر بنانا
  • بلٹ میں تاریخ کی حد کی ترتیبات جو وقت کی حد کو محدود کرتی ہیں

خطرے کا تجزیہ

  • ہائی ٹائم فریم سگنل میں تاخیر، شارٹ لائن کا موقع ضائع ہو سکتا ہے
  • اعلی ٹائم فریم مارکیٹ کے ڈھانچے کا فیصلہ کرنے میں غلطی کا امکان
  • سپر ٹرینڈ اشارے خود بھی غلط سگنل دے سکتے ہیں
  • ریٹرننگ ٹائم رینج کی حد اہم اعداد و شمار کو نظر انداز کر سکتی ہے ، جس سے ٹیسٹ کے نتائج کی درستگی متاثر ہوسکتی ہے۔

حل:

  • اعلی ٹائم فریم کی ترتیبات کو مناسب طریقے سے ایڈجسٹ کریں تاکہ سگنل کی تاخیر کو کم کیا جاسکے
  • اعلی ٹائم فریم ڈھانچے کے فیصلے کو دوسرے اشارے کے ساتھ مل کر تصدیق کریں
  • سگنل کے معیار کو بہتر بنانے کے لئے ٹرانسمیشن اشارے کے پیرامیٹرز کو بہتر بنائیں
  • ٹیسٹ کی حکمت عملی کی استحکام کے لئے وقت کی حد کو بڑھانا

حکمت عملی کی اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

  1. ٹرانسمیشن اشارے کے پیرامیٹرز کو بہتر بنانے کے لئے بہترین پیرامیٹرز کا مجموعہ تلاش کریں
  2. ملٹی فیکٹر ماڈل بنانے کے لئے دوسرے اشارے شامل کریں
  3. مختلف اعلی اور کم ٹائم فریم کے مجموعے کی جانچ
  4. خطرے پر قابو پانے کے لئے اسٹاپ نقصان کا طریقہ کار شامل کرنا
  5. مشین لرننگ الگورتھم کے ساتھ متحرک طور پر ہائپر پیرامیٹرز کو ایڈجسٹ کرنا

پیرامیٹرز کی اصلاح، مجموعہ اشارے، بہتر روکنے اور مشین سیکھنے کو متعارف کرانے کے طریقوں کے ذریعے، اس کثیر ٹائم فریم رجحان کی نگرانی کی حکمت عملی کی تاثیر کو نمایاں طور پر بڑھا دیا جا سکتا ہے.

خلاصہ کریں۔

اس حکمت عملی نے اعلی ٹائم فریم کے رجحانات کا استعمال کرتے ہوئے کم ٹائم فریم کے ٹریڈنگ پر عملدرآمد کی ہدایت کی ہے۔ اس طرح کے ملٹی ٹائم فریم ڈیزائن مارکیٹ کے شور کو مؤثر طریقے سے فلٹر کرسکتے ہیں اور رجحان کی سمت کو زیادہ واضح طور پر پہچان سکتے ہیں۔ اس کے ساتھ ہی ، اس میں تاریخ کی ترتیب کی خصوصیت بھی شامل ہے جس کی وجہ سے پیمائش زیادہ لچکدار ہے۔ مجموعی طور پر ، یہ ایک اچھی طرح سے ڈیزائن کیا گیا ملٹی ٹائم فریم رجحانات سے باخبر رہنے کی حکمت عملی ہے جو مزید تحقیق اور اطلاق کے قابل ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("Higher TF - Repainting", overlay=true, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

HTFMultiplier = input(4, minval=1, step=1)

SupertrendMult = input(1)
SupertrendPd = input(4, minval=4, step=4)

backtestBars = input(title="Backtest from ", defval=10, minval=1, maxval=30)
backtestFrom = input(title="Timeframe", defval="years", options=["days", "months", "years"])

repaintOption = input(title="Repaint", defval="Yes", options=["Yes", "No - set lookahead false", "No - do not use security"])

f_multiple_resolution(HTFMultiplier) => 
    target_Res_In_Min = timeframe.multiplier * HTFMultiplier * (
      timeframe.isseconds   ? 1. / 60. :
      timeframe.isminutes   ? 1. :
      timeframe.isdaily     ? 1440. :
      timeframe.isweekly    ? 7. * 24. * 60. :
      timeframe.ismonthly   ? 30.417 * 24. * 60. : na)

    target_Res_In_Min     <= 0.0417       ? "1S"  :
      target_Res_In_Min   <= 0.167        ? "5S"  :
      target_Res_In_Min   <= 0.376        ? "15S" :
      target_Res_In_Min   <= 0.751        ? "30S" :
      target_Res_In_Min   <= 1440         ? tostring(round(target_Res_In_Min)) :
      tostring(round(min(target_Res_In_Min / 1440, 365))) + "D"

f_getBackTestTimeFrom(backtestFrom, backtestBars)=>
    byDate = backtestFrom == "days"
    byMonth = backtestFrom == "months"
    byYear = backtestFrom == "years"
    
    date = dayofmonth(timenow)
    mth = month(timenow)
    yr = year(timenow)
    
    leapYearDaysInMonth = array.new_int(12,0)
    array.set(leapYearDaysInMonth,0,31)
    array.set(leapYearDaysInMonth,1,29)
    nonleapYearDaysInMonth = array.new_int(12,0)
    array.set(leapYearDaysInMonth,0,31)
    array.set(leapYearDaysInMonth,1,28)
    
    restMonths = array.new_int(10,0)
    array.set(leapYearDaysInMonth,0,31)
    array.set(leapYearDaysInMonth,1,30)
    array.set(leapYearDaysInMonth,2,31)
    array.set(leapYearDaysInMonth,3,30)
    array.set(leapYearDaysInMonth,4,31)
    array.set(leapYearDaysInMonth,5,31)
    array.set(leapYearDaysInMonth,6,30)
    array.set(leapYearDaysInMonth,7,31)
    array.set(leapYearDaysInMonth,8,30)
    array.set(leapYearDaysInMonth,9,31)
    
    array.concat(leapYearDaysInMonth,restMonths)
    array.concat(nonleapYearDaysInMonth,restMonths)
    isLeapYear = yr % 4 == 0 and (year%100 != 0 or year%400 == 0)
    numberOfDaysInCurrentMonth = isLeapYear ? array.get(leapYearDaysInMonth, mth-2) : array.get(nonleapYearDaysInMonth, mth-2)
    if(byDate)
        mth := (date - backtestBars) < 0 ? mth - 1 : mth
        yr := mth < 1 ? yr - 1 : yr
        mth := mth < 1 ? 1 : mth
        date := (date - backtestBars) < 0 ? numberOfDaysInCurrentMonth - backtestBars + date + 1 : date - backtestBars + 1
    if(byMonth)
        date := 1
        yr := (mth - (backtestBars%12)) < 0 ? yr - int(backtestBars/12) - 1 : yr - int(backtestBars/12)
        mth := mth - (backtestBars%12) + 1
    if(byYear)
        date := 1
        mth := 1
        yr := yr - backtestBars
    [date, mth, yr]


repaint = repaintOption == "Yes"
useSecurityLookahead = repaintOption == "No - set lookahead false"

[SupertrendRepaint, DirRepaint] = security(syminfo.tickerid, f_multiple_resolution(HTFMultiplier), supertrend(SupertrendMult, SupertrendPd), lookahead = true, gaps=true)
[SupertrendNoLookahead, DirNoLookahead] = security(syminfo.tickerid, f_multiple_resolution(HTFMultiplier), supertrend(SupertrendMult, SupertrendPd), lookahead = false, gaps=false)

[SupertrendRegular, DirRegular] = supertrend(SupertrendMult, SupertrendPd)

[date, mth, yr] = f_getBackTestTimeFrom(backtestFrom, backtestBars)
inDateRange = time >= timestamp(syminfo.timezone, yr, mth, date, 0, 0)

longCondition = repaint ? DirRepaint == -1 : useSecurityLookahead? DirNoLookahead == -1 : DirRegular == -1
shortCondition = repaint ? DirRepaint == 1 : useSecurityLookahead? DirNoLookahead == 1 : DirRegular == 1
strategy.entry("Buy", strategy.long, when=longCondition and inDateRange)
strategy.entry("Sell", strategy.short, when=shortCondition and inDateRange)