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

إضافة رد
قديم 04-04-2017, 07:09 PM
  المشاركه #13

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

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

زادك الله من علمه ونفع بك
بداية موفقة جدا ومعلومات قيمة
ومتابعين معك وفقك الله



رد مع اقتباس
 
 

قديم 04-04-2017, 08:44 PM
  المشاركه #14

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

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

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




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

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

تاريخ التسجيل: Dec 2010
المشاركات: 654
ryof غير متواجد حالياً  

جزااااااااااااااااااااااك الله خير اخوي


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

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

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

بسم الله الرحمن الرحيم
وبه نستعين
الدرس الرابع - استخراج الأسهم من EMASTER

توقفنا في الدرس السابــــق عند قراءة ملف الEMASTER
وتحويله إلى مصفوفة من Bytes من مضاعفات العدد 192
وذكرنا أن أول 192 بايت من المصفوفة لا تخــص أي سهم
وعلى هذا نبدأ استخراج الأسهم بدايةً من البايت رقم 192

يتم كتابة هذا الكـــــود بداخل دالة الMain
وذلك أسفل الكود الخاص بتنسيق الأعمدة
(أسفل الكود الذي تم كتابته في أول درس)

الدرس الرابع - إستخراج الأسهم من emaster

لا تنسى تغيير المسار بالكود إلى المسار الحقيقي بجهازك!!

الكود السابق يبدأ بفرض متغير من النوع النصي String يسمى path
وتم تخزيــن بــه المسار الخاص بالمجلد الذي يحتوي على EMASTER

ثم تم فرض متغير من النــوع Byte يسمى bytes لتسجيل مصفوفة الملف EMASTER
وتم وضع الأقواس بالكــود () بعد اسم المتغير bytes ليتعرف البرنامج أنها مصفـــــوفة
وتم استخدام الدالة السابق شرحها وإضافتها GetFileBytes للحصول على المصفوفة

وأخيرًا يتم استخدام For Loop لتكرار الكود الذي سنكتبه بإذن الله بداخلها
وتكون عدد التكرارات هي حجـــــــم الملف EMASTER مقسومًا على 192
وهو يساوي عدد الأسهم كما ذكرنا بالدرس السابق

حيث تم استخدام الدالة UBound للحصول على طــــول المصفوفة bytes
وهو يساوي طول ملف الEMASTER

ونلاحظ أنه تم البدأ في التكرارات من رقم 1 وليس من الرقم 0
وذلك لما تم ذكـــره أيضًا في الدرس السابق أن أول 192 بايت
بملف EMASTER لا تمثل أي أسهم ولذلك نبــــــــدأ من الرقم 1

ويكون المتغير i بالFor Loop هو المسلسل بداخل التكرار
ويضاف عليه 1 تلقائيًا كل مرة يتم فيها التكرار

ما يتبقى الآن هو كتابــــــــــة الكود المطلوب بداخل متكرر For Loop
للحصول على (إسم السهم - كود السهم - مسار ملف الميتاستوك)
لكل سهم عن طريق ال192 بايت الخاصة بالسهم


أولًا .. كود السهم

ويتم تخزينه بداخل ال192 بايت الخاصة بالسهم
بدايـــة من البايـــت رقم 11 حتى البايت رقم 14
(عدد 4 بايت)
ويتم الحصول عليه بكتابة هذا الكود داخل متكرر For Loop

الدرس الرابع - إستخراج الأسهم من emaster

وفي هذا الكود تم عمل متكرر For Loop أخرى استنادًا على متغير جديد نسميه J
حيث تم التكرار من J = 0 حتى J = 3
أي عدد 4 تكرارات
وفي كل تكرار يتم نســــــــخ البايـــــت رقم i * 192 + 11 + j
من مصفوفة bytes إلى مصفوفة جديدة تسمى bytes_code
وبعـــد الانتهاء من الFor Loop تكون المصفـوفة bytes_code
تحتـــــــوي على عدد 4 بايت وهي الكــــــود الخاص بالسـهم
ويتم تحويل المصفوفة bytes_code إلى متغير نصي عن طريق الدالة StrConv
ومن ثم تخزيــــن الكود في خلية الإكســــل بالصف i + 1 والعامود 1 بآخر سطر


ثانيًا .. إسم السهم

ويتم تخزينه بداخل ال192 بايت الخاصة بالسهم
بدايـة من البايت رقم 139 حتى البايت رقم 190
(عدد 52 بايت)
ويتم الحصول عليه بكتابة هذا الكود داخل متكرر For Loop

الدرس الرابع - إستخراج الأسهم من emaster

وفي هذا الكود تم عمل متكرر For Loop أخرى بالمثـل
حيث يتم التكرار من J = 0 حتى J = 51 (أي 52 تكرار)
وفي كل مرة يتم نسخ البايت رقم i * 192 + 139 + J
من مصفوفة bytes إلى مصفوفة جديدة تسمـى bytes_name
وبعد الانتهـــــاء من الFor Loop تكون المصفوفة bytes_name
تحتوي على عدد 52 بايت وهي إسم السهم
ويتم تحويل المصفوفة bytes_name إلى متغير نصي عن طريق الدالة StrConv
ويتم إضافة &H401 بآخر الدالة وهي للتحويل إلى Encoding اللغة العربية
ومن ثم تخـزين إسم السهم في خلية الإكسل في الصف i + 1 والعامود 2


ثالثًا .. مسار ملف الميتاستوك الخاص بالسهم

ويتم تخزينه بداخل ال192 بايت الخاصة بالسهم
وذلك في Byte واحــــــدة فقط وهي الثانية (2)
ويمكن الحصول عليها وتخزينها بالعامود الثالث كالآتي:

الدرس الرابع - إستخراج الأسهم من emaster


*** وبذلك يكون الكود بالكامل للدرس كالآتي ***

الدرس الرابع - إستخراج الأسهم من emaster

وهذا الكود يتم كتابته بداخل الدالة Main
ولا تنسى:
1- تغيير المسار بالكود إلى مسار المجلد الذي يحتوي على ملف الEMASTER
2- إضــــافة الدالــــــة GetFileBytes التي تم شرحــــــها بالدرس السابــــــق


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

كود:
Sub Main()
    'تحديد اتجاه الصفحة من اليمين إلى اليسار (اللهم اجعلنا من أهل اليمين)
    ActiveSheet.DisplayRightToLeft = True
    Cells.Font.Name = "Arial Unicode MS"
    Cells.Font.Size = 10

    'عامود كود السهم
    Columns(1).ColumnWidth = 8                  'سمكه صغير نسبيًا
    Columns(1).HorizontalAlignment = xlCenter   'محاذاة للمنتصف
    Columns(1).Font.Color = vbRed               'اللون الأحمر
    Columns(1).Font.Bold = True                 'الخط الثقيل
    
    'عامود إسم السهم
    Columns(2).ColumnWidth = 25                 'سمكه كبير
    Columns(2).HorizontalAlignment = xlRight    'محاذاة لليمين
    Columns(2).Font.Color = vbBlue              'اللون الأزرق
    Columns(2).Font.Bold = True                 'الخط الثقيل
    
    'عامود مسار ملف الميتاستوك الخاص بالسهم
    Columns(3).ColumnWidth = 80                'سمكه كبير جدًا
    Columns(3).HorizontalAlignment = xlLeft     'محاذاة لليسار
    
    'تلوين صف عناوين الأعمدة
    Rows(1).Interior.Color = RGB(220, 220, 255)
    Rows(1).Font.Bold = True                 'الخط الثقيل
    
    'تحديد أسماء الأعمدة ومحاذتها
    Cells(1, 1) = "الكود"
    Cells(1, 2) = "إسم السهم"
    Cells(1, 2).HorizontalAlignment = xlCenter   'محاذاة للمنتصف
    Cells(1, 3) = "مسار ملف الميتاستوك"
    Cells(1, 3).HorizontalAlignment = xlCenter   'محاذاة للمنتصف

    'مسار المجلد الذي يحتوي على الإي ماستر بجهازك
    Dim path As String
    path = "C:\Users\Tamer\Documents\LiveMetaStock\Daily\Saudi Stock Exchange-Ta\"
    
    'قراءة ملف الإي ماستر وتحويله إلى مصفوفة من البايتس
    Dim bytes() As Byte
    bytes = GetFileBytes(path + "EMASTER")
    
    Dim bytes_code(3) As Byte       'عدد 4 بايت لتخزين كود السهم
    Dim bytes_name(51) As Byte      'عدد 52 بايت لتخزين إسم السهم
    
    'تكرار الأوامر الآتية بعدد الأسهم كلها
    For i = 1 To UBound(bytes) / 192
        'هنا يتم استخراج بيانات السهم
        
        'أولًا كود السهم ويتكون من عدد 4 بايت بداية من البايت رقم 11
        For j = 0 To 3
            bytes_code(j) = bytes(i * 192 + 11 + j)
        Next j
        Cells(i + 1, 1) = StrConv(bytes_code, vbUnicode)
        
        'ثانيًا إسم السهم ويتكون من عدد 52 بايت بداية من البايت رقم 139
        For j = 0 To 51
            bytes_name(j) = bytes(i * 192 + 139 + j)
        Next j
        Cells(i + 1, 2) = StrConv(bytes_name, vbUnicode, &H401)
        
        'ثالثًا رقم ملف الميتاستوك الخاص بالسهم وهو بالبايت رقم 2
        Cells(i + 1, 3) = path + "F" + CStr(bytes(i * 192 + 2)) + ".DAT"
    Next i
End Sub

'دالة قراءة أي ملف وتحويله إلى مصفوفة من البايت حيث يتم إدخال بها مسار الملف
Public Function GetFileBytes(ByVal path As String) As Byte()

    'فرض الملف
    Dim file As Long
    file = FreeFile()
    
    'فرض مصفوفة البايتس التي سيتم قراءة الملف فيها
    Dim bytes() As Byte
    
    If LenB((path)) Then     'التحقق من وجود الملف لتجنب حدوث أخطاء
    
        'فتح الملف لقراءته
        Open path For Binary Access Read As file
        
        'تحديد طول مصفوفة البايتس وهو طول الملف سالب واحد
        'وذلك لأن الترقيم بأي مصفوفة يبدأ من صفر وليس واحد
        ReDim bytes(LOF(file) - 1) As Byte
        
        'قراءة الملف داخل المصفوفة
        Get file, , bytes
        
        'إغلاق الملف بعد الانتهاء من قراءته
        Close lngFileNum
    End If
    
    'إرجاع القيمة المطلوبة كناتج للدالة، وهي مصفوفة البايتس
    GetFileBytes = bytes
End Function



وعند تشغيل هذا الكود، نكون قد وصلنا إلى أول مرحلة من الربط كما بالصورة

الدرس الرابع - إستخراج الأسهم من emaster

وسيتم في الدروس القادمــة بإذن الله قراءة ملفات الميتاستوك الخاصة بكل سهم
وقراءة الأسعار اللحظية والتاريخية منها، وإضافة الأسعار بالجداول والرسم البياني

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



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

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

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

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




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

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

تاريخ التسجيل: Feb 2012
المشاركات: 483
zsbmwr غير متواجد حالياً  

بارك الله فيك ولك

اتمنى تواصل بنفس الابداع

فكتب الله اجرك



رد مع اقتباس
قديم 05-04-2017, 12:09 AM
  المشاركه #19

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

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

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

اتمنى تواصل بنفس الابداع

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

وهذا البرنامج التحليلي بفضل الله من برمجتـــي

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

ولن أبخل على الأعضاء بأي معلومات
فإن العلم من عنـــد الله
وفوق كل ذي علم عليم

المشكــــ ! ــ ! ــ ! ــــــلة
لا أجد أي أسئلة .. ولا أعتقد أحد متابعني
هل من أحد يستفيد ؟؟؟



رد مع اقتباس
قديم 05-04-2017, 12:29 AM
  المشاركه #20

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

تاريخ التسجيل: Feb 2012
المشاركات: 483
zsbmwr غير متواجد حالياً  

اقتباس:
المشاركة الأصلية كتبت بواسطة رب زدني علما مشاهدة المشاركة
والله يا أخي لا أستطيع أن أبخل بما علمني الله
وسأستمر بإذن الله إلى أن يتعلم الأعضاء كيفية صنع برنامج عملاق بمعنى الكلمة
ولو يوجد اهتمام بهذه الدورة، إن شاء الله أجهز دورة أخرى لتحليل السوق بطريقة احترافية باستخدام لغة الc#

وهذا البرنامج التحليلي بفضل الله من برمجتـــي

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

ولن أبخل على الأعضاء بأي معلومات
فإن العلم من عنـــد الله
وفوق كل ذي علم عليم

المشكــــ ! ــ ! ــ ! ــــــلة
لا أجد أي أسئلة .. ولا أعتقد أحد متابعني
هل من أحد يستفيد ؟؟؟

كفووووووووووو

امثالك فخر لنا



رد مع اقتباس
قديم 05-04-2017, 07:56 AM
  المشاركه #21

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

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

متابعين والله وبكل اهتمام وبداءنا في التطبيق

الشرح واضح والخطوات واضحة
لك كل الشكر والتقدير
حفظك الله



رد مع اقتباس
قديم 05-04-2017, 10:50 AM
  المشاركه #22

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

تاريخ التسجيل: May 2009
المشاركات: 840
&& لنكاوي && غير متواجد حالياً  

بارك الله فيك اخي ،

شرح راااائع ومرتب.

مبدع واتمنى المواصله.



رد مع اقتباس
قديم 05-04-2017, 11:40 AM
  المشاركه #23

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

تاريخ التسجيل: Dec 2011
المشاركات: 1,183
خلاد2 غير متواجد حالياً  

بسم الله الرحمن الرحيم
الحمدلله والصلاة والسلام على رسول الله
صلى الله عليه وسلم
السلام عليكم ورحمة الله وبركاته
اسعدك الله استاذنا الموقر
واصل ابداعك
رحم الله من رباك
احسن الله إليك كما أحسنت إلينا جميعاً بعلمك
جزاك الله خير الجزاء ياعم وبارك الله فيك لما يحبه ويرضاه وصل على محمد وعلى آله وصحبه أجمعين



رد مع اقتباس
قديم 05-04-2017, 02:18 PM
  المشاركه #24

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

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

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

الشرح واضح والخطوات واضحة
لك كل الشكر والتقدير
حفظك الله
تحياتي لك وتحت أمرك في أي أسئلة

اقتباس:
المشاركة الأصلية كتبت بواسطة && لنكاوي && مشاهدة المشاركة
بارك الله فيك اخي ،

شرح راااائع ومرتب.

مبدع واتمنى المواصله.
بارك الله فيك أخي الكريم



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


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

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

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

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

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



07:18 AM