مشاهدة نتائج الإستطلاع: هل ترغب في الانتقال للمستوى الأعلى بالدورة لعمل برامج تحليل باستخدام لغة السي شارب
نعم - سأتابعها بإذن الله
80.00%
لا - يفضل الأعضاء استخدام الإكسل لأنه أسهل
20.00%
المصوتون: 50. أنت لم تصوت في هذا الإستطلاع

إضافة رد
قديم 12-04-2017, 05:44 PM
  المشاركه #85

عضو هوامير المميز

تاريخ التسجيل: Mar 2017
المشاركات: 91
رب زدني علما غير متواجد حالياً  

اقتباس:
المشاركة الأصلية كتبت بواسطة نور قائد النمور مشاهدة المشاركة
عملتها بدون /

رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن
----------------------------------------------------------------------------------

عملتها مع / وصار احمرراررررررررررررررررر
رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن
لا تمسح السطر بالكامل أخي الكريم
يجب أن تترك الكود path =
فقط استبدل الكلام بين الأقواس " "
فيكون السطر وما قبله بالكامل بالمسار على جهازك الشخصي:

Dim path As String

path = "C:\Program Files\UniTicker\TickerChart Trend\TickerChartTrend_MetaStock\Daily\Saudi Stock Exchange-Ta\" 'هنا مسار مجلد الميتاستوك

الخطأ من عندي .. أقصد علامة \ وليس علامة /




رد مع اقتباس
 
 

قديم 12-04-2017, 05:57 PM
  المشاركه #86

عضو هوامير المميز

تاريخ التسجيل: Aug 2010
المشاركات: 4,040
نور قائد النمور غير متواجد حالياً  

اقتباس:
المشاركة الأصلية كتبت بواسطة رب زدني علما مشاهدة المشاركة
لا تقلق أخي الكريم،
الموضوع صعب إذا لم تكتب كودًا برمجيًا من قبل
ولكن معنا خطـــــوة بخطوة بإذن الله يكون سهلًا

عندما قمت بتحميل هذا الملف
https://dl.dropboxusercontent.com/s/...son1.xlsm?dl=0

ثم الضغط على alt + f11 لإظهار الكود

قم بالبحث داخل الكود عن السطر الآتي:
Path = "metastock path here"

واستبدل الكلام metastock path here الذي بين الأقواس " "
بمسار مجلد الميتاستوك الذي تم شرح كيفية الحصول عليه بالمقدمة (المشاركة الأولى بالموضوع)
وإذا لم ينتهي مسار المجلد بعلامة /
يجب أن تكتب علامة / في نهاية المسار

لا يوجد شيء صعب .. فقط إصبر
الجميع يجد الموضوع صعبًا في البداية ولكن مع الصبر
كل شيء يكون سهلًا

ربي يفرج همك - ويشرح صدرك ويوسع عليك



رد مع اقتباس
قديم 12-04-2017, 07:09 PM
  المشاركه #87

عضو هوامير المميز

تاريخ التسجيل: Mar 2017
المشاركات: 91
رب زدني علما غير متواجد حالياً  

بسم الله الرحمن الرحيم
وبه نستعين

الدرس السادس
استخراج بيانات الشموع من ملفات الأسعار DAT


هذا الدرس هو أصعب درس منذ بداية سلسلة الشروحات
واحترت كثيرًا في كيفية عرضه،
فإذا نفذت الخطوات ولم يعمل معك يمكنك تحميل الملف جاهزًا من آخر الدرس ...

الآن نريد أن نضيف عدد ثلاث خانات إلى الجدول،
قد أضفنا إثنين منهما في تطبيق سابق وهمــــا
سعر الإغلاق - التغير %
ليكون الشكل النهائي للدرس كما بالصورة:

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

هذا الكود بالصورة القادمة يقوم بإضافة الأعمدة الثلاثة الجديدة وهم
الإغلاق - التغير % - تاريخ آخر شمعة
وأيضًا يقوم بإخفاء العامود الخاص بمسار ملف الميتاستوك فلا نحتاجه من الآن
(مع مراعاة تعديل الكود الذي كتبته بنفسك في التطبيق إذا كنت محتفظًا به لإضافة التاريخ)

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

والجديد في هذا الكود استخدام الخاصية Hidden لإخفاء العامود رقم 3 الخاص بمسار ملف الDAT

وأيضًا استخدام الخاصية NumberFormat لخلايا الإكســــل ليتم تنسيق البيانات مثلًا:
0.00 في حالة سعر الإغلاق حتى يتم اختصار الرقم إلى صفرين ما بعد علامة النقطة
0.00% في حالة التغيــــــــــــــر للاختصار إلى صفرين وأيضًا العرض كنسبة مئوية %
dd mmm yyyy - hh:mm في حالة التاريخ لعرضه بالشكل المطلوب
(يوم - شهر - سنة - ساعة - دقيقة)

ويمكنك نسخ الكود السابق من هنا:

مع مراعاة أن يتم كتابته في الجزء الخاص بتنسيق الأعمــدة في بدايـــة الدالة Main

كود:
'عامود سعر الإغلاق
    Columns(4).ColumnWidth = 10                 'سمكه صغير
    Columns(4).HorizontalAlignment = xlRight    'محاذاة لليمين
    Columns(4).Font.Color = RGB(0, 160, 0)              'اللون الأخضر الغامق
    Columns(4).Font.Bold = True
    Columns(4).NumberFormat = "0.00"
    
    'عامود التغير
    Columns(5).ColumnWidth = 12                 'سمكه صغير
    Columns(5).HorizontalAlignment = xlRight    'محاذاة لليمين
    Columns(5).Font.Color = RGB(0, 160, 0)              'اللون الأخضر الغامق
    Columns(5).Font.Bold = True
    Columns(5).NumberFormat = "0.00%"
    
    'عامود التغير
    Columns(6).ColumnWidth = 30                 'سمكه متوسط
    Columns(6).HorizontalAlignment = xlLeft    'محاذاة لليسار
    Columns(6).Font.Color = RGB(100, 100, 100)              'اللون الرمادي
    Columns(6).NumberFormat = "dd mmmm yyyy - hh:mm"
    
    Columns(3).Hidden = True        'إخفاء عامود ملف الميتاستوك
    
    Cells(1, 4) = "الإغلاق"
    Cells(1, 4).HorizontalAlignment = xlCenter   'محاذاة للمنتصف
    Cells(1, 5) = "التغير"
    Cells(1, 5).HorizontalAlignment = xlCenter   'محاذاة للمنتصف
    Cells(1, 6) = "تاريخ آخر شمعة"
    Cells(1, 6).HorizontalAlignment = xlCenter   'محاذاة للمنتصف



الآن نريد أن نستخرج البيانات من ملفات الDAT
وقد تعرفنا في الدرس السابق على كيفية تحديد الخطوة 28 أم 32
وعرفنا أن كل خطوة بالملف تنقسم إلى:

1- عدد 4 بايت للتاريخ في حالة الأولى أو 8 بايت في الحالة الثانية
2- عدد 4 بايت لسعر افتتاح الشمعة O
3- عدد 4 بايت لأعلى سعر للشـمعة H
4- عدد 4 بايت لأدنى سعر للشــمعة L
5- عدد 4 بايت لسعر إغلاق الشـمعة C
6- عدد 8 بايت للحجم V

الآن يجب كتابة دالة تقوم بتحويل كل 4 بايت من السابق ذكرهم إلى رقم عشري (السعر)
وهي مشفــرة بطريقة تنص عليها نظم IEEE يتم فك تشفيرها بتحويل 4 بايت إلى Single
والSingle هو نوع بيانات مثل Integer ولكنه يحتمل العلامة العشريــــــــــة
يتم كتابة الدالة الآتية لتحويل 4 بايت إلى Single بطريقة IEEE كما بالصورة:

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

ننظر إلى الدالة السابقة، نجد أن المدخل الخاص بها عبارة عن مصفـــوفة من bytes تسمى M
ويجب أن يكون عدد الbytes في هذه المصفوفة M يساوي 4 لتحويله إلى رقم عشري Single

بينما ملفات الDAT عند قراءتـــــها باستخــــــدام الدالة GetFileBytes
سوف ينتج عنها عدد bytes يساوي عدد الbytes في الملف بأكمله !!

فينبغي قـــص المصفوفة الأخيرة الناتجة عن GetFileBytes إلى 4 بايتس فقط
وذلك بداية من رقم البايت الموجودة عنده البيانات، ولنقم بتسميته byteIndex
ويتم القص عن طريق الدالة الآتية كما بالصورة:

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

مع العلم أن استخدام علامة % بعد Dim كأننا قلنا As Integer (فقط اختصار)
ويمكن نسخ الدالتين السابقتين من هنا مع مراعاة كتابتهما في المكان الصحيح بعد نهاية الدالة Main:

كود:
'قص عدد 4 بايت من المصفوفة بداية من الإندكس المحدد وتحويلهم إلى رقم عشري
Public Function ReadSingleIEEE(M() As Byte, ByVal byteIndex As Long) As Single
    Dim bytes(4) As Byte
    Dim i%
    For i = 0 To 3
        bytes(i) = M(byteIndex + i)
    Next i
    ReadSingleIEEE = Bytes4ToSingleIEEE(bytes)
End Function

'تحويل 4 بايت إلى رقم عشري
Public Function Bytes4ToSingleIEEE(M() As Byte) As Single
    Static IEEE_Exp As Byte, IEEE(0 To 3) As Byte
    If M(3) = 0 Then Exit Function
    IEEE_Exp = M(3) - 2
    IEEE(3) = (M(2) And &H80) Or (IEEE_Exp \ 2)
    IEEE(2) = ((CLng(IEEE_Exp) * 128) And &HFF) Or (M(2) And &H7F)
    IEEE(1) = M(1)
    IEEE(0) = M(0)
    Call CopyMemory(Bytes4ToSingleIEEE, IEEE(0), 4)
End Function


ونلاحظ أن الدالة Bytes4ToSingleIEEE تستخدم دالة اسمها CopyMemory
يجب استحضــــارها من مكتبة الأكواد kernel32.dll الموجودة بالWindows
وتختلف طريقة استحضارها باختلاف نسخة الExcel على جهازك
فيتم استحضارها بكتابة هذا الكود في بداية Module1 قبل دالة Main كما بالصورة:

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

بعد ذلك نقوم بفرض نوع جديد من البيانات Type ليمثل بيانــــــات الشمعة
(التاريخ - سعر الافتتاح - سعر الإغلاق - أدنى سعر - أعلى سعر - الحجم)
ويتم إضافته أيضًا في بداية الكود قبل الدالة Main كما بالصورة:

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

ويمكن نسخ الكود الخاص بــ (النوع Candle - استحضار الدالة CopyMemory) من هنا:
(يتم لصق الكود قبل دالة Main في بداية Module1)

كود:
#If VBA7 Then
    Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (Destination As Any, Source As Any, ByVal Length As Long)
#Else
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (Destination As Any, Source As Any, ByVal Length As Long)
#End If

Public Type Candle
    DATE As Date
    OPEN As Single
    HIGH As Single
    LOW As Single
    CLOSE As Single
    VOLUME As Single
End Type



الآن وقد نجحنا في فرض النوع Candles لحفظ بيانات الشمعة الواحـــــــدة
وعندنا الدالة ReadSingleIEEE لتحويل أي 4 بايت إلى رقم عشري Single
يتبقى لنا قراءة الملف الأسعار وتحويله إلى مصفوفة من Candles
ويتم ذلك بإضافة الدالة الآتية كما بالصورة:

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

وهذه الدالة تستخدم المدخلات الآتية:
path وهو مسار ملف الDAT وتم الحصول عليه بالفعل في الدروس السابــقة
وstep وهي الخطوة وتساوي 28 أو 32 وتم الحصول عليها في الدرس السابق

وتبـــدأ الدالة بقراءة ملف الDAT بالكامل في المصفوفة bytes
ثم تحديد عدد البايتس الخاصة بالتاريخ (4 أو 8) بحسب الخطوة

ثم يتم عمل For Loop للمرور على أجزاء الملف كما فعلنا بملف الEMASTER
وفي كل مرة يتم الحصول على التاريخ:
(سنة - شهر - يوم) في حالة الخطوة 28 (شموع يومية أو أعلى)
(سنة - شهر - يوم - ساعة - دقيقة - ثانية) في حالة الخطوة 32

ثم يتم الحصول على بيانات OHLC والحجم
وذلك بإضافة كل مرة عدد 4 إلى مدخل الدالة ReadSingleIEEE
لتحديد الرقم التالي...
تذكــــــــــــــ ! ــــ ! ـــ ! ـــــــــــــــــرة لمن نسى:

1- عدد 4 بايت للتاريخ في حالة الأولى أو 8 بايت في الحالة الثانية
2- عدد 4 بايت لسعر افتتاح الشمعة O
3- عدد 4 بايت لأعلى سعر للشـمعة H
4- عدد 4 بايت لأدنى سعر للشــمعة L
5- عدد 4 بايت لسعر إغلاق الشـمعة C
6- عدد 8 بايت للحجم V

ويمكن نسخ كود الدالة ReadDatFile من هنا:
(مع مراعاة أن يتم كتابته في المكان الصحيح بعد نهاية دالة Main)

كود:
'قراءة ملف الأسعار وتحويله إلى مصفوفة من الشموع
Public Function ReadDatFile(ByVal path As String, ByVal step As Integer) As Candle()
    
    On Error GoTo error1:           'يمكن أن يحدث خطأ بسبب عدم تواجد الملف أو حجمه صفر
    
    Dim bytes() As Byte
    bytes = GetFileBytes(path)      'قراءة ملف الأسعار إلى مصفوفة من بايتس

    Dim candles() As Candle
    ReDim candles(UBound(bytes) / step - 2) As Candle   'فرض مصفوفة الشموع
    
    Dim deltaDate As Integer    'عدد البايتس الخاصة بالتاريخ
    If step = 28 Then
        deltaDate = 1 * 4
    Else
        deltaDate = 2 * 4
    End If
    
    Dim i As Long
    For i = 1 To UBound(bytes) / step - 1
        
        'قراءة عدد 4 بايت الأولى وهي التاريخ سنة وشهر ويوم
        Dim datePart As Single
        datePart = ReadSingleIEEE(bytes, i * step)
        
        If step = 28 Then
            candles(i - 1).DATE = DateSerial(1900 + (datePart / 10000), _
                (datePart Mod 10000) / 100, datePart Mod 100)   'تحويل الرقم إلى تاريخ
        Else
            'في حالة الشموع أقل من اليومية يتم قراءة الزمن ساعة ودقيقة وثانية
            Dim timePart As Single
            timePart = ReadSingleIEEE(bytes, i * step + 1 * 4)
            'هنا يتم تحويل الرقم الخاص بالتاريخ إلى تاريخ والرقم الخاص بالزمن إلى زمن ثم الجمع
            candles(i - 1).DATE = DateSerial(1900 + (datePart / 10000), _
                (datePart Mod 10000) / 100, datePart Mod 100) + _
                TimeSerial(timePart / 10000, (timePart Mod 10000) / 100, timePart Mod 100)
        End If
        
        'قراءة بيانات الافتتاح والأعلى والأدنى والإغلاق والحجم
        candles(i - 1).OPEN = ReadSingleIEEE(bytes, i * step + deltaDate)
        candles(i - 1).HIGH = ReadSingleIEEE(bytes, i * step + 1 * 4 + deltaDate)
        candles(i - 1).LOW = ReadSingleIEEE(bytes, i * step + 2 * 4 + deltaDate)
        candles(i - 1).CLOSE = ReadSingleIEEE(bytes, i * step + 3 * 4 + deltaDate)
        candles(i - 1).VOLUME = ReadSingleIEEE(bytes, i * step + 4 * 4 + deltaDate)
    Next i
    ReadDatFile = candles
error1:
End Function



الآن وقد انتهينا من كتابة الكود الذي يقرأ ملفات السعر بالكامل،
نريد أن نستخدمه !!!
يتم استخدامه باستخدام الدالة ReadDatFile مباشرة دون التطرق لما سبق ...

ولكن قبل أن يتم إضافته يتم تعديل السطر الأول من الFor Loop الخاصة بملف EMASTER
والموجودة داخل الدالة Main
من:
For i = 1 To UBound(bytes) / 192
إلى:
Dim i As Long, j As Long
For i = 1 To UBound(bytes) / 192 - 1

وذلك لأن أقصى عدد يتم تخزينه بالمتغير من النـــــوع Integer هو 32767
لأن المتغير من النوع Integer يشغل فقط عدد 2 بايت من الذاكرة
بينما طول الملفات قد يتعدى هذا الرقم،
فنستخدم النوع Long لأن أقصى عدد يمكن تخزينه فيه هو
2147483647
لأن المتغير من النوع Long يشغل عدد 4 بايت من الذاكرة

والآن يتم كتابة آخر كود وهو كود استيراد البيانات وعرضها بخانات ملف الإكسل
كما بالصورة:

الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat

وبالطبع يتم كتابة هذا الكود في نهاية الFor Loop الخاصة بملف الEMASTER بداخل الدالة Main
ويمكن نسخ الكود من هنا:

كود:
'قراءة مصفوفة الشموع
        Dim candles() As Candle
        candles = ReadDatFile(Cells(i + 1, 3), step)    'باستخدام المسار والخطوة
        
        On Error Resume Next        'يحتمل الخطأ في حالة عدم تواجد الملف أو حجمه يساوي صفر
        If UBound(candles) > 0 Then
            Cells(i + 1, 4) = candles(UBound(candles)).CLOSE    'عرض سعر الإغلاق
            
            Cells(i + 1, 5) = ((candles(UBound(candles)).CLOSE - candles(UBound(candles) - 1).CLOSE) / _
                candles(UBound(candles) - 1).CLOSE)             'عرض التغير اليومي
            If Cells(i + 1, 5) < 0 Then
                Cells(i + 1, 5).Font.Color = RGB(160, 0, 0)     'إظهار التغير بالأحمر إذا كان أصغر من صفر
            End If
            
            Cells(i + 1, 6) = candles(UBound(candles)).DATE     'عرض تاريخ آخر شمعة
        End If


وعند تشغيل الكود بالكامل يظهر بالشكل الآتي:


الدرس السادس - استخراج بيانات الشموع من ملفات الأسعار dat


وبهذا نكون قد انتهينا من الدرس السادس،
وهو أصعب درس في مجموعة الشروحات

ويمكنك تحميل الملف بالكامل من هنا مع استبدال مسار الميتاستوك
https://dl.dropboxusercontent.com/s/...w/Lesson6.xlsm

وفي الدروس القادمــة بإذن الله سيتم تنسيق هذا الكود المبعثر،،
وتقسيمه إلى ملفات مستقلة يمكن استخدامها بسهولة فيما بعد،
وعرض الرسم البياني الخاص بأي سهم...

في انتظار دعواتكم قبل ردودكم،،،
تابعونا،،،



رد مع اقتباس
قديم 12-04-2017, 07:29 PM
  المشاركه #88

عضو هوامير المميز

تاريخ التسجيل: Mar 2017
المشاركات: 91
رب زدني علما غير متواجد حالياً  

ملحوظة هامة:

التغير هو نسبة زيادة السعر في آخر شمعة عن إغلاق الشمعة قبل الأخيرة
ولكي يكون التغير مطابقًا لبرامج TickerChart أو المباشر أو غيرها
يجب استخدام مجلد البيانات اليومية Daily حيث يظهر في هذه البرامج التغير اليومي





رد مع اقتباس
قديم 12-04-2017, 11:06 PM
  المشاركه #89

عضو هوامير المميز

تاريخ التسجيل: Apr 2013
المشاركات: 452
مهندس متقاعد غير متواجد حالياً  

كله تمام يااستاذنا
رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن
اثابك الله



رد مع اقتباس
قديم 12-04-2017, 11:29 PM
  المشاركه #90

عضو هوامير المميز

تاريخ التسجيل: Mar 2017
المشاركات: 91
رب زدني علما غير متواجد حالياً  

اقتباس:
المشاركة الأصلية كتبت بواسطة مهندس متقاعد مشاهدة المشاركة
كله تمام يااستاذنا
رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن
اثابك الله
والله أسعدتني بتطبيقك،،
فتح الله عليك وزادك من علمه




رد مع اقتباس
قديم 13-04-2017, 01:39 AM
  المشاركه #91

عضو هوامير المميز

تاريخ التسجيل: Jul 2008
المشاركات: 122
سطـام غير متواجد حالياً  

تم بحمد الله تطبيق الدرس


رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن



رد مع اقتباس
قديم 13-04-2017, 02:26 AM
  المشاركه #92

عضو هوامير المميز

تاريخ التسجيل: Mar 2017
المشاركات: 91
رب زدني علما غير متواجد حالياً  

اقتباس:
المشاركة الأصلية كتبت بواسطة سطـام مشاهدة المشاركة
تم بحمد الله تطبيق الدرس


رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن
ممتاز بارك الله فيك



رد مع اقتباس
قديم 13-04-2017, 02:30 AM
  المشاركه #93

عضو هوامير المميز

تاريخ التسجيل: Mar 2017
المشاركات: 91
رب زدني علما غير متواجد حالياً  

التطبيق الثاني

أضف عدد 4 خانات:
1- أعلى سعر خلال سنة ماضية
2- أدنى سعر خلال سنة ماضية
3- أعلى سعر خلال 6 أشهر ماضية
4- أدنى سعر خلال 6 أشهر ماضية

يتم استخدام مجلد البيانات اليومية Daily



رد مع اقتباس
قديم 13-04-2017, 03:00 AM
  المشاركه #94

عضو هوامير المميز

تاريخ التسجيل: Jul 2008
المشاركات: 122
سطـام غير متواجد حالياً  

اقتباس:
المشاركة الأصلية كتبت بواسطة رب زدني علما مشاهدة المشاركة
التطبيق الثاني

أضف عدد 4 خانات:
1- أعلى سعر خلال سنة ماضية
2- أدنى سعر خلال سنة ماضية
3- أعلى سعر خلال 6 أشهر ماضية
4- أدنى سعر خلال 6 أشهر ماضية

يتم استخدام مجلد البيانات اليومية daily
منتظرين الاكواد ومكانها
اطال الله بقائك



رد مع اقتباس
قديم 13-04-2017, 08:08 AM
  المشاركه #95

عضو هوامير المميز

تاريخ التسجيل: Apr 2013
المشاركات: 452
مهندس متقاعد غير متواجد حالياً  

رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن


رد مع اقتباس
قديم 13-04-2017, 12:14 PM
  المشاركه #96

عضو هوامير المميز

تاريخ التسجيل: Aug 2010
المشاركات: 4,040
نور قائد النمور غير متواجد حالياً  

رد: ◕ دورة احترافية لربط الإكسل Excel لتحليل البيانات اللحظية والتاريخية ◕ ← إصنع برن


رد مع اقتباس
إضافة رد


الكلمات الدلالية (Tags)
لتحليل, لربط, إصنع, والتاريخية, اللحظية, الإكسل, البيانات, احترافية, excel, برنامجك, دورة

أدوات الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع



05:04 PM