من این سورس فایل رو دارم
چکش کن

<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>تحلیل جداول قیمت با کارمزد تعداد سکه</title>
<style>
  body {
    font-family: Tahoma, sans-serif;
    direction: rtl;
    padding: 20px;
    background: #e9f0ec;
    color: #2b3a2f;
    max-width: 1100px;
    margin: auto;
  }
  h1, h2, h3 {
    color: #217346;
    margin-bottom: 12px;
  }
  label {
    font-weight: bold;
    display: inline-block;
    width: 200px;
    text-align: left;
  }
  input[type=number], input[type=text] {
    padding: 6px 10px;
    margin-bottom: 10px;
    border-radius: 5px;
    border: 1px solid #999;
    font-size: 14px;
    width: 150px;
    box-sizing: border-box;
  }
  textarea {
    width: 100%;
    height: 140px;
    resize: vertical;
    margin-bottom: 10px;
    font-family: monospace;
    font-size: 14px;
    direction: ltr;
  }
  button {
    background: #217346;
    border: none;
    padding: 10px 18px;
    color: white;
    border-radius: 6px;
    cursor: pointer;
    font-size: 16px;
    margin-bottom: 20px;
  }
  button:hover {
    background: #1a5a2a;
  }
  .table-wrapper {
    background: white;
    padding: 15px;
    border-radius: 10px;
    margin-bottom: 30px;
    box-shadow: 0 4px 12px rgba(33,115,70,0.3);
  }
  table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 10px;
    direction: rtl;
  }
  table th, table td {
    border: 1px solid #217346;
    padding: 8px 10px;
    text-align: center;
  }
  table th {
    background-color: #217346;
    color: white;
  }
  .error {
    color: red;
    font-weight: bold;
    margin: 10px 0 15px;
    text-align: center;
  }
  .comparison-table {
    margin-top: 30px;
    margin-bottom: 50px;
  }
  form div {
    margin-bottom: 10px;
  }
  .results-container {
    margin-top: 15px;
    direction: rtl;
  }
  .original-table-container {
    overflow-x: auto;
    max-height: 300px;
  }
  .tax-calc {
    font-family: monospace;
    font-size: 0.9rem;
    margin: 5px 0 12px;
    color: #444;
  }
  .tax-calc span {
    margin: 0 8px;
  }
</style>
</head>
<body>

<h1>تحلیل جداول قیمت ـ محاسبه با کارمزد (تعداد سکه)</h1>

<!-- فرم ورودی قیمت و کارمزد حذف شده -->

<div class="table-wrapper">
  <label for="tableName">نام جدول:</label>
  <input type="text" id="tableName" placeholder="نام جدول را وارد کنید" aria-required="true" />

  <label for="tableHtml">کد کامل HTML جدول:</label>
  <textarea id="tableHtml" placeholder="کل کد جدول HTML را اینجا قرار دهید..." aria-required="true"></textarea>

  <button onclick="addTable()">افزودن و تحلیل جدول</button>

  <div id="errorMsg" class="error" style="display:none;"></div>
</div>

<div id="resultsContainer"></div>

<div id="comparisonSection" class="table-wrapper" style="display:none;">
  <h2>مقایسه کلی جداول</h2>
  <table id="comparisonTable" class="comparison-table" aria-label="مقایسه کلی جداول">
    <thead>
      <tr>
        <th>نام جدول</th>
        <th>نوع قیمت</th>
        <th>کمترین قیمت (خرید)</th>
        <th>بیشترین قیمت (فروش)</th>
        <th>میانگین حجم معامله</th>
        <th>حجم کل خرید (صدک‌ها)</th>
        <th>حجم کل فروش (صدک‌ها)</th>
        <th>سود تخمینی پس از کارمزد و مالیات</th>
        <th>جزئیات مالیات و کارمزد خرید</th>
        <th>جزئیات مالیات و کارمزد فروش</th>
      </tr>
    </thead>
    <tbody id="comparisonBody"></tbody>
  </table>
</div>

<script>
const allTablesAnalysis = [];
const BUY_TAX_PERCENT = 3.1; // مالیات خرید ثابت 3.1%
const SELL_TAX_PERCENT = 5;  // مالیات فروش ثابت 5%

function showError(msg) {
  const e = document.getElementById('errorMsg');
  e.style.display = 'block';
  e.textContent = msg;
}

function hideError() {
  document.getElementById('errorMsg').style.display = 'none';
}

function htmlToTableElement(html) {
  const template = document.createElement('template');
  template.innerHTML = html.trim();
  const table = template.content.querySelector('table');
  return table;
}

function parseNum(str) {
  if(!str) return NaN;
  let val = parseFloat(str.replace(/,/g, '').trim());
  return isNaN(val) ? NaN : val;
}

function extractData(table) {
  if(!table) return [];

  const rows = Array.from(table.querySelectorAll('tr'));
  if(rows.length < 3) return [];

  const dataRows = rows.slice(2);

  const data = [];

  for(const row of dataRows) {
    const cells = row.querySelectorAll('td');
    if(cells.length < 16) continue;

    const entry = {
      date: cells[0].textContent.trim(),
      time: cells[1].textContent.trim(),
      min: parseNum(cells[2].textContent),
      median: parseNum(cells[3].textContent),
      mean: parseNum(cells[4].textContent),
      qty: parseNum(cells[5].textContent),
      p10_price: parseNum(cells[6].textContent),
      p10_qty: parseNum(cells[7].textContent),
      p30_price: parseNum(cells[8].textContent),
      p30_qty: parseNum(cells[9].textContent),
      p50_price: parseNum(cells[10].textContent),
      p50_qty: parseNum(cells[11].textContent),
      p70_price: parseNum(cells[12].textContent),
      p70_qty: parseNum(cells[13].textContent),
      p90_price: parseNum(cells[14].textContent),
      p90_qty: parseNum(cells[15].textContent),
    };

    if(isNaN(entry.min) || isNaN(entry.median) || isNaN(entry.mean) || isNaN(entry.qty)) continue;

    data.push(entry);
  }
  return data;
}

function calcFeesAndTaxes(priceCoin, taxPercent) {
  const feeCoin = priceCoin * taxPercent / 100;
  const totalAfterTax = priceCoin + feeCoin;

  const formula = `${priceCoin.toFixed(2)} + مالیات ${taxPercent.toFixed(2)}% = ${feeCoin.toFixed(2)} <strong>= ${(totalAfterTax).toFixed(2)}</strong>`;
  return {
    feeCoin,
    totalAfterTax,
    formula
  };
}

function analyzePriceFieldWithPercentiles(data, priceField) {
  if(data.length === 0) return null;

  const percentilePairs = [
    {price: 'p10_price', qty: 'p10_qty'},
    {price: 'p30_price', qty: 'p30_qty'},
    {price: 'p50_price', qty: 'p50_qty'},
    {price: 'p70_price', qty: 'p70_qty'},
    {price: 'p90_price', qty: 'p90_qty'}
  ];

  const minPrice = Math.min(...data.map(d => d[priceField]));
  const maxPrice = Math.max(...data.map(d => d[priceField]));
  const avgQty = data.reduce((acc,d) => acc + d.qty, 0) / data.length;
  const avgPrice = data.reduce((acc,d) => acc + d[priceField], 0) / data.length;

  let totalBuyVolume = 0;
  let totalSellVolume = 0;

  for(const d of data) {
    for(const p of percentilePairs) {
      const cPrice = d[p.price];
      const cQty = d[p.qty] || 0;

      if(isNaN(cPrice) || isNaN(cQty)) continue;

      if(cPrice <= avgPrice) {
        totalBuyVolume += cQty;
      }
      if(cPrice >= avgPrice) {
        totalSellVolume += cQty;
      }
    }
  }

  return {
    priceField,
    minPrice,
    maxPrice,
    avgQty,
    avgPrice,
    totalBuyVolume,
    totalSellVolume
  };
}

function createTableAnalysis(name, data) {
  const priceFields = ['min', 'median', 'mean'];
  const analysisRows = [];

  for(const field of priceFields) {
    const result = analyzePriceFieldWithPercentiles(data, field);
    if(result) analysisRows.push(result);
  }
  return {name, analysisRows, data};
}

function formatNumber(num) {
  return num.toLocaleString(undefined, {maximumFractionDigits: 2});
}

function calculateFinalProfit(buyPrice, sellPrice, volume) {
  const buyCalc = calcFeesAndTaxes(buyPrice, BUY_TAX_PERCENT);
  const sellCalc = calcFeesAndTaxes(sellPrice, SELL_TAX_PERCENT);
  const profit = (sellCalc.totalAfterTax - buyCalc.totalAfterTax) * volume; 
  return {profit, buyCalc, sellCalc};
}

function renderSingleTable(name, rawHtml, analysis) {
  const resultsDiv = document.getElementById('resultsContainer');
  const wrapper = document.createElement('div');
  wrapper.className = 'table-wrapper';

  const tableHtml = rawHtml;
  const tableDisplay = `<div class="original-table-container" style="overflow-x:auto;max-height:320px;">${tableHtml}</div>`;

  let resultHtml = `<h3>نتایج جدول: ${name}</h3>`;
  resultHtml += `<table aria-label="نتایج جدول ${name}"><thead>
    <tr>
      <th>نوع قیمت</th>
      <th>کمترین قیمت (خرید)</th>
      <th>بیشترین قیمت (فروش)</th>
      <th>میانگین حجم معامله</th>
      <th>میانگین قیمت</th>
      <th>حجم کل خرید (صدک‌ها)</th>
      <th>حجم کل فروش (صدک‌ها)</th>
      <th>سود تخمینی پس از کارمزد و مالیات (با حجم حداقلی)</th>
      <th>محاسبه مالیات و کارمزد خرید (سکه)</th>
      <th>محاسبه مالیات و کارمزد فروش (سکه)</th>
    </tr>
  </thead><tbody>`;

  for(const row of analysis.analysisRows) {
    const volume = Math.min(row.totalBuyVolume, row.totalSellVolume);

    const {profit, buyCalc, sellCalc} = calculateFinalProfit(
      row.minPrice,
      row.maxPrice,
      volume
    );

    resultHtml += `<tr>
      <td>${row.priceField.toUpperCase()}</td>
      <td>${formatNumber(row.minPrice)}</td>
      <td>${formatNumber(row.maxPrice)}</td>
      <td>${formatNumber(row.avgQty)}</td>
      <td>${formatNumber(row.avgPrice)}</td>
      <td>${formatNumber(row.totalBuyVolume)}</td>
      <td>${formatNumber(row.totalSellVolume)}</td>
      <td>${formatNumber(profit)}</td>
      <td><div class="tax-calc">${buyCalc.formula}</div></td>
      <td><div class="tax-calc">${sellCalc.formula}</div></td>
    </tr>`;
  }
  resultHtml += '</tbody></table>';

  wrapper.innerHTML = tableDisplay + resultHtml;
  resultsDiv.appendChild(wrapper);
}

function renderComparisonTable() {
  const compSec = document.getElementById('comparisonSection');
  const tbody = document.getElementById('comparisonBody');

  if(allTablesAnalysis.length < 2) {
    compSec.style.display = 'none';
    return;
  }
  compSec.style.display = 'block';

  tbody.innerHTML = '';

  for(const analysis of allTablesAnalysis) {
    for(const row of analysis.analysisRows) {
      const volume = Math.min(row.totalBuyVolume, row.totalSellVolume);

      const {profit, buyCalc, sellCalc} = calculateFinalProfit(
        row.minPrice,
        row.maxPrice,
        volume
      );

      const tr = document.createElement('tr');
      tr.innerHTML = `
        <td>${analysis.name}</td>
        <td>${row.priceField.toUpperCase()}</td>
        <td>${formatNumber(row.minPrice)}</td>
        <td>${formatNumber(row.maxPrice)}</td>
        <td>${formatNumber(row.avgQty)}</td>
        <td>${formatNumber(row.totalBuyVolume)}</td>
        <td>${formatNumber(row.totalSellVolume)}</td>
        <td>${formatNumber(profit)}</td>
        <td><div class="tax-calc">${buyCalc.formula}</div></td>
        <td><div class="tax-calc">${sellCalc.formula}</div></td>
      `;
      tbody.appendChild(tr);
    }
  }
}

function clearInputs() {
  document.getElementById('tableName').value = '';
  document.getElementById('tableHtml').value = '';
}

function addTable() {
  hideError();

  const name = document.getElementById('tableName').value.trim();
  const html = document.getElementById('tableHtml').value.trim();

  if(!name) {
    showError('لطفا نام جدول را وارد کنید.');
    return;
  }
  if(!html) {
    showError('لطفا کد HTML جدول را وارد کنید.');
    return;
  }

  const table = htmlToTableElement(html);
  if(!table) {
    showError('کد HTML جدول معتبر نیست یا تگ <table> وجود ندارد.');
    return;
  }

  const data = extractData(table);
  if(!data.length) {
    showError('داده‌ای برای پردازش پیدا نشد یا فرمت جدول اشتباه است.');
    return;
  }

  const analysis = createTableAnalysis(name, data);
  allTablesAnalysis.push(analysis);

  renderSingleTable(name, html, analysis);
  renderComparisonTable();

  clearInputs();
  window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });
}
</script>

</body>
</html>

حالا بر اساس این من یه سری جدول میفرستم و کار های خواسته شده رو انجام بده و بهم پاسخ بده و در نهایت ازت میپرسم کدوم مناسب تره