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

پی سگنل ملٹی ٹائم فریم ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-28 16:32:36
ٹیگز:

img

جائزہ

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

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

پی سگنل کی حکمت عملی کا بنیادی اشارے خود پی سگنل ہے ، جو اعداد و شمار کے معیاری انحراف اور سادہ چلتی اوسط کو جوڑتا ہے ، اور اسے گوسین غلطی فنکشن کا استعمال کرتے ہوئے -1 سے 1 کی حد تک نقشہ بناتا ہے ، تاکہ یہ معلوم کیا جاسکے کہ آیا مارکیٹ عام تقسیم کے مطابق ہے۔ مخصوص حساب کتاب کا فارمولا مندرجہ ذیل ہے:

fErf(x) = 1.0 - 1.0/(1.0 + 0.5*abs(x)) * exp(-x*x - 1.26551223 + ...) # Gaussian error function 

fPSignal(ser, n) = fErf((stdev(ser, n) > 0 ? sma(ser, n)/stdev(ser, n)/sqrt(2) : 1)) # P-Signal indicator

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

فوائد کا تجزیہ

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

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

خطرے کا تجزیہ

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

اس کے علاوہ ، اس حکمت عملی میں خود کچھ حدود ہیں۔ مثال کے طور پر ، پرتشدد حرکتوں کو سنبھالنے میں ناکامی ، اشارے کے کراس اوور سے سگنل میں تاخیر وغیرہ۔ یہ سبھی براہ راست تجارت کے دوران پوشیدہ پریشانیوں میں تبدیل ہوسکتے ہیں۔

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

اصلاح کی ہدایات

پی سگنل کی حکمت عملی کو بہتر بنانے کے لئے کئی سمتیں ہیں:

  1. تبدیلی P-سگنل اشارے پیرامیٹرز: nIntr_D، nIntr_W اور nIntr_M، بہترین پیرامیٹر مجموعے تلاش کریں

  2. سٹاپ نقصان کے طریقوں کا اضافہ کریں: پیچھے سٹاپ نقصان، وقت سٹاپ نقصان، ATR سٹاپ نقصان وغیرہ، بہترین سٹاپ نقصان تلاش

  3. معاون اشارے متعارف کروائیں: مخصوص مارکیٹ کے حالات کی تشخیص کو بہتر بنائیں، مثال کے طور پر رجحانات کا تعین کرنے کے لئے MACD کا استعمال کریں

  4. پوزیشن سائزنگ کو بہتر بنائیں: اکاؤنٹ کے استعمال کی کارکردگی کی بنیاد پر متحرک پوزیشن سائزنگ مقرر کریں

  5. مشینی سیکھنے کی اصلاح: عالمی سطح پر بہترین پیرامیٹرز تلاش کرنے کے لئے اعصابی نیٹ ورکس ، جینیاتی الگورتھم کا استعمال کریں

نتیجہ

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


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 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
// A good strategy should be able to handle backtesting.
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy:", precision = 3, pyramiding = 3)
//
// Parameters and const of P-Signal.
//
nPoints_D = input(title = "Number of D Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_W = input(title = "Number of W Bars", type = input.integer, defval = 4, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_M = input(title = "Number of M Bars", type = input.integer, defval = 6, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr_D = nPoints_D - 1
int nIntr_W = nPoints_W - 1
int nIntr_M = nPoints_M - 1
bool bDValveOpen = true
bool bWValveOpen = true
bool bMValveOpen = true
// 
// 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)
//
// Signals for the strategy.
//
float nPSignal_D = sma(fPSignal(change(ohlc4), nIntr_D), nIntr_D)
float ndPSignal_D = sign(nPSignal_D[0] - nPSignal_D[1])
//
float nPSignal_W = sma(security(syminfo.tickerid, "W",fPSignal(change(ohlc4), nIntr_W)), nIntr_W)
float ndPSignal_W = sign(nPSignal_W[0] - nPSignal_W[1])
//
float nPSignal_M = sma(security(syminfo.tickerid, "M",fPSignal(change(ohlc4), nIntr_M)), nIntr_M)
float ndPSignal_M = sign(nPSignal_M[0] - nPSignal_M[1])
//
// P-Signal 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_D, color = color.blue, style = plot.style_line)
//
// Multi Frame Strategy 
// ... Day
if(nPSignal_D < 0 and ndPSignal_D > 0 and bDValveOpen)
    strategy.entry("long_D", strategy.long, 1) 
    bDValveOpen := false
if(nPSignal_D > 0 and ndPSignal_D < 0)
    strategy.close("long_D")
    bDValveOpen := true
// ... Week
if(nPSignal_W < 0 and ndPSignal_W > 0 and bWValveOpen)
    strategy.entry("long_W", strategy.long, 1) 
    bWValveOpen := false
if(nPSignal_W > 0 and ndPSignal_W < 0)
    strategy.close("long_W")
    bWValveOpen := true
// ... Month
if(nPSignal_M < 0 and ndPSignal_M > 0 and bMValveOpen)
    strategy.entry("long_M", strategy.long, 1) 
    bMValveOpen := false
if(nPSignal_M > 0 and ndPSignal_M < 0)
    strategy.close("long_M")
    bMValveOpen := true
// The end.

مزید