وقت کی کارکردگی کا تجزیہ سپر ٹرینڈ آپٹیمائزیشن کی حکمت عملی

ATR supertrend Profit Factor Winrate Performance Analytics Strategy Optimization
تخلیق کی تاریخ: 2025-07-25 13:30:18 آخر میں ترمیم کریں: 2025-07-25 13:30:18
کاپی: 2 کلکس کی تعداد: 280
2
پر توجہ دیں
319
پیروکار

وقت کی کارکردگی کا تجزیہ سپر ٹرینڈ آپٹیمائزیشن کی حکمت عملی وقت کی کارکردگی کا تجزیہ سپر ٹرینڈ آپٹیمائزیشن کی حکمت عملی

جائزہ

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

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

اس حکمت عملی کا بنیادی حصہ دو حصوں پر مشتمل ہے: ٹریڈنگ سگنل جنریٹر اور کارکردگی کا تجزیہ کرنے والا نظام۔

  1. ٹریڈنگ سگنل جنریٹر

    • سپر ٹرینڈ اشارے پر مبنی انٹری سگنل تیار کرنا
    • سپر ٹرینڈ ایک رجحان سے باخبر رہنے والا اشارے ہے جو اے ٹی آر اور اپنی مرضی کے مطابق فیکٹر حساب کتاب کے ساتھ ملتا ہے
    • جب سپر ٹرینڈ اشارے کی سمت میں تبدیلی ہوتی ہے تو ٹریڈنگ سگنل کو متحرک کرنا
    • جب سمت منفی سے درست ہو تو ، متعدد کارروائییں انجام دیں
    • جب سمت مثبت منفی سے بدل جائے تو ، خالی کرنے کا عمل انجام دیں
  2. کارکردگی کا تجزیہ نظام

    • ہر ٹریڈنگ دن کے اعداد و شمار کو ریکارڈ کرنے کے لئے ایک خصوصی ڈیٹا ڈھانچہ (DayStats) بنایا گیا ہے
    • ٹریکنگ انڈیکس میں شامل ہیں: جیت / منفی تجارت ، خالص منافع ، خالص نقصان
    • ڈیریویوٹی اشارے: خالص منافع، منافع فیکٹر، جیت کی شرح
    • ہفتے میں سات دن (پیر سے اتوار) کے لئے کارکردگی کے اشارے
    • 1 سے 31 تک کے ٹرانزیکشن کی کارکردگی کی نگرانی
    • کارکردگی کے اعداد و شمار کو ایک ٹیبل کے ذریعے دکھائیں ، بشمول مختلف رنگوں کے نشانات کی کھپت کی حالت

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

اسٹریٹجک فوائد

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

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

  3. خطرے کے انتظام میں بہتریسسٹم کے خطرے کو کم کرنے کے لئے ، تاجروں کو ان دنوں میں تجارت سے گریز کرنے یا پوزیشن کی مقدار کو ایڈجسٹ کرنے کا انتخاب کرنے کی اجازت دیتا ہے جب وہ تاریخی طور پر خراب کارکردگی کا مظاہرہ کرنے والے تجارتی دنوں کی شناخت کرتے ہیں۔

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

  5. اعلی حسب ضرورت: حکمت عملی میں متعدد ان پٹ پیرامیٹرز مہیا کیے گئے ہیں ، بشمول اے ٹی آر کی مدت ، سپر ٹرینڈ فیکٹر ، ٹیبل پوزیشن اور رنگ کی ترتیبات وغیرہ ، جس سے تاجر کو ذاتی ترجیحات اور مارکیٹ کی خصوصیات کے مطابق ایڈجسٹ کرنے کی اجازت ملتی ہے۔

  6. لچکدار انضمام: کارکردگی کے تجزیہ کے حصے کے کوڈ کو آسانی سے دیگر تجارتی حکمت عملیوں میں ضم کرنے کے لئے ڈیزائن کیا گیا ہے ، جس سے حکمت عملیوں کی افادیت اور توسیع میں اضافہ ہوتا ہے۔

اسٹریٹجک رسک

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

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

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

  4. وسائل کی کھپت کا حساب لگائیں: تجارت کی تعداد میں اضافے کے ساتھ ، کارکردگی کے تجزیاتی نظام کو ذخیرہ کرنے اور اس پر عملدرآمد کرنے کی ضرورت کے اعداد و شمار کی مقدار میں اضافہ ہوتا ہے ، جو حکمت عملی کو چلانے کی کارکردگی کو متاثر کرسکتا ہے۔ طویل مدتی پیمائش یا ریئل اسٹیٹ تجارت میں وسائل کے استعمال پر توجہ دینے کی ضرورت ہے۔

  5. موسمی عوامل کا اثر: کچھ منڈیوں میں موسمیاتی قانون موجود ہے ، اور صرف ہفتہ وار یا ماہانہ تاریخ کے تجزیے کے مطابق طویل عرصے تک موسمی اثرات کو نظرانداز کیا جاسکتا ہے۔ طویل عرصے سے چلنے والے نمونوں کو پکڑنے کے لئے سہ ماہی یا سالانہ سطح پر تجزیہ شامل کرنے پر غور کیا جاسکتا ہے۔

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

  1. ملٹی ٹائم فریم تجزیہ: موجودہ حکمت عملی صرف ایک ہی ٹائم فریم میں کارکردگی کا تجزیہ کرتی ہے ، اس کو ایک ہی وقت میں متعدد ٹائم فریموں کی تجارت کی کارکردگی کا تجزیہ کرنے کے لئے بڑھایا جاسکتا ہے ، جیسے ایک ہی وقت میں دن کی لائن ، 4 گھنٹے کی لائن اور 1 گھنٹے کی لائن میں کارکردگی کے اختلافات کا جائزہ لینا ، تاکہ زیادہ جامع ٹائم طول و عرض کی بصیرت حاصل کی جاسکے۔

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

  3. سگنل کوالٹی اسکورنگ سسٹم: سگنل کوالٹی اسکورنگ میکانزم متعارف کرایا گیا ، جس میں ہر تجارتی سگنل کو تکنیکی اشارے کی مستقل مزاجی ، قیمت کی ساخت ، حجم کی تصدیق جیسے عوامل کی بنیاد پر اسکور کیا جاتا ہے ، اور کارکردگی کے تجزیے میں سگنل کوالٹی کی جہت کو شامل کیا جاتا ہے ، جس سے اعلی معیار کے سگنل کی خصوصیات کی شناخت میں مدد ملتی ہے۔

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

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

  6. توسیع شدہ اعدادوشمار: زیادہ سے زیادہ اعدادوشمار جیسے زیادہ سے زیادہ مسلسل منافع / نقصان، اوسط منافع / نقصان کا تناسب، شارپ تناسب وغیرہ شامل کریں ، تاکہ کارکردگی کی زیادہ گہرائی سے تشخیص کی جاسکے ، تاکہ تاجروں کو حکمت عملی کی خصوصیات کے بارے میں زیادہ سے زیادہ معلومات حاصل ہو۔

  7. مشین لرننگ پیٹرن کی شناخت: سادہ مشین لرننگ الگورتھم متعارف کروائیں جو تاریخی کارکردگی کے اعداد و شمار سے خود بخود ممکنہ ٹائم پیٹرن اور اصولوں کی نشاندہی کریں ، مستقبل کے تجارتی دن کی ممکنہ کارکردگی کی پیش گوئی کریں ، اور تجارتی فیصلوں کے لئے پیش گوئی کی رہنمائی فراہم کریں۔

خلاصہ کریں۔

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

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

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-07-25 00:00:00
end: 2025-07-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=6
strategy("Daily Performance Analysis [Mr_Rakun]", overlay=true)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[st, direction] = ta.supertrend(factor, atrPeriod)

if ta.change(direction) < 0
    strategy.entry("My Long Entry Id", strategy.long)

if ta.change(direction) > 0
    strategy.entry("My Short Entry Id", strategy.short)

plot(st, title="SuperTrend", color=st < close ? color.green : color.red, linewidth=2)

//-------------------------------------------------------------
// Copy the rest of this line and add it to your own strategy.

// Daily Performance
type DayStats
    int wins = 0
    int losses = 0
    float gross_profit = 0.0
    float gross_loss = 0.0

update(DayStats ds, float profit) =>
    if profit > 0
        ds.wins += 1
        ds.gross_profit += profit
    else
        ds.losses += 1
        ds.gross_loss += math.abs(profit)

net_profit(DayStats ds) => ds.gross_profit - ds.gross_loss
profit_factor(DayStats ds) => ds.gross_loss > 0 ? ds.gross_profit / ds.gross_loss : na
winrate(DayStats ds) =>
    total = ds.wins + ds.losses
    total > 0 ? (ds.wins / total) * 100 : na

// ================== GLOBAL OBJECTS ==================

var DayStats monday    = DayStats.new()
var DayStats tuesday   = DayStats.new()
var DayStats wednesday = DayStats.new()
var DayStats thursday  = DayStats.new()
var DayStats friday    = DayStats.new()
var DayStats saturday  = DayStats.new()
var DayStats sunday    = DayStats.new()
var array<DayStats> monthStats = array.new<DayStats>()

// ================== UPDATE METHOD ==================
update_all_stats() =>
    if barstate.isfirst
        for i = 0 to 30
            array.push(monthStats, DayStats.new())

    if strategy.closedtrades > strategy.closedtrades[1]
        idx = strategy.closedtrades - 1
        profit = strategy.closedtrades.profit(idx)
        poz_time = strategy.closedtrades.entry_time(idx)
        dom = dayofmonth(poz_time)
        day = dayofweek(poz_time)

        DayStats day_stats = switch day
            dayofweek.sunday    => sunday
            dayofweek.monday    => monday
            dayofweek.tuesday   => tuesday
            dayofweek.wednesday => wednesday
            dayofweek.thursday  => thursday
            dayofweek.friday    => friday
            dayofweek.saturday  => saturday

        if na(day_stats) == false
            update(day_stats, profit)

        if dom >= 1 and dom <= 31
            DayStats mstats = array.get(monthStats, dom - 1)
            update(mstats, profit)
        day_stats

update_all_stats()

 
// Table positioning inputs
weekly_position = input.string("Top Center", "Weekly Table Position", 
     options=["Top Left", "Top Center", "Top Right", "Middle Left", "Middle Center", "Middle Right", "Bottom Left", "Bottom Center", "Bottom Right"])
monthly_position = input.string("Top Right", "Monthly Table Position", 
     options=["Top Left", "Top Center", "Top Right", "Middle Left", "Middle Center", "Middle Right", "Bottom Left", "Bottom Center", "Bottom Right"])

// Color inputs
header_bg_color = input.color(color.gray, "Header Background Color")
profit_color = input.color(color.lime, "Profit Color")
loss_color = input.color(color.red, "Loss Color")
neutral_color = input.color(color.gray, "Neutral Color")
row_bg_color = input.color(color.new(color.gray, 60), "Row Background Color")

// Function to get table position
get_table_position(string pos) =>
    switch pos
        "Top Left" => position.top_left
        "Top Center" => position.top_center
        "Top Right" => position.top_right
        "Middle Left" => position.middle_left
        "Middle Center" => position.middle_center
        "Middle Right" => position.middle_right
        "Bottom Left" => position.bottom_left
        "Bottom Center" => position.bottom_center
        "Bottom Right" => position.bottom_right
        => position.top_center

// TABLE PRINTING 
draw_table_headers(table weekly, table monthly) =>
    table.cell(weekly, 0, 0, "DAY",          text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(weekly, 1, 0, "W/L (Count)",  text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(weekly, 2, 0, "NET PROFIT",   text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(weekly, 3, 0, "PROFIT FACTOR",text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(weekly, 4, 0, "WINRATE",      text_color=color.white, text_size=size.small, bgcolor = header_bg_color)

    table.cell(monthly, 0, 0, "DAY",          text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(monthly, 1, 0, "W/L (Count)",  text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(monthly, 2, 0, "NET PROFIT",   text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(monthly, 3, 0, "PROFIT FACTOR",text_color=color.white, text_size=size.small, bgcolor = header_bg_color)
    table.cell(monthly, 4, 0, "WINRATE",      text_color=color.white, text_size=size.small, bgcolor = header_bg_color)

fill_weekly_row(table tbl, int row, string day_name, DayStats ds) =>
    net_p = net_profit(ds)
    pf = profit_factor(ds)
    wr = winrate(ds)
    status_color = net_p > 0 ? profit_color: (net_p < 0 ? loss_color : neutral_color)

    table.cell(tbl, 0, row, day_name, text_color=status_color, text_size=size.small, bgcolor = row_bg_color)
    table.cell(tbl, 1, row, str.tostring(ds.wins) + "/" + str.tostring(ds.losses), text_color=status_color, text_size=size.small, bgcolor = row_bg_color)
    table.cell(tbl, 2, row, str.tostring(net_p, '#,###.##'), text_color=status_color, text_size=size.small, bgcolor = row_bg_color)
    table.cell(tbl, 3, row, str.tostring(pf, '0.00'), text_color=status_color, text_size=size.small, bgcolor = row_bg_color)
    table.cell(tbl, 4, row, str.tostring(wr, format.percent), text_color=status_color, text_size=size.small, bgcolor = row_bg_color)

fill_monthly_row(table tbl, int row, int day, DayStats ds) =>
    net_p = net_profit(ds)
    pf = profit_factor(ds)
    wr = winrate(ds)
    status_color = net_p > 0 ? profit_color : (net_p < 0 ? loss_color : neutral_color)

    table.cell(tbl, 0, row, str.tostring(day), text_color=status_color, bgcolor=row_bg_color, text_size=size.tiny)
    table.cell(tbl, 1, row, str.tostring(ds.wins) + "/" + str.tostring(ds.losses), text_color=status_color, bgcolor=row_bg_color, text_size=size.tiny)
    table.cell(tbl, 2, row, str.tostring(net_p, '#,###.##'), text_color=status_color, bgcolor=row_bg_color, text_size=size.tiny)
    table.cell(tbl, 3, row, str.tostring(pf, '0.00'), text_color=status_color, bgcolor=row_bg_color, text_size=size.tiny)
    table.cell(tbl, 4, row, str.tostring(wr, format.percent), text_color=status_color, bgcolor=row_bg_color, text_size=size.tiny)

var table weekly_table = table.new(get_table_position(weekly_position), 5, 8)
var table monthly_table = table.new(get_table_position(monthly_position), 5, 32)

if barstate.isconfirmed
    draw_table_headers(weekly_table, monthly_table)

    fill_weekly_row(weekly_table, 1, "MON", monday)
    fill_weekly_row(weekly_table, 2, "TUE", tuesday)
    fill_weekly_row(weekly_table, 3, "WED", wednesday)
    fill_weekly_row(weekly_table, 4, "THU", thursday)
    fill_weekly_row(weekly_table, 5, "FRI", friday)
    fill_weekly_row(weekly_table, 6, "SAT", saturday)
    fill_weekly_row(weekly_table, 7, "SUN", sunday)

    for i = 0 to 30
        DayStats ms = array.get(monthStats, i)
        if ms.wins + ms.losses > 0
            fill_monthly_row(monthly_table, i + 1, i + 1, ms)