ملٹی ٹائم فریم متحرک بیک ٹیسٹ حکمت عملی


تخلیق کی تاریخ: 2023-11-21 17:07:17 آخر میں ترمیم کریں: 2023-11-21 17:07:17
کاپی: 1 کلکس کی تعداد: 698
1
پر توجہ دیں
1617
پیروکار

ملٹی ٹائم فریم متحرک بیک ٹیسٹ حکمت عملی

جائزہ

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

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

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

مثال کے طور پر ، جب آفسیٹ 0 ہوتا ہے تو ، موجودہ K لائن کی اعلی ترین اور کم ترین قیمت حاصل کی جاتی ہے۔ جب آفسیٹ 1 ہوتا ہے تو ، پچھلی K لائن کی اعلی ترین اور کم ترین قیمت حاصل کی جاتی ہے۔ دو K لائنوں کے مابین قیمت میں تبدیلی کا موازنہ کرکے ، رجحان کی سمت کا فیصلہ کریں۔

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

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

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

اسٹریٹجک رسک

  1. ایک سے زیادہ ٹائم فریم کے فیصلے سے غلط فہمی کا خطرہ ہے
  2. repainting کی وجہ سے ہو سکتا ہے غلط regression پیرامیٹرز کی ترتیب
  3. ٹرانزیکشن کی کثرت سے ٹرانزیکشن کی لاگت اور سلائڈ پوائنٹ کے خطرے میں اضافہ ہوسکتا ہے

حل:

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

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

  1. مشین لرننگ ماڈیولز کا اضافہ اور اے آئی کے ذریعے رجحانات کا تعین
  2. اسٹاک کی قیمتوں میں اتار چڑھاو کے ساتھ ، پوزیشنوں میں متحرک ایڈجسٹمنٹ
  3. نقصان کے خطرے کو مؤثر طریقے سے کنٹرول کرنے کے لئے نقصان کی روک تھام کے نظام میں شامل ہونا

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-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("HTF High/Low Repaint Strategy", overlay=true, initial_capital = 20000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01)

i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true

resolution = input("3M", type=input.resolution)
HTFMultiplier = input(22, minval=1, step=1)
offset = input(0, minval=0, step=1)
lookahead = input(true)
gaps = false

f_secureSecurity_on_on(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on, gaps=barmerge.gaps_on)
f_secureSecurity_on_off(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on, gaps=barmerge.gaps_off)
f_secureSecurity_off_on(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_off, gaps=barmerge.gaps_on)
f_secureSecurity_off_off(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_off, gaps=barmerge.gaps_off)

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_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset)=>
    derivedResolution = resolution == ""?f_multiple_resolution(HTFMultiplier):resolution
    nhigh_on_on = f_secureSecurity_on_on(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_on_on = f_secureSecurity_on_on(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh_on_off = f_secureSecurity_on_off(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_on_off = f_secureSecurity_on_off(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh_off_on = f_secureSecurity_off_on(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_off_on = f_secureSecurity_off_on(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh_off_off = f_secureSecurity_off_off(syminfo.tickerid, derivedResolution, high, offset) 
    nlow_off_off = f_secureSecurity_off_off(syminfo.tickerid, derivedResolution, low, offset)
    
    nhigh = lookahead and gaps ? nhigh_on_on :
             lookahead and not gaps ? nhigh_on_off :
             not lookahead and gaps ? nhigh_off_on :
             not lookahead and not gaps ? nhigh_off_off : na
    nlow = lookahead and gaps ? nlow_on_on :
             lookahead and not gaps ? nlow_on_off :
             not lookahead and gaps ? nlow_off_on :
             not lookahead and not gaps ? nlow_off_off : na
    [nhigh, nlow]
    
[nhigh, nlow] = f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset)
[nhighlast, nlowlast] = f_get_htfHighLow(resolution, HTFMultiplier, lookahead, gaps, offset+1)
plot(nhigh , title="HTF High",style=plot.style_circles, color=color.green, linewidth=1) 
plot(nlow , title="HTF Low",style=plot.style_circles, color=color.red, linewidth=1)

buyCondition = nhigh > nhighlast and nlow > nlowlast
sellCondition = nhigh < nhighlast and nlow < nlowlast

strategy.entry("Buy", strategy.long, when= buyCondition and inDateRange, oca_name="oca_buy")
strategy.entry("Sell", strategy.short, when= sellCondition and inDateRange, oca_name="oca_sell")