ChartXpert AIChartXpert AI

engineering reference — v1.0

معمارية ChartXpert AI: ست طبقات مستقلة قابلة للاستبدال

هذه الصفحة مرجع هندسي للتصميم المعتمد للمحرك: ما هو مُنفّذ اليوم في المنتج (WebGL2، ذاكرة TimeRing عمودية، كشف نماذج ومناطق سيولة على الجهاز)، وما هو على خط التطوير (WebGPU، Rust/WASM، بث WebTransport، رؤوس عصبية كاملة). القرار الحاكم واحد: البيانات لا تُنسخ، بل تُسجَّل مرة واحدة في ذاكرة خطية ثم تُشير إليها كل الطبقات بمُعامِلات.

high-level architecture

مخطط الطبقات وتفاعلها

ست طبقات: النقل، نواة البيانات، الطبقة العصبية، محرك العرض، نواة التنسيق، ثم الواجهة البرمجية العامة.

┌──────────────────────────────────────────────────────────────────────────┐
│  L6 — ChartXpert SDK / Public API            (TypeScript, main thread)    │
│  Chart · Series · Indicator DSL · Tools · LocaleDirector                 │
└───────────────▲───────────────────────────────────┬──────────────────────┘
                │ commands                           │ typed event bus
┌───────────────┴───────────────────────────────────▼──────────────────────┐
│  L5 — Orchestration Kernel                        (< 1 ms per frame)     │
│  Viewport State · Input Router · RTL/LTR Director · Frame Scheduler      │
└───────┬───────────────────┬───────────────────────────┬──────────────────┘
        │ atomics           │ atomics                   │ GPU queue
┌───────▼─────────┐ ┌───────▼───────────────┐ ┌─────────▼────────────────┐
│ L1  Transport   │ │ L3  Neural Layer      │ │ L4  Render Engine        │
│ WebTransport /  │ │ WebNN / ONNX Runtime  │ │ WebGPU pipelines         │
│ gRPC · binary   │ │ Pattern · Liquidity   │ │ Candles · Overlays       │
│ decode (SIMD)   │ │ Regime heads          │ │ BiDi SDF text atlas      │
└───────┬─────────┘ └───────▲───────────────┘ └─────────▲────────────────┘
        │ write             │ read-only                 │ read
┌───────▼───────────────────┴───────────────────────────┴──────────────────┐
│  L2 — ChartXpert Data Core        (Rust → WASM over SharedArrayBuffer)    │
│  TimeRing (columnar OHLCV) · LOD Pyramid · Index Map · Arena Allocator   │
└──────────────────────────────────────────────────────────────────────────┘

zero-copy data path

WebTransport (QUIC)
      │ ArrayBuffer
      ▼
Transport Worker ── decode (Rust/WASM SIMD) ──┐
                                              ▼
                       SharedArrayBuffer  (TimeRing columns)
                                              │ Atomics.store(head) + notify
      ┌───────────────────────────────────────┴─────────────────┐
      ▼                                                         ▼
Neural Worker (read-only slice)                 writeBuffer(dirty sub-range) → GPU

frame budget @ 120 fps

الإدخال وتحديث النافذة0.4 msالخيط الرئيسي
اختيار مستوى التفصيل (WASM)0.6 msبحث ثنائي على الهرم
تجهيز الرؤوس والنسخ1.2 msحلقة مخزنات مثلثة
ترميز ورسم على GPU3.5 msinstanced + indirect
النصوص والطبقات1.0 msأطلس محارف مسبق
احتياطي1.6 msلمنع التقطيع

core innovations

أربع ركائز ابتكارية مترابطة

كل ركيزة مستقلة في الكود وقابلة للاستبدال، لكنها تتقاسم الذاكرة نفسها فلا يحدث نسخ بينها.

01

محرك العرض الهجين الفائق

WebGL Frame Core · WebGPU-ready / WASM

كل شمعة وذيل وشريط حجم يصبح مستطيلاً واحداً في دفعة instanced واحدة، فيستقبل كرت الرسوميات نداء رسم واحداً فقط لكل إطار مهما بلغ عدد الشموع الظاهرة. المسار الحالي WebGL2 بمسار احتياطي على Canvas، والواجهة نفسها تنتقل إلى WebGPU وحسابات Rust/WASM دون تغيير في الطبقات الأعلى.

1,000,000+

نقاط بيانات

120 FPS

معدل الإطارات

< 60 MB

ذاكرة السلسلة

02

نظام التفاصيل التكيفي

Adaptive LOD System

هرم مستويات تفصيل تحفظ كل عقدة فيه فهرس الشمعة صاحبة القمة وصاحبة القاع، فلا تُفقد القيم القصوى والدنيا عند التصغير، ويبقى ترتيبها الزمني صحيحاً داخل البكسل الواحد.

O(log N)

تحديث تزايدي

0

فقدان القمم

compute shader

إعادة البناء

03

طبقة عصبية داخل المحرك

In-Engine Neural Layer

استنتاج على شريحة المستخدم عبر WebNN / ONNX Runtime، يقرأ الذاكرة المشتركة نفسها التي يرسم منها المحرك، ويكتب نتائجه في مخزن تعليقات مزدوج ذري — فصل تام بين زمن التحليل وزمن العرض.

0

رحلات للخادم

≤ 40 ms

زمن الاستنتاج

none

أثر على FPS

04

بث صفري النسخ

Zero-Copy Streaming

ترميز ثنائي ثابت الطول عبر WebTransport، يُفكّ داخل عامل منفصل مباشرةً إلى أعمدة في ذاكرة مشتركة، ثم يُرفع إلى ذاكرة الرسوميات كنطاقات متغيرة فقط، مع دمج التِكات داخل الشمعة.

< 5 µs

فك الترميز

< 150 µs

رفع إلى GPU

flat

استهلاك الذاكرة

proprietary data structure

TimeRing — حلقة أعمدة زمنية

تخزين Struct-of-Arrays في كتلة ذاكرة واحدة: الإدراج والتحديث O(1) حسابي بحت، وتحديد النطاق O(1) للطرفين ثم قراءة متجاورة.

chartxpert-core/src/ring.rs
#[repr(C)]
pub struct TimeRing {
    time: *mut i64, open: *mut f32, high: *mut f32,
    low:  *mut f32, close: *mut f32, volume: *mut f32,
    capacity: usize,        // power of two => mask = capacity - 1
    head: AtomicUsize,      // single writer, many readers
    base_ts: i64, step_ms: i64,
}

impl TimeRing {
    #[inline(always)]
    pub fn slot(&self, ts: i64) -> usize {
        // O(1): pure arithmetic addressing, no search, no hashing
        (((ts - self.base_ts) / self.step_ms) as usize) & (self.capacity - 1)
    }
}

هرم LOD المحافظ على الحدود

L0: every bar              (N)
L1: every 2 bars           (N/2)   open  = first.open
L2: every 4 bars           (N/4)   close = last.close
...                                high  = max(high) + hi_idx
Lk: down to N/2^k ≈ screen width   low   = min(low)  + lo_idx
  • كل عقدة تحفظ فهرس الشمعة الأصلية صاحبة القمة والقاع، فلا تُفقد الارتفاعات القصوى أبدًا عند التصغير.
  • ترتيب الرسم داخل البكسل يُستنتج من مقارنة الفهرسين، فيبقى اتجاه البكسل صحيحًا بصريًا.
  • الإدراج يحدّث مسارًا واحدًا في الهرم — O(log N) بعمليات قابلة للدمج.
  • Arena واحدة لكل مخطط بلا تحرير فردي: صفر تفتيت للذاكرة وميزانية ثابتة.

embedded inference

الاستنتاج داخل المحرك، بلا خادم

ثلاثة رؤوس تعمل على تمثيل مُطبَّع بمقياس التقلب: رأس النماذج، رأس السيولة، ورأس النظام السوقي الذي يعدّل حساسية الرأسين الآخرين.

neural-worker.ts
const win   = new SlidingWindow({ size: 256, stride: 1 });
const guard = new InferenceGuard({ maxHz: 8, minBarDelta: 0.25 }); // ATR units

onSharedBufferSignal(async (head) => {
  win.pushFromRing(ring, head);            // zero-copy read, no allocation
  if (!guard.shouldRun(win)) return;       // skip when nothing meaningful moved

  const x = canonicalize(win);             // (close - EMA) / ATR  => scale-free
  const [pat, liq] = await engine.runBatch([x, x]);

  annotations.writeAtomic({                // double buffer: rendering never waits
    patterns: decodePatterns(pat, { minConfidence: 0.72, nms: true, hysteresis: 3 }),
    liquidityHeatmap: quantize(liq, 8),
    generatedAtBar: head,
  });
});

scale-invariant canonicalization

z[i]     = (close[i] - EMA_w) / (ATR_w + eps)
r[i]     = log(close[i] / close[i-1]) / sigma_w
shape[i] = (high[i] - low[i]) / ATR_w
body[i]  = (close[i] - open[i]) / ATR_w

لأن المسافات تُقاس بوحدات التقلب، يعمل نموذج واحد على العملات والذهب والأسهم وعلى أطر زمنية مختلفة دون إعادة تدريب. ويُكبَح الاستنتاج ما لم تتجاوز الحركة عتبة معتبرة، فلا يُستهلك المعالج بلا داعٍ.

CNN 1D

رأس النماذج

Segmentation

رأس السيولة

GRU

رأس النظام

sdk & localization

واجهة برمجة هادئة ونظام اتجاه أصلي

الاتجاه معامل رياضي يُمرَّر في بيانات الرؤوس، لا إعادة تخطيط: تكلفة التبديل بين العربية والإنجليزية كتابة معامل واحد، دون إسقاط إطار.

app/chart.ts
import { createChart } from "@chartxpert/core";

const chart = await createChart("#host", {
  renderer: "auto",                       // webgpu | webgl2 | auto
  locale: { lang: "ar", dir: "rtl" },     // direction is a uniform, not a relayout
  memory: { maxBarsPerSeries: 1_000_000 },
  ai: { onDevice: true, heads: ["pattern", "liquidity"] },
});

const price = chart.addSeries("candles", { id: "btcusdt-1h", stepMs: 3_600_000 });
price.attachStream({ url: "https://stream.chartxpert.ai/v1", transport: "webtransport" });

chart.on("pattern", (e) => console.log(e.kind, e.confidence, e.range));
indicators/squeeze.ts
export const Squeeze = defineIndicator({
  name: "cxp.squeeze",
  inputs: { len: 20, mult: 2 },
  outputs: [{ id: "on", kind: "band" }],
  step(ctx, bar) {                        // incremental & pure => O(1) per bar
    const basis = ctx.state(ema, "b", ctx.p.len).next(bar.close);
    const range = ctx.state(atr, "a", ctx.p.len).next(bar);
    ctx.emit("on", { upper: basis + ctx.p.mult * range,
                     lower: basis - ctx.p.mult * range });
  },
  gpu: true,                              // fusable ops are compiled to WGSL
});

bi-directional rules

العنصرLTRRTLآلية التنفيذ
محور الزمنالأقدم يسارًاالأقدم يسارًا (ثابت)dir uniform
محور السعريمين اللوحةيمين اللوحة (ثابت)axisSide = const
تسمية الأرقام1,234.501,234.50Intl.NumberFormat
التلميح والصليبيفتح يمينًايفتح يسارًاflipInline()
كروم الواجهةالقوائم يسارًاالقوائم يمينًاlogical props

patent claims strategy

ستّ مطالبات مستقلة قابلة للإيداع

تُثبَّت الأولوية بطلب مؤقت أولاً، ثم PCT خلال اثني عشر شهرًا، مع بقاء الأوزان ومعايرة الكبح كسرّ تجاري غير منشور. الحقوق محفوظة لشركة Difins Co.

المطالبة 1

نظام LOD مالي محافظ على الحدود مع فهارس أصلية

هرم مستويات تفصيل تحفظ فيه كل عقدة فهرسي العنصر صاحب القيمة العظمى والصغرى، ويُستخدم ترتيبهما لتحديد الترتيب الزمني للرسم داخل بكسل واحد.

المطالبة 2

عنونة زمنية حسابية O(1) في مخزن حلقي عمودي

حساب موضع التخزين بتحويل حسابي مباشر من الطابع الزمني على أعمدة منفصلة في ذاكرة مشتركة تقرأ منها طبقات النقل والرسم والاستنتاج بلا نسخ.

المطالبة 3

مسار بيانات صفري النسخ حتى ذاكرة الرسم

فك ترميز الحزم المالية في عامل منفصل إلى ذاكرة خطية مشتركة، ثم رفع النطاقات المتغيرة فقط، مع دمج حسابي للتِكات يحقق استهلاك ذاكرة ثابتاً.

المطالبة 4

استنتاج عصبي مفصول عن حلقة الإطار

تعرّف على النماذج السعرية على جهاز المستخدم يكتب في مخزن تعليقات مزدوج، بحيث لا يعتمد معدل الإطارات على زمن الاستنتاج.

المطالبة 5

تطبيع قانوني ثابت المقياس

تحويل السلسلة السعرية إلى تمثيل مُطبَّع بمقياس التقلب قبل الاستنتاج، فيعمل نموذج واحد على أدوات وأطر زمنية مختلفة دون إعادة تدريب.

المطالبة 6

عرض ثنائي الاتجاه بمعامل اتجاه في مرحلة الرؤوس

دعم RTL/LTR عبر تمرير معامل اتجاه ضمن بيانات الرؤوس وقلب مبدأ الإحداثيات، دون إعادة بناء المخزنات أو هرم التفصيل، مع قياس نص مُشكَّل مسبقاً.

ترخيص المحرك لفريقك

حزمة SDK، حدود الاستخدام، شروط الترخيص، ودعم عربي مباشر من Difins Co.

support@chartxpert.io

ChartXpert AI · chartxpert.ai · Difins Co. · architecture v1.0