Gaussian Moving Average Trading Strategy


تخلیق کی تاریخ: 2024-01-03 16:06:45 آخر میں ترمیم کریں: 2024-01-03 16:06:45
کاپی: 0 کلکس کی تعداد: 1104
1
پر توجہ دیں
1621
پیروکار

Gaussian Moving Average Trading Strategy

جائزہ

یہ حکمت عملی Gaussian تقسیم کے خیالات کا استعمال کرتا ہے، ہائکلکل کی چوٹی کے 10 دورانیہ اشاریہ منتقل اوسط پر مبنی Z کی قیمت کا حساب لگاتا ہے، پھر اس Z کی قیمت کے 20 دورانیہ اشاریہ منتقل اوسط پر ایک حد مقرر کی جاتی ہے، اور اس کی بنیاد پر اس کی بنیاد پر پوزیشنوں اور خالی پوزیشنوں کا تعین کیا جاتا ہے.

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

  1. ہائیکلیک سلنڈر کے اختتامی قیمت کے 10 دورانیہ اشاریہ منتقل اوسط کا حساب لگائیں۔

  2. مندرجہ بالا منتقل اوسط کے اعداد و شمار کی بنیاد پر ، 25 دوروں میں Z کی قیمت کا حساب لگائیں۔ Z کی قیمت اعداد و شمار کی اوسط سے انحراف کے معیاری فرق کی عکاسی کرتی ہے ، جس سے یہ فیصلہ کیا جاسکتا ہے کہ اعداد و شمار معمول کے مطابق ہیں یا غیر معمولی ہیں۔

  3. Z اقدار کے لئے 20 دورانیہ اشاریہ منتقل اوسط دوبارہ حساب کیا جاتا ہے، curveemaScore حاصل کرنے کے لئے. یہ منحنی خطوط Z اقدار کے لئے طویل مدتی رجحان کی عکاسی کرتی ہے.

  4. ایما اسکور کے اعداد و شمار کی تقسیم کی بنیاد پر ، اوپر اور نیچے کی حد مقرر کریں۔ منحنی خطوط میں کچھ اتار چڑھاؤ کو مدنظر رکھتے ہوئے ، یہاں تقسیم کے 90٪ اور 10٪ اعداد و شمار کو حد بندی کے طور پر منتخب کیا گیا ہے۔

  5. جب ایما اسکور پر درمیانی لائن یا نیچے کی حد سے گزرے تو زیادہ کریں۔ جب ایما اسکور کے نیچے حد سے گزرے ، نیچے کی حد یا 100 دوروں میں سب سے زیادہ ہو تو خالی کریں۔

طاقت کا تجزیہ

  1. Gaussian تقسیم کے نظریے کو لاگو کریں، Z اقدار کی طرف سے معمول کا تعین کرنے کے لئے، جعلی توڑنے کو فلٹر کرنے کے لئے.

  2. دوہری فلٹرنگ ، ایکسی اسکور وکر کا استعمال کرتے ہوئے ، طویل مدتی رجحانات کا تعین کریں EXTENSIVE511

  3. معقول حد مقرر کریں تاکہ غلط ٹرانزیکشن کا امکان کم ہو۔

  4. 100 سائیکلوں کے سب سے کم اور سب سے زیادہ کے ساتھ، آپ کو واپس آنے کا موقع مل سکتا ہے.

خطرے کا تجزیہ

  1. Z اقدار اور منتقل اوسط کے مجموعے میں استعمال کیا جاتا ہے، پیرامیٹر حساس ہے اور اصلاح کی ضرورت ہے.

  2. ایک حد مقرر کرنے کے لئے معقول ہے یا نہیں بہت بڑا، بہت وسیع یا بہت تنگ ہے.

  3. سو سائیکل کے سب سے کم سے کم نقطہ غلط سگنل پیدا کرنے کے لئے آسان ہے، مناسب طریقے سے ٹرگر کی شرائط میں نرمی.

  4. ہیکلک ٹینک خود ہی کچھ تاخیر کا شکار ہے اور اس حکمت عملی کے لئے اس کی اہلیت کا جائزہ لینے کی ضرورت ہے۔

اصلاح کی سمت

  1. مختلف ادوار کے لئے متحرک اوسط کی جانچ پڑتال کریں ، Z ویلیو پیرامیٹرز

  2. واک فارورڈ تجزیہ کا استعمال کرتے ہوئے پیرامیٹرز کو خود بخود بہتر بنائیں۔

  3. معیاری فرق کے مختلف طریقوں کو آزمائیں جیسے کہ معیاری فرق کا ضرب۔

  4. غلط سگنل کو روکنے کے لئے اعلی ترین اور کم سے کم نقطہ نظر کی منطق کو بہتر بنائیں۔

  5. ہائکلک کی چٹائی کے متبادل کے طور پر دیگر قسم کے چٹائی یا عام قیمتوں کی کوشش کریں.

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 5m
basePeriod: 1m
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/
// © jensenvilhelm

// Here is an attempt to create a robust strategy for BTCUSD on a 5 minute chart
// I can't seem to get this code to work the way i want.... if you want to give it a try, please let me know -
// how it goes in comment section. 

//@version=5
// Define the strategy settings
strategy("The Z-score", shorttitle="TZS", overlay=true)

// User can set the start date for the strategy
startDate = timestamp("2023 06 01")

// Heikin-Ashi Open, Close, High and Low calculation
haClose = ohlc4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(nz(haOpen, high), nz(haClose, high), high)
haLow = math.min(nz(haOpen, low), nz(haClose, low), low)

// Function to calculate the Z-Score
z_score(_series, _length) =>
    _mean = ta.sma(_series, _length)
    _stddev = ta.stdev(_series, _length)
    (_series - _mean) / _stddev

// Compute the score and its EMA
score = z_score(ta.ema(haClose, 10), 25)
emaScore = ta.ema(score, 20)

// Calculate lower and upper thresholds using percentiles of EMA
lowerBlue = ta.percentile_linear_interpolation(emaScore, 50, 10)
upperBlue = ta.percentile_linear_interpolation(emaScore, 50, 90)

// Calculate the middle line as 50th percentile
middleLine = ta.percentile_linear_interpolation(emaScore, 50, 50) 

// Plot the EMA of the score and the thresholds
plot(emaScore,"The White Line", color=color.white, linewidth=2)
plot(lowerBlue,"Lower Blue Line", linewidth=2)
plot(upperBlue, "Upper Blue Line", linewidth=2)
plot(middleLine, "Middle Yellow Line", linewidth=2, color=color.yellow)
plot(score,"The Z-Score Mixed With EMA 10", color=color.green)

// Calculate highest and lowest EMA score over 100 bars period
highest = ta.highest(emaScore, 100)
lowest = ta.lowest(emaScore, 100)

// Plot highest and lowest EMA score lines 
plot(highest, "Highest of emaScore", color=color.red, linewidth=2)
plot(lowest, "Lowest of emaScore", color=color.red, linewidth=2)

// Define entry and exit conditions for long and short positions
longCon = ta.crossover(score, lowerBlue) or ta.crossover(emaScore, middleLine)
addOn = ta.crossover(score, highest)
shortCon = ta.crossunder(emaScore, upperBlue) or ta.crossunder(emaScore, lowerBlue) or ta.crossunder(emaScore, highest)

// Execute trading logic based on conditions and after the start date
if (time >= startDate)
    if longCon
        strategy.entry("Long", strategy.long)
        if shortCon
            strategy.close("Long")
    if addOn
        strategy.entry("LongNR2", strategy.long)
        if shortCon
            strategy.close("LongNR2")
    
    if shortCon
        strategy.entry("Short", strategy.short)
        if longCon
            strategy.close("Short")