وسائل لوڈ ہو رہے ہیں... لوڈنگ...

گیوسین غلطی فنکشن پر مبنی مقداری تجارتی حکمت عملی کا تجزیہ

مصنف:چاؤ ژانگ، تاریخ: 2024-01-19 14:28:03
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کا بنیادی اشارے پی سگنل ہے۔ پی سگنل کا حساب کتاب کا فارمولا یہ ہے:

fPSignal(ser, int) =>
    nStDev = stdev(ser, int) 
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)

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

  1. nStDev قیمت کا معیاری انحراف ہے۔
  2. nSma قیمت کا سادہ چلتا ہوا اوسط ہے۔
  3. fErf Gaussian غلطی تقریب ہے.

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

حکمت عملی میں P سگنل کی قیمت اور اس کے تبدیلی کے نشان کا استعمال داخلہ اور باہر نکلنے کا تعین کرنے کے لئے کیا جاتا ہے:

strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)

strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)  

جب P-Signal 0 سے کم ہو اور مثبت میں تبدیل ہو تو یہ طویل ہوجاتا ہے۔ جب P-Signal 0 سے زیادہ ہو اور منفی میں تبدیل ہو تو یہ پوزیشن بند ہوجاتا ہے۔

فوائد

اس حکمت عملی کے فوائد میں شامل ہیں:

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

خطرات

اس حکمت عملی کے ساتھ کچھ خطرات بھی ہیں:

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

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

بہتری

مزید بہتری کی گنجائش ہے:

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

نتیجہ

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


/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 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/
// P-Signal Strategy © Kharevsky
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy", precision = 3)
// Parameters and const of P-Signal.
nPoints = input(title = "Number of Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr = nPoints - 1
// Horner's method for the error (Gauss) & P-Signal functions.
fErf(x) =>
    nT = 1.0/(1.0 + 0.5*abs(x))
    nAns = 1.0 - nT*exp(-x*x - 1.26551223 + 
     nT*( 1.00002368 + nT*( 0.37409196 + nT*( 0.09678418 + 
     nT*(-0.18628806 + nT*( 0.27886807 + nT*(-1.13520398 + 
     nT*( 1.48851587 + nT*(-0.82215223 + nT*( 0.17087277 ))))))))))
    x >= 0 ? nAns : -nAns
fPSignal(ser, int) => 
    nStDev = stdev(ser, int)
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)
// Strat.
float nPSignal = sma(fPSignal(change(ohlc4), nIntr), nIntr)
float ndPSignal = sign(nPSignal[0] - nPSignal[1])
strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)
strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)
// Plotting. 
hline(+1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
hline(-1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
plot(nPSignal, color = color.blue, style = plot.style_line)
plot(strategy.position_size, color = color.white, style = plot.style_cross)
// Alerts.
if(strategy.position_size[0] > strategy.position_size[1])
    alert("P-Signal strategy opened the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
if(strategy.position_size[0] < strategy.position_size[1])
    alert("P-Signal strategy closed the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
// The end.

مزید