صفحة 16 من 26 الأولىالأولى ... 610111213141516171819202122 ... الأخيرةالأخيرة
النتائج 226 إلى 240 من 378
  1. #226
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    لخصت في الصورة أسفل كلاسات الثوابت وهي كلاسات داخلية nested classes -- يعني داخل الكلاس الأكبر الذي ينتمي له هذا الثابت--الكلاس في العنوان على اليسار تحت كل عنوان

    ثوابت لأن لها علاقة بنوع متناغم من الثوابت التي لاتتغير ولها استخدام خاص

    مثلا ايام الاسبوع ثوابت,

    ستايل الخطوط, ثوابت
    اسماء اسعار الشمعة ثوابت,
    وهلم جراً

    وقوانين ال nested classes -- انها اسم الكلاس الأصلي ثم نقطة ثم الكلاس او ال enum الداخلي
    يعني حاجة مثل:
    OutputParameterInfo.DrawingStyle

    OutputParameterInfo.Type

    OptInputParameterInfo.Type

    InputParameterInfo.Type


    اضغط على الصورة لعرض أكبر

الاســـم:	0008.png
المشاهدات:	0
الحجـــم:	32.9 كيلوبايت
الرقم:	521214
    آخر تعديل بواسطة سلمان_العتيبي ، 08-03-2020 الساعة 09:50 AM

  2. #227
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    اضغط على الصورة لعرض أكبر

الاســـم:	0000.png
المشاهدات:	0
الحجـــم:	21.4 كيلوبايت
الرقم:	521215


    اضغط على الصورة لعرض أكبر

الاســـم:	0001.png
المشاهدات:	0
الحجـــم:	15.7 كيلوبايت
الرقم:	521216

  3. #228
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    private-public-protected-default

    ارجوك لاتستغل الثغرة وتفسد برامجي!
    ارجوك استغل الثغرة وأفسد برامجي, فقد أذنت لك.
    -
    Field أو مرادفها attributes هي متغيرات تم تعريفها على مستوى الكلاس, يعني خارج أي دالة وتحت الكلاس.
    وبالتالي مستويات العبور لها أربعة: وهي اول اربع كلمات في الرد
    ---

    الكلاس حقتك لا اريد ان تفسد الكلاس حقتي لا اريدها ان تكون صديقة سوء!!
    في هذه الحالة استخدم ايش؟

    هذا تمهيد لبعض الاساسيات الضرورية جافا لكي نستطيع اكمال ما تبقى.

    فقط دعونا ننهي االفصل الثاني من هذا الموضوع عن اساسيات او البنية التحتية لتصميم أي مؤشر وهو دالة outputIndicatorInfo

    -
    -
    -
    آخر تعديل بواسطة سلمان_العتيبي ، 09-03-2020 الساعة 09:34 AM

  4. #229
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    outputIndicatorInfo
    عفوا outputParameterInfo
    --
    مع IStrategy ودوالها الست اذا تذكرون اعتقد واضحة لك الأمور من جهة سير البرنامج؟
    تقريبا الجميع يفهم ان اول سطر يمر عليه البرنامج سطر دالة OnStart
    وان سطر دالة OnBar مثلا --- يمر عليها البرنامج مع نشوء كل بارة جديدة (مثلا فريم اربع ساعات--نتوقع كل اربع ساعات)

    وان دالة OnTiack مع كل تكة يراها البرنامج--أي تكة لجميع الأزواج المفعلة subscribed insruments
    وان دالة OnMessage يمر عليها البرنامج مع أي رسالة جديدة من السستم اما داخلية او خارجية
    الخ

    مع المؤشرات IIndicators --- الأمور في بادئ الامر قد تبدو صعبة علينا
    نحن قد نكون متفقين جميعا على دالة OnStart
    ولكن هناك 10 دوال أخرى في المؤشر؟ وين يروح البرنامج بعد ذلك.

    مثلا بعد OnStart هل يذهب الى دالة calculate ؟؟؟ أم الى دالة getLookBack ؟؟ ام ان هذين او احدها غير منطقي ابدا ان تكون بعد دالة OnStart؟؟

    أشياء مهمة جدا لابد تفهمها
    ثم لاتنسى ان هناك مرحلة الكمبلة compiler time -- يعني اثناء الكمبلة كيف يتحرك البرنامج بين الدوال الـ 11

    وهناك مرحلة الرن-تايم run-time -- يعني عملية تشغيله على التشارت -- كيف يتحرك البرنامج اثناء هذه المرحلة--يعني كيف ينتقل بين الدوال الـ 11

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

    خط سير البرنامج؟؟؟؟ program flow???
    آخر تعديل بواسطة سلمان_العتيبي ، 09-03-2020 الساعة 10:33 AM

  5. #230
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    اثناء الكمبلة--بعد ما تسوي compile -- اذا الكود مافيه أخطاء syntax -- يعني لايخالف اساسيات الجافا, تنظر بعد ذلك في احتمال خط سير البرنامج بين الدوال(تنقله بين الدوال--اعتبره مثل رأس الماوس)
    -
    للمؤشر الديفولت بعدما تختار new indicator ثم بعد حفظه باسم مناسب, تسوي compile
    وقتها توقع التالي:
    -
    1) ان يبدأ ـ OnStart
    2) ويستمر حتى نهاية OnStart
    -
    3) ثم يذهب بعد ذلك الى دالة getIndicatorInfo
    4) ثم يذهب بعد ذلك الى دالة getInputParameterInfo
    5) ثم يذهب بعد ذلك الدالة getOptInputParamaterInfo
    6) ثم يذهب بعد ذلك الى دالة getOutputParametrInfo
    7) ثم يعود مرة أخرى الى دالة getIndicatorInfo
    -
    8) ثم لنفس الدالة getIndicatorInfo مرة ثالثة
    9) ثم لنفس الدالة getIndicatorInfo مرة رابعة
    10) ثم لنفس الدالة getIndicatorInfo مرة خامسة
    11) ثم لنفس الدالة getIndicatorInfo مرة سادسة

    وبس -- ولامزيد على هذا,


    صورة لو تعلمون ثمنها! خذوها مجاناً
    اضغط على الصورة لعرض أكبر

الاســـم:	0000.png
المشاهدات:	1
الحجـــم:	56.1 كيلوبايت
الرقم:	521249

    11 خطوة للمثال أعلاه, وصادف فقط انها بنفس عدد الدوال--مصادفة ليس الا- ولاعلاقة بين الرقمين

    لاحظ هناك ست دوال لم يمر عليها--فقط مر على خمس دوال اثناء الكمبلة؟
    اسأل نفسك ليش؟
    -
    -
    -
    آخر تعديل بواسطة سلمان_العتيبي ، 09-03-2020 الساعة 11:49 AM

  6. #231
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    لاحظ الصور ةاعلاه مثل "قص الجرة" الذي يتبعه قصاصين الأثر (ركز فيها شوف كيف يتحرك الكنترول- اتبع الاسهم)

    جميع الدوال المرتبطة بالبيانات وتغييرها من خلال التشارت لم يمر عليها لأنك حتى الان لم تطبق المؤشر على التشارت,
    (التشارت بيئة عمل يعطيك الأسعار وفيه إمكانية ان تغير المعطيات الخارجية الخ)
    -
    وبالتالي لم يمر على دوال set الثلاث,
    ولم يمر على دالة calculate
    ولم يمر على دالتي الاندكس--لأنه يأخذ الاندكس من بارات التشارت
    وحتى الان مافيش تشارت-مفيش خالص
    مجرد برنامج مكتوب بلغة الجافا وامتداده *.java وبعد الكمبلة صار هناك ملف تنفيذي بامتداد *.jfx !!! موجود في الفولدر! وليس على التشارت.
    -
    -
    مع الجافا العادية التنفيذ يامتداد *.class ---- مع دوكاسكوبي بدل class نجد jfx
    آخر تعديل بواسطة سلمان_العتيبي ، 09-03-2020 الساعة 12:19 PM

  7. #232
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    طبعا الكود اعلاه انا حذفت منه 1) البدي و 2) تعاريف رأس الدالة و 3) البارامترز من اجل تبسيط الشرح وتصغير حجم الصورة مع بقاء رؤوس الدوال

    دوال set الثلاث:
    setOptInputParameter
    setInputParameter
    setOutputParameter

    مكان عملها التشارت--يعني في مرحلة run-time ونعني مرحلة تطبيقه على التشارت.
    -
    -
    -
    ودالة calculate هي قلب أي مؤشر, وبالتالي تعتمد على المدخلات ومنها الأسعار على التشارت--- والاسعار تحصل عليها اثناء الرن-تايم--يعني المؤشر على جهازك الان تحت عنوان indicators لايوجد فيه أسعار--مجرد اسطر برمجية ومتغيرات ليس الا! -- لذا في مرحلة الكمبلة خارج التغطية!
    -
    -
    ودالتا الاندكس هما:
    getLookback
    getLookforward
    وايضا لان قيمها لها علاقة ببيانات التشارت(عدد الشموع او عدد التكات) ---- خارج التغطية اثناء الكمبلة
    -
    -
    -

    هل سألت نفسك لماذا ذهب الكنترول الى getIndicatorInfo ثم خرج ثم عاد لها خمس مرات متتالية بعد دوال get الثلاث؟
    ؟
    ؟
    ؟

    3) ثم يذهب بعد ذلك الى دالة getIndicatorInfo
    4) ثم يذهب بعد ذلك الى دالة getInputParameterInfo
    5) ثم يذهب بعد ذلك الدالة getOptInputParamaterInfo
    6) ثم يذهب بعد ذلك الى دالة getOutputParametrInfo
    7) ثم يعود مرة أخرى الى دالة getIndicatorInfo
    -
    8) ثم لنفس الدالة getIndicatorInfo مرة ثالثة
    9) ثم لنفس الدالة getIndicatorInfo مرة رابعة
    10) ثم لنفس الدالة getIndicatorInfo مرة خامسة
    11) ثم لنفس الدالة getIndicatorInfo مرة سادسة
    ليش مر عليه ست مرات؟ عد الألوان الزرقاء في الاقتباس؟ !!
    ؟
    ؟
    آخر تعديل بواسطة سلمان_العتيبي ، 09-03-2020 الساعة 12:03 PM

  8. #233
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

  9. #234
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    -
    مر عليه ست مرات, لأن الكونستكتور الأساسي له 9 متغيرات--راجع شروح قبل امس المكثفة- 6 منها ضروري معرفتها اثناء الكمبلة
    ونفس الامر ينطبق على دوال get الثلاث (input-inputOpt-output)

    -
    و program flow على اية حال هي من الأشياء التي تتعلمها في مبادئ البرمجة ودائما هي "فكر المبرمج" او الخوارزم في ذهنه.
    -
    وهذه الأمور نشرحها بشكل فلسفي ومتجذر لأن هدفنا رؤية فلاسفة برمجة وليس مجرد كتاب برامج! الباش كاتب!!
    آخر تعديل بواسطة سلمان_العتيبي ، 09-03-2020 الساعة 12:12 PM

  10. #235
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    ولكي تفهم بشكل عملي سير البرنامج لأهميته خصوصا مع المؤشرات وهي اشياء لابد تتعلمها في البداية ثم خلاص لا ترجع لها مرة أخرى نضع أدوات تجسس في البرنامج.

    غرس الجواسيس
    اول سطر في كل دالة نريد ان نزرع جاسوس, بحيث أي مرور على هذه الدالة اثناء سير البرنامج control flow يطبع رسالة
    الرسالة نريدها في ملف بسيط وليكن txt -- يعني نوتباد,

    من اكثر الأشياء اللي عاجبتني فتح txt من خلال محرر الميتا تريدر----نريد كل مامر على الدالة يسجل اسمها والوقت بالضبط اللي مر عليها ونريد صيغة الوقت شاملة حتى لجزء الالف من الثانية يعني الصيغة الزمنية من نمط hh:mm:ss.ms

    اذن نريد من jforex نسجل في ملف بسيط ونتابعه فوريا من خلال محرر mt4 ولكن بامتداد txt---

    دعنا نسمي هذا الملف: ccccc.txt

    اضغط على الصورة لعرض أكبر

الاســـم:	0000.png
المشاهدات:	1
الحجـــم:	74.6 كيلوبايت
الرقم:	521261
    آخر تعديل بواسطة سلمان_العتيبي ، 09-03-2020 الساعة 05:03 PM

  11. #236
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    الباث فايل نيم لـ ccccc.txt لابد نضعه في البرنامج بشكل صحيح -- اختر المكان اللي يعجبك على جهازك
    انا شخصيا اخترت file تحت mql منصة الميتا--للأسف طويل شوي!
    الملف المرفق 521262
    اختر فايل صحيح يوجد فيه مسبقا ملف ccccc.txt ---- يعني سو ملف جديد نوتباد واحفظه بهذا الاسم لكي نكتب اليه.
    وانقل مكانه بشكل صحيح مكان السطر اعلاه

  12. #237
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    ولاتنسى تضيف الامبورتات التالية بسبب الدوال الجديدة التي نحتاجها 1) للوقت 2) كتابة ملفات على الموجود أساسا في المؤشر الديفولت

    كود:
    import com.dukascopy.api.*;
    import java.time.format.DateTimeFormatter;  
    import java.time.LocalDateTime;    
    import java.io.*;

  13. #238
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    ثم اضف دالة ملفات FileWriter داخل الكلاس الرئيسي
    اصبح لدينا الان 12 دالة غير ال 11 الأساسية
    على النحو التالي:
    اضغط على الصورة لعرض أكبر

الاســـم:	0000.png
المشاهدات:	1
الحجـــم:	75.2 كيلوبايت
الرقم:	521263

    عزلناها في دالة من اجل نظافة البرنامج ومن اجل الاكسبشنز

    هدفها الكتابة الى ملف خارجي على جهازك.

    كود:
        FileWrite fileWriter = new FileWrite();
    
        public class FileWrite {
            public void writeToFile(String message) {
                try {
                    FileWriter fstream = new FileWriter(FILE_NAME, true);
                    BufferedWriter out = new BufferedWriter(fstream);
                    out.append(message + "\n");
                    out.close();
                } catch (Exception e) {
                    fileWriter.writeToFile("File access error: " + e.getMessage());
                }
            }
        }

  14. #239
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    ثم لاشيء اخر الا جعل اول سطر في كل دالة امر طباعة او كتابة للملف ccccc.txt
    مثلا:
    اضغط على الصورة لعرض أكبر

الاســـم:	0000.png
المشاهدات:	1
الحجـــم:	80.2 كيلوبايت
الرقم:	521264
    لاحظ النص الذي نريد طباعته--ممكن انت تشوف ترتيب افضل--وضعنا ترقيم والوقت واسم الدالة

  15. #240
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    اثناء الكمبلة او حتى تشغل المؤشر على التشارت سيحدث فوريا في ملف الاكسل--لو كان الملف مفتوح سيحدث امام عينيك.
    يستحسن تختار فريم 10 ثانية لترى متى تعمل دالة calculate مع حصر عمل المؤشر على الشموع, شمعة كل 10 ثواني
    10 ثواني كافية وأيضا توفر وقت.

    هذا الكود كاملا:
    كود:
    package jforex;
    
    import com.dukascopy.api.indicators.*;
    import com.dukascopy.api.*;
    import java.time.format.DateTimeFormatter;  
    import java.time.LocalDateTime;    
    import java.io.*;
    
    public class Indic_ator implements IIndicator {
        private IndicatorInfo indicatorInfo;
        private InputParameterInfo[] inputParameterInfos;
        private OptInputParameterInfo[] optInputParameterInfos;
        private OutputParameterInfo[] outputParameterInfos;
    
        private double[][] inputs = new double[1][];
        private int timePeriod = 2;
        private double[][] outputs = new double[1][];
        public int ii=0;
        public int ff=80000;
    
        private static final String FILE_NAME = "C:\\Users\\HP\\AppData\\Roaming\\MetaQuotes\\Terminal\\EEE12F4F5B303950D7AFD5955B219C2B\\MQL4\\Files\\ccccc.txt";
       
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.ms");
        
    private IIndicatorContext context;
    
        public void method() {
            ii++;if(ii<ff) fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--0M--method---");
            
            
    }
    
    
        FileWrite fileWriter = new FileWrite();
    
        public class FileWrite {
            public void writeToFile(String message) {
                try {
                    FileWriter fstream = new FileWriter(FILE_NAME, true);
                    BufferedWriter out = new BufferedWriter(fstream);
                    out.append(message + "\n");
                    out.close();
                } catch (Exception e) {
                    fileWriter.writeToFile("File access error: " + e.getMessage());
                }
            }
        }
    
    
    
    
        public void onStart(IIndicatorContext context) {
            this.context=context;
            
        
        
        
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--0P--onStart---");
            
            indicatorInfo = new IndicatorInfo("Z_C", "Sums", "Mndicators",false, false, false, 1, 1, 1);
            inputParameterInfos = new InputParameterInfo[] {
                new InputParameterInfo("Input data", InputParameterInfo.Type.DOUBLE)
            };
            method();
            indicatorInfo.setRecalculateOnNewCandleOnly(true);
            optInputParameterInfos = new OptInputParameterInfo[] {
                new OptInputParameterInfo("Time period", OptInputParameterInfo.Type.OTHER,
                    new IntegerRangeDescription(2, 2, 100, 1))
            };
            outputParameterInfos = new OutputParameterInfo[] {
                new OutputParameterInfo("out", OutputParameterInfo.Type.DOUBLE,
                    OutputParameterInfo.DrawingStyle.LINE)
            };
        fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--0E-onStart---");
        }
    
        public IndicatorResult calculate(int startIndex, int endIndex) {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"------------------------------02--calculate---");
            if (startIndex - getLookback() < 0) {
                startIndex = getLookback();
            }
            if (startIndex > endIndex) {
                return new IndicatorResult(0, 0);
            }
            int i, j;
            for (i = startIndex, j = 0; i <= endIndex; i++, j++) {
                double value = 0;
                for (int k = timePeriod; k > 0; k--) {
                    value += inputs[0][i - k];
                }
                outputs[0][j] = value;
            }
            return new IndicatorResult(startIndex, j);
        }
    
        public int getLookback() {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--------------------------------03--getLookback---");
            return timePeriod;
        }
    
        public int getLookforward() {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--------------------------------04--getLookforward---");
            return 0;
        }
    
        public IndicatorInfo getIndicatorInfo() {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--05--getIndicatorInfo---");
            return indicatorInfo;
        }
    
        public OptInputParameterInfo getOptInputParameterInfo(int index) {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--07--getOptInput---");
            if (index < optInputParameterInfos.length) {
                return optInputParameterInfos[index];
            }
            return null;
        }
    
        
        public InputParameterInfo getInputParameterInfo(int index) {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--06--getInput---");
            if (index < inputParameterInfos.length) {
                return inputParameterInfos[index];
            }
            return null;
        }
    
        public OutputParameterInfo getOutputParameterInfo(int index) {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--08--getOutput---");
            if (index < outputParameterInfos.length) {
                return outputParameterInfos[index];
            }
            return null;
        }
    
        public void setOptInputParameter(int index, Object value) {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--------------------------------10--setOptInput---");
            timePeriod = (Integer) value;
        }
        public void setInputParameter(int index, Object array) {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--------------------------------09--setInput---");
            inputs[index] = (double[]) array;
        }
    
    
        public void setOutputParameter(int index, Object array) {
            ii++;if(ii<ff)fileWriter.writeToFile("    "+dtf.format(LocalDateTime.now())+"    "+ii+"    "+"--------------------------------11--setOutput---");
            outputs[index] = (double[]) array;
        }
    
    }

صفحة 16 من 26 الأولىالأولى ... 610111213141516171819202122 ... الأخيرةالأخيرة

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17