ماسح السوق

import React, { useState, useEffect } from 'react'; const StockScanner = () => { // تعريف الأسواق المتاحة const markets = [ { id: 'egx', name: 'مصر (EGX)' }, { id: 'tadawul', name: 'السعودية (TADAWUL)' }, { id: 'dfm', name: 'دبي (DFM)' }, { id: 'adx', name: 'أبو ظبي (ADX)' }, { id: 'qe', name: 'قطر (QE)' }, { id: 'bk', name: 'الكويت (BK)' }, { id: 'bse', name: 'البحرين (BSE)' }, { id: 'msx', name: 'عمان (MSX)' } ]; // تعريف أنواع المؤشرات const indicators = [ { id: 'rsi', name: 'مؤشر القوة النسبية (RSI)' }, { id: 'macd', name: 'تقارب وتباعد المتوسطات المتحركة (MACD)' }, { id: 'bb', name: 'مؤشر بولينجر باند (Bollinger Bands)' }, { id: 'ma', name: 'المتوسطات المتحركة (MA)' }, { id: 'volume', name: 'مؤشرات الحجم (Volume)' }, { id: 'stoch', name: 'مؤشر ستوكاستيك (Stochastic)' } ]; // تعريف الفريمات الزمنية const timeframes = [ { id: 'm1', name: '1 دقيقة' }, { id: 'm5', name: '5 دقائق' }, { id: 'm15', name: '15 دقيقة' }, { id: 'm30', name: '30 دقيقة' }, { id: 'h1', name: '1 ساعة' }, { id: 'h4', name: '4 ساعات' }, { id: 'd1', name: 'يومي' }, { id: 'w1', name: 'أسبوعي' }, { id: 'mn', name: 'شهري' } ]; // تعريف استراتيجيات الفحص const strategies = [ { id: 'breakout', name: 'اختراق مستويات مقاومة أو دعم' }, { id: 'trend', name: 'متابعة الاتجاه' }, { id: 'reversal', name: 'انعكاس الاتجاه' }, { id: 'crossover', name: 'تقاطع المتوسطات المتحركة' }, { id: 'oversold', name: 'مناطق تشبع بيعي' }, { id: 'overbought', name: 'مناطق تشبع شرائي' } ]; // تعريف حالات الفلترة const [selectedMarket, setSelectedMarket] = useState('egx'); const [selectedIndicators, setSelectedIndicators] = useState([]); const [selectedTimeframe, setSelectedTimeframe] = useState('d1'); const [selectedStrategy, setSelectedStrategy] = useState(''); const [scanResults, setScanResults] = useState([]); const [isScanning, setIsScanning] = useState(false); // معالجة تحديد المؤشرات (إضافة أو إزالة) const handleIndicatorChange = (indicatorId) => { if (selectedIndicators.includes(indicatorId)) { setSelectedIndicators(selectedIndicators.filter(id => id !== indicatorId)); } else { setSelectedIndicators([...selectedIndicators, indicatorId]); } }; // بيانات تجريبية للأسهم const sampleStocks = { 'egx': [ { symbol: 'COMI', name: 'البنك التجاري الدولي', price: 28.35, change: 0.52 }, { symbol: 'HRHO', name: 'المجموعة المالية هيرميس', price: 17.20, change: -0.35 }, { symbol: 'TMGH', name: 'مجموعة طلعت مصطفى', price: 7.48, change: 1.21 }, { symbol: 'SWDY', name: 'السويدي اليكتريك', price: 9.65, change: 0.85 }, { symbol: 'EFIH', name: 'إي فاينانس', price: 15.92, change: -0.28 }, { symbol: 'EAST', name: 'الشرقية للدخان', price: 16.75, change: 0.12 }, { symbol: 'AMOC', name: 'الإسكندرية للزيوت المعدنية', price: 4.12, change: 0.06 }, { symbol: 'ETEL', name: 'المصرية للاتصالات', price: 24.36, change: -0.44 } ], 'tadawul': [ { symbol: '2222', name: 'أرامكو السعودية', price: 32.75, change: 0.65 }, { symbol: '1150', name: 'مصرف الراجحي', price: 76.90, change: -0.20 }, { symbol: '2010', name: 'سابك', price: 93.80, change: 1.40 } ] }; // وظيفة المسح const handleScan = () => { setIsScanning(true); // محاكاة تأخير طلب شبكة setTimeout(() => { const marketStocks = sampleStocks[selectedMarket] || []; // تطبيق بعض المنطق البسيط للفلترة - يمكن تطويره حسب الحاجة let results = marketStocks; if (selectedIndicators.includes('rsi')) { // مثال: فلترة الأسهم التي بها RSI مناسب results = results.filter(stock => stock.change > 0); } if (selectedStrategy === 'reversal') { // مثال: الأسهم التي قد تشهد انعكاس results = results.filter(stock => Math.abs(stock.change) > 0.3); } setScanResults(results); setIsScanning(false); }, 1500); }; return (

ماسح الأسهم المتقدم

{/* اختيار السوق */}
{/* اختيار الفريم الزمني */}
{/* اختيار المؤشرات والاستراتيجية */}
{/* المؤشرات */}
{indicators.map(indicator => (
handleIndicatorChange(indicator.id)} className="ml-2" />
))}
{/* الاستراتيجية */}
{/* زر المسح */}
{/* نتائج المسح */} {scanResults.length > 0 && (

نتائج المسح ({scanResults.length})

{scanResults.map((stock, index) => ( ))}
الرمز الاسم السعر التغير التفاصيل
{stock.symbol} {stock.name} {stock.price} = 0 ? 'text-green-600' : 'text-red-600'}`}> {stock.change > 0 ? '+' : ''}{stock.change}%
)}
); }; export default StockScanner;

إرسال تعليق

أحدث أقدم

نموذج الاتصال

نموذج الاتصال