
پی سگنل کثیر ٹائم فریم ٹریڈنگ حکمت عملی ایک ڈیجیٹل کرنسی الگورتھم ٹریڈنگ حکمت عملی ہے جو اعداد و شمار کے اصولوں پر مبنی ہے ، جس میں کثیر ٹائم فریم تجزیہ شامل ہے۔ اس حکمت عملی میں گاؤس غلطی کی تقریب اور پی سگنل اشارے کو بٹ کوائن کے دن ، دن اور چاند کی لکیر کے لئے ماڈل فٹ استعمال کیا جاتا ہے ، جس میں اشارے کے مطابق گولڈ فورک زیادہ اور ڈیڈ فورک خالی کرنے کے لئے اتار چڑھاؤ کی شرح پر تجارت کی جاتی ہے۔
پی سگنل حکمت عملی کا بنیادی اشارے پی سگنل ہے ، جو اعدادوشمار کے معیاری فرق اور سادہ حرکت پذیری اوسط کو جوڑتا ہے ، جو گاس کی غلطی کے فنکشن کے ذریعہ -1 سے 1 تک کی حد میں نقشہ تیار کرتا ہے ، جس کا استعمال مارکیٹ کو درست تقسیم کے مطابق کرنے کے لئے کیا جاتا ہے۔ اس کا حساب کتاب کرنے کے لئے مخصوص فارمولہ مندرجہ ذیل ہے:
fErf(x) = 1.0 - 1.0/(1.0 + 0.5*abs(x)) * exp(-x*x - 1.26551223 + ...) # 高斯误差函数
fPSignal(ser, n) = fErf((stdev(ser, n) > 0 ? sma(ser, n)/stdev(ser, n)/sqrt(2) : 1)) # P-Signal指标
یہ حکمت عملی سورج کی لکیر ، گھڑی اور چاند کی لکیر کے وقت کے فریم میں پی سگنل اشارے کا حساب لگاتی ہے ، جب اشارے اوپر 0 محور سے گزرتے ہیں تو زیادہ کرتے ہیں ، اور نیچے 0 محور سے گزرتے ہیں تو فلیٹ ہوتے ہیں۔ اس کے ساتھ ہی اشارے کی قیمت والی والو کنٹرول کو دوبارہ کھولنے کی پوزیشن بھی لگائی جاتی ہے۔
پی سگنل کی حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اسٹریٹجک استحکام کو بڑھانے کے لئے متعدد ٹائم فریموں کا استعمال کیا جاسکتا ہے۔ دن کی لکیر مارکیٹ میں قلیل مدتی اتار چڑھاؤ کو پکڑتی ہے ، ہفتہ وار ماہانہ لکیر فلٹر چھلانگ توڑ دیتی ہے۔ اس کے علاوہ ، پی سگنل اشارے میں خود بھی کچھ پیش گوئی کرنے کی صلاحیت موجود ہے ، جو رجحان سازی کے عمل میں اتار چڑھاؤ کو بڑھا سکتی ہے۔
سنگل ٹائم فریم کے مقابلے میں ، ملٹی ٹائم فریم واپسی کے وقت ڈے لائن اسٹاپ نقصان کا فائدہ اٹھاسکتے ہیں ، جبکہ ہلچل کے حالات میں اعلی ٹائم فریم کا استعمال کرتے ہوئے تجارت کی فریکوئنسی کو کم کیا جاسکتا ہے۔ مجموعی طور پر ، اس مجموعہ سے منافع بخش ہونے کی ضمانت دیتے ہوئے مطلق اور نسبتا withdraw واپسی کو کم سے کم کیا جاسکتا ہے۔
پی سگنل کی حکمت عملی کا سب سے بڑا خطرہ یہ ہے کہ اشارے خود کو ایک سیاہ خانہ ہے جس میں مقدار کے تاجروں کے لئے ہے۔ ہمیں اس بات کا تعین کرنے میں دشواری ہے کہ اشارے کو کسی خاص مارکیٹ کے لئے کس حد تک موزوں بنایا گیا ہے ، اور اس کے پیرامیٹرز کی زیادہ سے زیادہ حد کا تعین نہیں کیا جاسکتا ہے۔ اس سے حکمت عملی کی کارکردگی خراب ہوسکتی ہے۔
اس کے علاوہ ، حکمت عملی خود بھی کچھ حدود رکھتی ہے۔ جیسے کہ شدید حالات کو سنبھالنے میں ناکامی ، اشارے کی خرابی کو ٹریڈنگ سگنل کے طور پر تاخیر کا سامنا کرنا پڑ سکتا ہے۔ یہ مسائل حقیقی وقت کے خفیہ خطرات بن سکتے ہیں۔
ان مسائل کو حل کرنے کے لئے ، ہم اشارے کے پیرامیٹرز کو ایڈجسٹ کرسکتے ہیں ، اسٹاپ نقصان کو بہتر بناسکتے ہیں ، مزید معاون اشارے متعارف کروا سکتے ہیں ، وغیرہ۔ لیکن اس شرط پر کہ کافی بڑے ریٹرننگ زون میں حکمت عملی کی استحکام کی تصدیق کی جائے۔
P-Signal کی حکمت عملی میں کئی اصلاحات ہیں:
P-Signal اشارے کے پیرامیٹرز کو تبدیل کریں: nIntr_D ، nIntr_W اور nIntr_M ، پیرامیٹرز کا بہترین مجموعہ تلاش کریں
نقصان کو روکنے کے طریقوں میں اضافہ کریں: ٹریک نقصان، وقت نقصان، اے ٹی آر نقصان، وغیرہ، بہترین نقصان کو روکنے کے طریقوں کو تلاش کریں
معاون اشارے متعارف کروانا: مخصوص حالات کے بارے میں فیصلے کرنے کی صلاحیت کو بڑھانے کے لئے حکمت عملی ، جیسے MACD فیصلے کے رجحانات متعارف کروانا
پوزیشن مینجمنٹ کو بہتر بنانا: متحرک پوزیشنوں کو ترتیب دیں ، فنڈز کے استعمال کو بہتر بنائیں
مشین لرننگ کی اصلاح کے پیرامیٹرز: نیورل نیٹ ورکس ، جینیاتی الگورتھم وغیرہ کے ذریعہ پیرامیٹرز کی عالمی سطح پر تلاش کریں
پی سگنل ملٹی ٹائم فریم ٹریڈنگ حکمت عملی مجموعی طور پر ایک بہت ہی ممکنہ حکمت عملی ہے۔ یہ اعدادوشمار کے اصولوں اور تکنیکی اشارے کو ملا کر ملٹی ٹائم فریم تجزیہ کا استعمال کرتے ہوئے استحکام کو بہتر بناتا ہے۔ اگر ہم اس کی کچھ حدود کو بڑے پیمانے پر ریٹرننگ اور اصلاح کے ذریعے حل کرسکتے ہیں تو ، اس کا ترجمہ حقیقی اور قابل استعمال ڈیجیٹل کرنسی الگورتھم ٹریڈنگ حکمت عملی میں کرنے کا امکان بالکل موجود ہے۔
/*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.