پروگرامٹک ٹریڈنگ میں ، اکثر اوسط اور تغیرات کا حساب لگانا ضروری ہوتا ہے ، جیسے حرکت پذیر اوسط اور اتار چڑھاؤ کے اشارے کا حساب لگانا۔ جب ہمیں اعلی تعدد اور طویل مدتی حساب کتاب کی ضرورت ہوتی ہے تو ، تاریخی اعداد و شمار کو طویل عرصے تک برقرار رکھنا ضروری ہوتا ہے ، جو غیر ضروری اور وسائل سے بھرپور ہوتا ہے۔ یہ مضمون وزن والے اوسط اور تغیرات کا حساب لگانے کے لئے ایک آن لائن اپ ڈیٹ الگورتھم متعارف کراتا ہے ، جو خاص طور پر حقیقی وقت کے اعداد و شمار کے سلسلے کو پروسیسنگ اور متحرک طور پر ایڈجسٹ کرنے کے لئے ضروری ہے تجارتی حکمت عملی ، خاص طور پر اعلی تعدد کی حکمت عملی۔ مضمون میں تاجروں کو فوری طور پر تعینات کرنے اور اصل تجارت میں الگورتھم کو لاگو کرنے میں مدد کے لئے متعلقہ پائتھون کوڈ کی عمل درآمد بھی فراہم کی گئی ہے۔
اگر ہم استعمالnth ڈیٹا پوائنٹ کی اوسط قدر کی نمائندگی کرنے کے لئے، یہ فرض کرتے ہوئے کہ ہم نے پہلے ہی n-1 ڈیٹا پوائنٹس / اپ لوڈ / اثاثہ / 28e28ae0beba5e8a810a6.png کی اوسط شمار کیا ہے، اب ہم ایک نیا ڈیٹا پوائنٹ / اپ لوڈ / اثاثہ / 28d4723cf4cab1cf78f50.png حاصل کرتے ہیں. ہم نئے اوسط نمبر کا حساب کرنا چاہتے ہیںجس میں نیا ڈیٹا پوائنٹ بھی شامل ہے۔ ذیل میں ایک تفصیلی اخذ ہے۔
تغیر کی تازہ کاری کا عمل مندرجہ ذیل مراحل میں تقسیم کیا جاسکتا ہے:
جیسا کہ مندرجہ بالا دو فارمولوں سے دیکھا جا سکتا ہے، یہ عمل ہمیں ہر نئے ڈیٹا پوائنٹ حاصل کرنے پر نئے اوسط اور تغیرات کو اپ ڈیٹ کرنے کی اجازت دیتا ہےاس سے پہلے کے اعداد و شمار کے اوسط اور تغیر کو برقرار رکھنے کے بغیر ، تاریخی اعداد و شمار کو محفوظ کیے بغیر ، حساب کتاب کو زیادہ موثر بناتا ہے۔ تاہم ، مسئلہ یہ ہے کہ ہم اس طرح سے جو حساب لگاتے ہیں وہ تمام نمونے کا اوسط اور تغیر ہے ، جبکہ اصل حکمت عملیوں میں ، ہمیں ایک خاص مقررہ مدت پر غور کرنے کی ضرورت ہے۔ مندرجہ بالا اوسط اپ ڈیٹ کا مشاہدہ کرنے سے پتہ چلتا ہے کہ نئی اوسط اپ ڈیٹس کی مقدار نئے اعداد و شمار اور ماضی کے اوسط کے درمیان ایک انحراف ہے جو تناسب سے ضرب ہے۔ اگر یہ تناسب طے شدہ ہے تو ، اس سے ایک تیزی سے وزن میں اوسط پیدا ہوگا ، جس پر ہم اگلا تبادلہ خیال کریں گے۔
ایکسپونینشل ویوٹڈ میڈین کو مندرجہ ذیل ریکوریو رشتہ کے ذریعہ بیان کیا جاسکتا ہے:
ان میں،t وقت کے نقطہ پر ایکسپونینشل وزن اوسط ہے،وقت t میں مشاہدہ کی قدر ہے، α وزن عنصر ہے، اورپچھلے وقت کے نقطہ کا ایکسپونینشل ویٹڈ میڈین ہے۔
تغیر کے بارے میں ، ہمیں ہر وقت کے نقطہ پر مربع انحراف کے اشاریاتی وزن والے اوسط کا حساب لگانے کی ضرورت ہے۔ یہ مندرجہ ذیل تکرار تعلقات کے ذریعے حاصل کیا جاسکتا ہے۔
ان میں،وقت t پر ایکسپونینشل وزن والا تغیر ہے، اورپچھلے وقت کے نقطہ کی ایکسپونینشل وزن شدہ تغیر ہے.
نمایاں طور پر وزن والے اوسط اور تغیر کا مشاہدہ کریں ، ان کی اضافی تازہ کاریاں بدیہی ہیں ، ماضی کی اقدار کا ایک حصہ برقرار رکھتے ہیں اور نئی تبدیلیاں شامل کرتے ہیں۔ اس کاغذ میں مخصوص مشتق عمل کا حوالہ دیا جاسکتا ہے:https://fanf2.user.srcf.net/hermes/doc/antiforgery/stats.pdf
ایس ایم اے (جسے ریاضیاتی اوسط بھی کہا جاتا ہے) اور ای ایم اے دو عام شماریاتی اقدامات ہیں ، جن میں سے ہر ایک کی خصوصیات اور استعمال مختلف ہیں۔ پہلا ہر مشاہدے کو برابر وزن دیتا ہے ، جو ڈیٹا سیٹ کی مرکزی پوزیشن کی عکاسی کرتا ہے۔ دوسرا ایک تکرار حساب کتاب کا طریقہ ہے جو حالیہ مشاہدات کو زیادہ وزن دیتا ہے۔ وزن تیزی سے کم ہوتا ہے کیونکہ موجودہ وقت سے فاصلہ ہر مشاہدے کے لئے بڑھتا ہے۔
اگرچہ ایس ایم اے اور ای ایم اے تصوراتی طور پر مختلف ہیں ، لیکن ہم ایک مناسب α قدر کا انتخاب کرکے ایک مخصوص تعداد میں مشاہدات پر مشتمل ایس ایم اے کے قریب ای ایم اے بنا سکتے ہیں۔ اس قریب سے تعلق کو موثر نمونہ سائز کے ذریعہ بیان کیا جاسکتا ہے ، جو ای ایم اے میں وزن کے عنصر α کا ایک فنکشن ہے۔
ایس ایم اے ایک مقررہ وقت کی ونڈو کے اندر تمام قیمتوں کا ریاضیاتی اوسط ہے۔ ایک وقت کی ونڈو N کے لئے ، ایس ایم اے کا سینٹرائڈ (یعنی وہ پوزیشن جہاں اوسط نمبر واقع ہے) اس طرح سمجھا جاسکتا ہے:
ایس ایم اے کا سینٹرائڈ
ای ایم اے ایک قسم کا وزن دار اوسط ہے جہاں حالیہ اعداد و شمار کے پوائنٹس کا وزن زیادہ ہوتا ہے۔ ای ایم اے کا وزن وقت کے ساتھ ساتھ نمایاں طور پر کم ہوتا ہے۔ ای ایم اے کا سینٹرائڈ مندرجہ ذیل سیریز کا خلاصہ کرکے حاصل کیا جاسکتا ہے:
ای ایم اے کا سینٹرائڈ
جب ہم فرض کرتے ہیں کہ ایس ایم اے اور ای ایم اے کا ایک ہی سینٹرائڈ ہے، تو ہم حاصل کرسکتے ہیں:
اس مساوات کو حل کرنے کے لئے، ہم α اور N کے درمیان تعلقات حاصل کر سکتے ہیں.
اس کا مطلب یہ ہے کہ N دنوں کے دیئے گئے ایس ایم اے کے لئے ،
فرض کریں کہ ہمارے پاس ایک ای ایم اے ہے جو ہر سیکنڈ میں اپ ڈیٹ ہوتا ہے ، جس کا وزن فیکٹر / اپ لوڈ / اثاثہ / 28da19ef219cae323a32f.png ہے۔ اس کا مطلب یہ ہے کہ ہر سیکنڈ میں ، نیا ڈیٹا پوائنٹ ای ایم اے میں / اپ لوڈ / اثاثہ / 28da19ef219cae323a32f.png کے وزن کے ساتھ شامل کیا جائے گا ، جبکہ پرانے ڈیٹا پوائنٹس کے اثر و رسوخ کو / اپ لوڈ / اثاثہ / 28cfb008ac438a12e1127.png سے ضرب دیا جائے گا۔
اگر ہم اپ ڈیٹ کی تعدد کو تبدیل کرتے ہیں، جیسے ہر f سیکنڈ میں ایک بار اپ ڈیٹ کرنا، تو ہم ایک نیا وزن فیکٹر / اپ لوڈ / اثاثہ / 28d2d28762e349a03c531.png تلاش کرنا چاہتے ہیں، تاکہ f سیکنڈ کے اندر اعداد و شمار کے پوائنٹس کا مجموعی اثر ہر سیکنڈ میں اپ ڈیٹ ہونے پر ہی ہو۔
f سیکنڈ کے اندر ، اگر کوئی تازہ کاری نہیں کی جاتی ہے تو ، پرانے ڈیٹا پوائنٹس کا اثر مسلسل f گنا گھٹ جائے گا ، ہر بار / اپ لوڈ / اثاثہ / 28e50eb9c37d5626d6691.png سے ضرب کیا جائے گا۔ لہذا ، f سیکنڈ کے بعد مجموعی گھٹنے کا عنصر / اپ لوڈ / اثاثہ / 28e296f97d8c8344a2ee6.png ہے۔
تاکہ ہر f سیکنڈ میں اپ ڈیٹ ہونے والے ای ایم اے کو ایک اپ ڈیٹ مدت کے اندر ہر سیکنڈ میں اپ ڈیٹ ہونے والے ای ایم اے کے طور پر ایک ہی زوال کا اثر پڑے، ہم f سیکنڈ کے بعد مجموعی زوال فیکٹر کو ایک اپ ڈیٹ مدت کے اندر زوال فیکٹر کے برابر مقرر کرتے ہیں:
اس مساوات کو حل کرتے ہوئے، ہم نئے وزن کے عوامل حاصل کرتے ہیں
یہ فارمولا نئے وزن فیکٹر / اپ لوڈ / اثاثہ / 28d2d28762e349a03c531.png کی تخمینہ قدر فراہم کرتا ہے ، جو اپ ڈیٹ کی تعدد میں تبدیلی کے وقت EMA ہموار اثر کو برقرار رکھتا ہے۔ مثال کے طور پر: جب ہم اوسط قیمت کا حساب لگاتے ہیںایک قدر 0.001 کے ساتھ اور ہر 10 سیکنڈ میں اسے اپ ڈیٹ کریں، اگر یہ ہر سیکنڈ میں ایک اپ ڈیٹ میں تبدیل کیا جاتا ہے تو، مساوی قدرتقریبا 0.01 ہو جائے گا.
class ExponentialWeightedStats:
def __init__(self, alpha):
self.alpha = alpha
self.mu = 0
self.S = 0
self.initialized = False
def update(self, x):
if not self.initialized:
self.mu = x
self.S = 0
self.initialized = True
else:
temp = x - self.mu
new_mu = self.mu + self.alpha * temp
self.S = self.alpha * self.S + (1 - self.alpha) * temp * (x - self.mu)
self.mu = new_mu
@property
def mean(self):
return self.mu
@property
def variance(self):
return self.S
# Usage example
alpha = 0.05 # Weight factor
stats = ExponentialWeightedStats(alpha)
data_stream = [] # Data stream
for data_point in data_stream:
stats.update(data_point)
ہائی فریکوئنسی پروگرامٹک ٹریڈنگ میں ، ریئل ٹائم ڈیٹا کی تیز رفتار پروسیسنگ انتہائی ضروری ہے۔ کمپیوٹیشنل کارکردگی کو بہتر بنانے اور وسائل کی کھپت کو کم کرنے کے ل this ، اس مضمون میں اعداد و شمار کے سلسلے کے مسلسل حساب کتاب کے لئے ایک آن لائن اپ ڈیٹ الگورتھم متعارف کرایا گیا ہے۔ ریئل ٹائم انٹریمینٹل اپ ڈیٹس کو مختلف شماریاتی اعداد و شمار اور اشارے کے حساب کتاب کے لئے بھی استعمال کیا جاسکتا ہے ، جیسے دو اثاثوں کی قیمتوں کے مابین ارتباط ، لکیری فٹنگ وغیرہ ، جس میں بہت زیادہ صلاحیت ہے۔ انٹریمینٹل اپ ڈیٹنگ ڈیٹا کو سگنل سسٹم کے طور پر سمجھتی ہے ، جو مقررہ مدت کے حساب کتاب کے مقابلے میں سوچ میں ارتقاء ہے۔ اگر آپ کی حکمت عملی میں اب بھی ایسے حصے شامل ہیں جو تاریخی اعداد و شمار کا استعمال کرتے ہوئے حساب کتاب کرتے ہیں تو ، اس نقطہ نظر کے مطابق اس کو تبدیل کرنے پر غور کریں: صرف سسٹم کی حیثیت کے تخمینے ریکارڈ کریں اور جب نیا ڈیٹا پہنچے تو سسٹم کی حیثیت کو اپ ڈیٹ کریں۔ اس سائیکل کو آگے بڑھاتے ہوئے دہرائ