مومنٹم ٹریکنگ انکولی شماریاتی ثالثی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-11 16:41:27
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

فوائد

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

خطرات

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

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

بہتری کی ہدایات

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

نتیجہ

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


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Julien_Eche
//@version=5

strategy("Nadaraya-Watson Envelope Strategy", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20)

// Helper Functions
getEnvelopeBounds(_atr, _nearFactor, _farFactor, _envelope) => 
    _upperFar = _envelope + _farFactor*_atr
    _upperNear = _envelope + _nearFactor*_atr
    _lowerNear = _envelope - _nearFactor*_atr
    _lowerFar = _envelope - _farFactor*_atr
    _upperAvg = (_upperFar + _upperNear) / 2
    _lowerAvg = (_lowerFar + _lowerNear) / 2 
    [_upperNear, _upperFar, _upperAvg, _lowerNear, _lowerFar, _lowerAvg]

customATR(length, _high, _low, _close) =>
    trueRange = na(_high[1])? math.log(_high)-math.log(_low) : math.max(math.max(math.log(_high) - math.log(_low), math.abs(math.log(_high) - math.log(_close[1]))), math.abs(math.log(_low) - math.log(_close[1])))
    ta.rma(trueRange, length)

customKernel(x, h, alpha, x_0) =>
    sumWeights = 0.0
    sumXWeights = 0.0
    for i = 0 to h
        weight = math.pow(1 + (math.pow((x_0 - i), 2) / (2 * alpha * h * h)), -alpha)
        sumWeights := sumWeights + weight
        sumXWeights := sumXWeights + weight * x[i]
    sumXWeights / sumWeights

// Custom Settings
customLookbackWindow = input.int(8, 'Lookback Window (Custom)', group='Custom Settings')
customRelativeWeighting = input.float(8., 'Relative Weighting (Custom)', step=0.25, group='Custom Settings')
customStartRegressionBar = input.int(25, "Start Regression at Bar (Custom)", group='Custom Settings')

// Envelope Calculations
customEnvelopeClose = math.exp(customKernel(math.log(close), customLookbackWindow, customRelativeWeighting, customStartRegressionBar))
customEnvelopeHigh = math.exp(customKernel(math.log(high), customLookbackWindow, customRelativeWeighting, customStartRegressionBar))
customEnvelopeLow = math.exp(customKernel(math.log(low), customLookbackWindow, customRelativeWeighting, customStartRegressionBar))
customEnvelope = customEnvelopeClose
customATRLength = input.int(60, 'ATR Length (Custom)', minval=1, group='Custom Settings')
customATR = customATR(customATRLength, customEnvelopeHigh, customEnvelopeLow, customEnvelopeClose)
customNearATRFactor = input.float(1.5, 'Near ATR Factor (Custom)', minval=0.5, step=0.25, group='Custom Settings')
customFarATRFactor = input.float(2.0, 'Far ATR Factor (Custom)', minval=1.0, step=0.25, group='Custom Settings')
[customUpperNear, customUpperFar, customUpperAvg, customLowerNear, customLowerFar, customLowerAvg] = getEnvelopeBounds(customATR, customNearATRFactor, customFarATRFactor, math.log(customEnvelopeClose))

// Colors
customUpperBoundaryColorFar = color.new(color.red, 60)
customUpperBoundaryColorNear = color.new(color.red, 80)
customBullishEstimatorColor = color.new(color.teal, 50)
customBearishEstimatorColor = color.new(color.red, 50)
customLowerBoundaryColorNear = color.new(color.teal, 80)
customLowerBoundaryColorFar = color.new(color.teal, 60)

// Plots
customUpperBoundaryFar = plot(math.exp(customUpperFar), color=customUpperBoundaryColorFar, title='Upper Boundary: Far (Custom)')
customUpperBoundaryAvg = plot(math.exp(customUpperAvg), color=customUpperBoundaryColorNear, title='Upper Boundary: Average (Custom)')
customUpperBoundaryNear = plot(math.exp(customUpperNear), color=customUpperBoundaryColorNear, title='Upper Boundary: Near (Custom)') 
customEstimationPlot = plot(customEnvelopeClose, color=customEnvelope > customEnvelope[1] ? customBullishEstimatorColor : customBearishEstimatorColor, linewidth=2, title='Custom Estimation')
customLowerBoundaryNear = plot(math.exp(customLowerNear), color=customLowerBoundaryColorNear, title='Lower Boundary: Near (Custom)')
customLowerBoundaryAvg = plot(math.exp(customLowerAvg), color=customLowerBoundaryColorNear, title='Lower Boundary: Average (Custom)') 
customLowerBoundaryFar = plot(math.exp(customLowerFar), color=customLowerBoundaryColorFar, title='Lower Boundary: Far (Custom)')

// Fills
fill(customUpperBoundaryFar, customUpperBoundaryAvg, color=customUpperBoundaryColorFar, title='Upper Boundary: Farmost Region (Custom)')
fill(customUpperBoundaryNear, customUpperBoundaryAvg, color=customUpperBoundaryColorNear, title='Upper Boundary: Nearmost Region (Custom)')
fill(customLowerBoundaryNear, customLowerBoundaryAvg, color=customLowerBoundaryColorNear, title='Lower Boundary: Nearmost Region (Custom)')
fill(customLowerBoundaryFar, customLowerBoundaryAvg, color=customLowerBoundaryColorFar, title='Lower Boundary: Farmost Region (Custom)')


longCondition = ta.crossover(close, customEnvelopeLow)
if (longCondition)
    strategy.entry("Buy", strategy.long)

exitLongCondition = ta.crossover(customEnvelopeHigh, close)
if (exitLongCondition)
    strategy.close("Buy")


مزید