صفحة 16 من 18 الأولىالأولى ... 6101112131415161718 الأخيرةالأخيرة
النتائج 226 إلى 240 من 261
  1. #226
    الصورة الرمزية Ahmed Shihab
    Ahmed Shihab غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2009
    المشاركات
    496

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    مازلت متابع لك أخى أحمد ومنتظر عودتك الكريمة

    تقبل كامل أحترامى وتقديرى اخى الكريم أحمد

    سلام عليكم

  2. #227
    الصورة الرمزية bu_mohammed
    bu_mohammed غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Mar 2010
    المشاركات
    1,389

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    عندي استفسار عزيزي

    هل اكسبيرت ابو الطيب حول ال10 آلاف الى مليار في 10 اشهر
    ام إلى 1000 مليار يعني ترليون

  3. #228
    الصورة الرمزية bu_mohammed
    bu_mohammed غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Mar 2010
    المشاركات
    1,389

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    لي بعض الملاحظات على اكسبيرت ابو الطيب

    أولاً البروكر الباك تيست كان على بروكر سيئ جداً خصوصاً وأن الهيستوري فيها فجوات كبيرة وهو **********
    وعليه العديد من المشاكل وليس مسجلاً لان الشركة كنديه والسبيرد عندهم منخفض جداً

    ثانياً رأيت ان الاكسبيرت يعمل 5 أضعاف الرصيد في الأسبوع وهذا شئ عادي جداً

    ثالثاً : الدرو داون لاكسبيرت ابو الطيب وصل لل41% وهذا كثير

    سأضع باك تيست لأكسبيرت ولمدة 11 سنه وبدأ من 100 دولار فقط
    والنتايج تتكون من 12 صفر

  4. #229
    الصورة الرمزية ahmedfeki
    ahmedfeki غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    الإقامة
    تونس
    المشاركات
    506

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

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

    هل اكسبيرت ابو الطيب حول ال10 آلاف الى مليار في 10 اشهر
    ام إلى 1000 مليار يعني ترليون
    مرحبا بك آخي الكريم ، نعم حوله إلى 1000 مليار
    اقتباس المشاركة الأصلية كتبت بواسطة bu_mohammed مشاهدة المشاركة
    لي بعض الملاحظات على اكسبيرت ابو الطيب

    أولاً البروكر الباك تيست كان على بروكر سيئ جداً خصوصاً وأن الهيستوري فيها فجوات كبيرة وهو **********
    وعليه العديد من المشاكل وليس مسجلاً لان الشركة كنديه والسبيرد عندهم منخفض جداً

    ثانياً رأيت ان الاكسبيرت يعمل 5 أضعاف الرصيد في الأسبوع وهذا شئ عادي جداً

    ثالثاً : الدرو داون لاكسبيرت ابو الطيب وصل لل41% وهذا كثير

    سأضع باك تيست لأكسبيرت ولمدة 11 سنه وبدأ من 100 دولار فقط
    والنتايج تتكون من 12 صفر
    أهل بك أخي الكريم
    وهذا هو هدفنا هنا وهو لمناقشة الاكسبيرت والتعلم
    كيف نصنع اكسبيرت مشابه أو أحسن لما لا
    أنا كذلك لدي اكسبيرت وهو MEGADROID وبإعدادات معينة حول 200 دولار إلى 145 ألف مليار
    والباك تست عندي
    وقد ارفقته في هذه الدورة في مشاركات سابقة
    مع بعض التفسير حول الخدع التي يستعملها بعض مرويجي هذه الاكسبيرتات
    حتى لا ينجح إلا إذا اشتريته من عندهم
    ليس بصفة متطورة مع تغيرات السوق
    بما أن مفتاح تعليم هذه الإكسبرتات لا يروج ولا يباع
    ونحن في طور إنشاء اكسبيرت يعتمد على الشبكة العصبية
    حتى يكون دائما مواكب لتغيرات السوق
    وساقوم بنشر الدرس القادم بعد قليل
    واعتذر من الجميع عن هذا التأخير *

  5. #230
    الصورة الرمزية ahmedfeki
    ahmedfeki غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    الإقامة
    تونس
    المشاركات
    506

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    تحسين إستراتيجية الاكسبرت :
    أين المشكلة ؟؟
    السبب في سوء النتائج واضح تماما : استخدمنا وقف الخسارة ،الشارت ، مستويات البيع والشراء وغيرها من الإعدادات ، بطريقة عشوائية محضة -- اخترنا فقط الأولى التي جاءت في الاعتبار! ماذا لو نحاول دمجها قليلا؟

    أولا ، يجب أن نعلم أن التحسين المفرط في مستويات البيع والشراء ، يمكن أن يخرب فعالية الاكسبيرت في المستقبل ، و لكن لا يزال بإمكاننا القيام ببعض التحسينات عليها ، خصوصا إذا كانت نقطة الدخول قريبة
    من مستوى حد الشراء أو البيع (Buy Limit) ، على سبيل المثال إذا كان لدينا نسبة ربح أقل ب-10% في مستوى الشراء المعلق يساوي 0.3 (Buy Limit) ، ونسبة ربح أكثر ب 1000% في مستوى 0.35 .
    ربما تكون صدفة جيدة لنا ، ولكن لن نعتمد على الصدف ولن نطمع في ربح كبير غير مضمون وليس مستقر .
    وينبغي لنا أن لا نستخدم 0.35 لنظام التداول لدينا ، كما هو الحال في المستقبل ، وربما لن يحدث مرة أخرى. إذا ، بدلا من ذلك ، لدينا -10 ٪ و 10 ٪ (بدلا من 1000 ٪) ، قد يكون أكثر أمانا للإستخدام.

    عموما ، ينبغي بناء نظامنا تجاري لأسوأ سيناريو ممكن ، حتى يكون التداول على "الحقيقي" أفضل ، ثم أثناء الاختبار ، سنقوم بالبقاء على قيد الحياة ، ولكن ليس العكس إن شاء الله .

    بأمكننا تغيير قيم حدود المؤشر ، حتى نتحصل على أكثر فرص ممكنة للمتاجرة ، بحيث يمكننا أن نكون على ثقة ، من حيث الإحصاءات ،ومن حيث أداء الإكسبيرت .
    وطبعا بإمكاننا تغيير عدد الخلايا العصبية ،حتى نحصل على أحسن وضعية ،ولا أعتقد أنه سيكون الأمر سهلا .
    ويمكننا أن نغيير عدد المدخلات ومتخلفات المدخلات (lagg). فمن الممكن أن نحسن هذا ، ولكن ليس من المرجح جدا أن يحدث.
    وبالطبع ، يمكننا أن نجرب مؤشرات مختلفة.



    كيف نحسنها ؟


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

    للقيام بعض الحسابات الممكنة ، يجب أن نعلم أن ، Clv-1,و-Clv-2 ،هما على الأرجح مهمين ، ولكن ماذا عن Clv-128 ؟ وذا كان لدينا Clv 128 ، هل سنحتاج إلى Clv -129,على الأرجح لا ، إذا سيكون لدينا شيئا من هذا القبيل Clv-1, Clv-2, Clv-4, Clv-8, ... Clv-128 ، مع وجود اختلافات قليلة فقط، الأمر الذي سيجعل مدة الحساب أقصر بألاف المرات .
    هل الاكسبيرت سينجح دائما ؟

    مالذي بالضبط نرغب في النبؤ إليه ؟ إلى هذه النقطة ، استعملنا شارت الساعة لزوج اليورو ، و كان توقعنا حول شمعة ال-CLV المقبلة ، أي Clv-2 ستكون أفضل ؟؟ وماذا عن Clv-3 ؟

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

    للإجابة على هذه الأسئلة ، دعونا نشئ برنامج اختبار بسيط. و نفترض أن توقعاتنا هو بدقة 100 ٪ ، وعلى أساس هذه الافتراض ، سوف نستخدم CLV+N.ليس من توقع الشبكة بل سنأخذ البيانات من المستقبل ، واستخدامها بدلا من التنبؤ المنتج من الشبكة العصبية . ومن شأن هذا النهج سيتيح لنا بعض الأفكار عن ما يمكن توقعه.
    عند النظر إلى النتائج ، يرجى أن نضع في اعتبارنا ، أن لم نستخدم أي إدارة اموال مسبقة ،و يتم تعيين حجم العقد لدينا 100 دولار. إذا كنت تستخدم كثيرا الأحجام المتغيرة ، النتائج سوف تكون مختلفة بشكل كبير. ولكن حتى في تحديد حجم العقد 0،1 سنرى (أدناه) أن الحصول على المعلومات يكون من المستقبل.


    forex_nn_02.tsc, part 1


    كود PHP:
    void main()
    {
        
    OUT_CLEANUP();

        
    string strImagePath 
            
    "c:\\S_Projects\\CortexPro\\data\\stocks_nn\\images\\";

        
    string strForexName "EURUSD_H1";

        PRINT(
    "%s\r\n""Deleting image files...");

        
    array_s arrDirList 
            
    GET_DIR(strImagePath0"*.png");
        for(
    double n 0ARRAY_SIZE(arrDirList); 1)
        {
            
    F_UNLINK(arrDirList[n]);
        }

        
    // ***** Loading data
        
    string strDataFileName 
            
    "c:\\S_Projects\\CortexPro\\data\\samples\\forex\\"
            
    strForexName ".TXT";
        
    double bIsPathRelative 0;

        array     
    arrDate CREATE_ARRAY(0);
        array 
    arrTime CREATE_ARRAY(0);
        array 
    arrOpen CREATE_ARRAY(0);
        array 
    arrHigh CREATE_ARRAY(0);
        array 
    arrLow CREATE_ARRAY(0);
        array 
    arrClose CREATE_ARRAY(0);

        
    TABLE_LOADER(strDataFileNamebIsPathRelative0""
            
    0""0arrDate1arrTime2arrOpen3
            
    arrHigh4arrLow5arrClose); 
    لقد اعتدنا إستخدام هذا الكود ،خاصة في مثال FOREX_NN_01.TSC وهو يقوم بتحمل البيانات
    والفرق الوحيد هو في الجزء الذي يحصل فيه على قائمة من الملفات في مسار "الصور"
    ثم يقوم بحذف جميع الملفات ذات صيغة PNG والسبب من هذا الكود بسيط ،خلال تجربتنا سنقوم بإنشاء عدة
    صور بل قد يكون الالاف ولكن لن نحتاجها بعد نهاية الإختبار لذلك عند بداية الكود نقوم بحذف الصور التي انشأها السكريب الماضي

    forex_nn_02.tsc, part 2


    كود PHP:
        array arrClvIntervals CREATE_ARRAY(0);
        
    arrClvIntervals[0] = 4;   
        
    arrClvIntervals[1] = 6;   
        
    arrClvIntervals[2] = 8;   
        
    arrClvIntervals[3] = 12;  
        
    arrClvIntervals[4] = 16;   
        
    arrClvIntervals[5] = 24;
        
    arrClvIntervals[6] = 32;   
        
    arrClvIntervals[7] = 48;

        array 
    arrMa CREATE_ARRAY(0);
        
    arrMa[0] = 1;    // No MA
        
    arrMa[1] = 4;
        
    arrMa[2] = 7;
        
    arrMa[3] = 14;

        
    // How far in future we want to predict
        
    array arrOutLag CREATE_ARRAY(0);
        
    arrOutLag[0] = 0;    // Current
        
    arrOutLag[1] = 1;    // 1 bar
        
    arrOutLag[2] = 2;
        
    arrOutLag[3] = 3;
        
    arrOutLag[4] = 4;
        
    // Note: from this point coinsides with arrClvIntervals
        
    arrOutLag[5] = 6;    
        
    arrOutLag[6] = 8;    
        
    arrOutLag[7] = 12;  
        
    arrOutLag[8] = 16;   
        
    arrOutLag[9] = 24;
        
    arrOutLag[10] = 32;   
        
    arrOutLag[11] = 48;

        array 
    arrStopLoss CREATE_ARRAY(0);
        
    arrStopLoss[0] = 0.0025;
        
    arrStopLoss[1] = 0.005;
        
    arrStopLoss[2] = 0.0075;
        
    arrStopLoss[3] = 0.01;

        array 
    arrClv CREATE_ARRAY(0);
        array 
    arrClvSmooth CREATE_ARRAY(0);

        
    double nNetNum 0;
        
    double nRemoveFirst 128;

        
    string strXML "<forex>\r\n";

        
    double nInterval;
        
    double nMaIdx;
        
    double nMa;
        
    double nOutLagIdx;
        
    double nOutLag;
        
    double dStopLoss;

        array 
    arrBalance CREATE_ARRAY(0);
        array 
    arrBalanceBuy CREATE_ARRAY(0);
        array 
    arrBalanceSell CREATE_ARRAY(0);
        
        
    double nTradeNumber;

        
    double dExpectedCycles ARRAY_SIZE(arrClvIntervals
            * 
    ARRAY_SIZE(arrMa) * ARRAY_SIZE(arrOutLag) * 
            
    ARRAY_SIZE(arrStopLoss) * 10 10

    فقط بضعة تعليقات. نحن لا نريد أن نجرب جميع القيم الممكنة ، على سبيل المثال ، الفاصل الزمني ال CLV. بدلا من ذلك ، يمكننا إنشاء صفيف ، الذي يحتوي على القيملتي فقط سنختبرها. ثم (أنظر أدناه) سوف نسير من خلال هذه المجموعة.

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

    وأنا على التخطيط لاختبار قيم مختلفة لمستويات شراء وبيع ، ولكن سيتم ذلك في الدورة التكرارية ، من دون استخدام المصفوفات.

    خلافا لما حدث في المثال السابق ، نريد أن يكون لدينا ملف إكس إم إل كبير، يحتوي على العديد من الصور. للقيام بذلك ،قمت بتحويل كود إنشاء ال-XML خارج وظيفة إنشاء الشارت.

    علما أننا نستعمل 0 ،كتخلف في ملف ال-lagg ،وهذا يعني،أن سنقوم بتجرب مؤشر ال-CLV الذي لم يتم تخلفه بعد من المستقبل،فقط لنشئ فكرة حول كيف سيكون الاكسبرت بدون شبكة عصبية (رهيب ،سيخسر كل المال )

    برنامج كورتيكس يستخدم متصفح الإنترنت إكسبلورر ،لإظهار صفحات ال-XML ، عندما تصبح الصفحات كبيرة
    ،سيستخدم ذاكرة كبيرة من جهازك ؛ إن كان جهازك لا يملك ذاكرة كبيرا ،بإمكانك إنشاء صفحة ال-XML ،ثم لا نفتحها بل كورتيكس ،ولكن مباشرة بالانترنت اكسبلورر .

    الآن سننشئ السكريبت الذي نجرب من خلاله مجموعات مختلفة من الإعدادات *:

    forex_nn_02.tsc, part 3

    كود PHP:
      double nWinners 0;

        for(
    double nIntervalIdx 0
            
    nIntervalIdx ARRAY_SIZE(arrClvIntervals);
            
    nIntervalIdx nIntervalIdx 1)
        {
            
    nInterval arrClvIntervals[nIntervalIdx];

            
    ARRAY_REMOVE(arrClv, -1);
            
    arrClv CreateClv(nInterval);

            for(
    nMaIdx 0nMaIdx ARRAY_SIZE(arrMa); 
                
    nMaIdx nMaIdx 1)
            {
                
    OUT_CLEANUP();
                
    nMa arrMa[nMaIdx];

                
    ARRAY_REMOVE(arrClvSmooth, -1);
                
    arrClvSmooth EXP_MVAVG(arrClvnMa);

                for(
    nOutLagIdx 0nOutLagIdx ARRAY_SIZE(arrOutLag); 
                    
    nOutLagIdx nOutLagIdx 1)
                {
                    
    nOutLag arrOutLag[nOutLagIdx];

                    for(
    double nStopIdx 0nStopIdx 
                        
    ARRAY_SIZE(arrStopLoss);
                        
    nStopIdx nStopIdx 1)
                    {
                        
    dStopLoss arrStopLoss[nStopIdx];

                        for(
    double dTakeProfit 0dTakeProfit <= 0.05
                            
    dTakeProfit dTakeProfit 0.01)
                        {
                            for(
    double nBuyIdx 0nBuyIdx 10
                                
    nBuyIdx nBuyIdx 1)
                            {
                                
    double dBuyLevel 0.15 0.02 nBuyIdx;

                                for(
    double nSellIdx 0nSellIdx 10
                                    
    nSellIdx nSellIdx 1)
                                {
                                    
    double dSellLevel 
                                        
    0.85 0.02 nSellIdx;

                                    PRINT(
    "%.0f"nNetNum" of %.0f"
                                        
    dExpectedCycles);

                                    
    Test();

                                    PRINT(
    " (%.0f)\r\n"nWinners);

                                    if(
    ARRAY_SIZE(arrBalance) <= || 
                                        (
    ARRAY_SIZE(arrBalance) > && 
                                        (
    arrBalance[ARRAY_SIZE(arrBalance)
                                            - 
    1] <= 5000 ||
                                            
    arrBalanceBuy[ARRAY_SIZE(
                                                
    arrBalanceSell) - 1
                                                <= 
    3000 ||
                                            
    arrBalanceSell[ARRAY_SIZE(
                                                
    arrBalanceSell) - 1
                                                <= 
    2000)) ||
                                            
    nTradeNumber 50)
                                    {
                                        continue 
    nBuySellIdx;
                                    }

                                    
    nWinners nWinners 1;
                                                
                                    
    Chart(strForexName);
                                }
                            }
                        }
                    }
                }
            }
        }

        
    strXML strXML "</forex>\r\n";
        
    SAVE_XML(strImagePath"chart_forex_nn""chart_forex_nn"
            
    "root"strXML);
        
    SHOW_XML(strImagePath "chart_forex_nn.xml");

        PRINT(
    "%s\r\n""Done");

    هنا ،استخدمنا دورات متداخلة.
    في كل دورة نقوم بتعيين بعض المتغيريات
    (على سبيل المثال ،المتغير nInterval للدورة الخارجية ).


    بهذه الطريقة سوف تقوم الدورة بتعيين قيم لجميع عناصر الصفيف المناسب ، مرة واحدة . ثم داخلها ، يتم استخدام دورة لداخلية ، وهلم جرا ، بحيث يتم اختبار جميع مجموعات عناصر الصفيف.
    في الدورة الأعمق قمنا بإستدعاء الدالة TEST() لإختبار التداول ، والدلة CHART() لإضافة صورة جديدة إلى قائمة الصور المحفوظة في الجهاز ،
    علما ، أن الدالة CHART() لا تظهر أي صور ، حتى يتم الانتهاء من جميع الدورات .
    Test() وCreateClv ()،هي وظائف تقريبا نفسها كما في المثال السابق. الفارق الحقيقي الوحيد هو أنه استدعيناهم أكثر من مرة دعا أكثر من مرة واحدة. للقيام بذلك ،وقمنا بإستدعاء ARRAY_REMOVE لتنظيف الصفائف.

    ملاحظة :سنقوم فقط بإظهار الشارتات المتكونة من الإعدادات التي تنتج نتائج إيجابية ،وسنستعمل الدالة "Continue" لتخطي الدالة CHART() ، في الحالات السلبية

    وأخيرا ، لدينا الآن خاصية Take Profit ، لذلك برنامجنا يمكن أن يكون قليلا أكثر مرونة.

    forex_nn_02.tsc, part 4
    كود PHP:
    void Test()
    {
        
    nNetNum nNetNum 1;
        
        
    ARRAY_REMOVE(arrBalance, -1);
        
    arrBalance[0] = 1000;

        
    ARRAY_REMOVE(arrBalanceBuy, -1);
        
    arrBalanceBuy[0] = 0;

        
    ARRAY_REMOVE(arrBalanceSell, -1);
        
    arrBalanceSell[0] = 0;

        array 
    arrBars CREATE_ARRAY(0);
        
    arrBars[0] = 0;

        
    // 0.1 lot
        
    double dLotSize 100;
        
    // 1 buy, -1 sell, 0 - none
        
    double nType 0;

        
    double dSpread 0.0005;
        
    double bStop;
        
        
    // Max. Drawdown
        
    double dMaxDrawDown 0;
        
        
    // Used to calculate drawdown
        
    double dCurrentMax arrBalance[0];

        
    nTradeNumber 0;
        
    double nTradeNumberBuy 0;
        
    double nTradeNumberSell 0;
        
    double dOpenPrice;
        
    double dStop;
        
    double dTp 0;

        for(
    double nBar nRemoveFirst 1
            
    nBar ARRAY_SIZE(arrClose) - nRemoveFirst
            
    nBar nBar 1)
        {
            if(
    nType != 0)
            {
                
    bStop 0;
                
    double dClosedAt;
                
                
    // If BUY and stop loss or take profit reached
                
    if(nType == -&& (arrLow[nBar] <= dStop || 
                    (
    dTakeProfit 
                    
    && arrHigh[nBar] >= dTp dSpread)))
                {
                    
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                        
    arrBalance[ARRAY_SIZE(arrBalance) - 1
                        + 
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                    
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1
                        + 
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                    
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1]; 

                    
    bStop 1;
                    
    dClosedAt arrLow[nBar];
                }
                else
                {
                    if(
    nType == && (arrHigh[nBar] >= dStop dSpread ||
                        (
    dTakeProfit && arrLow[nBar] <= dTp)))
                    {
                        
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                            
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                            
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                            * 
    dLotSize;

                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                            
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1];

                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                            
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] + 
                            
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                            * 
    dLotSize;

                        
    bStop 1;
                        
    dClosedAt arrHigh[nBar];
                    }
                }

                if(
    bStop == 1)
                {
                    
    nType 0;
                    
    arrBars[ARRAY_SIZE(arrBars)] = nBar;
                }
            }

            
    double dDrawDown = (dCurrentMax 
                
    arrBalance[ARRAY_SIZE(arrBalance) - 1]) / dCurrentMax;
            
    dMaxDrawDown MAX(dMaxDrawDowndDrawDown);
            
    dCurrentMax MAX(dCurrentMaxarrBalance[
                
    ARRAY_SIZE(arrBalance) - 1]);

            if(
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] < -500 ||
                
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] < -500 ||
                
    dMaxDrawDown 0.2)
            {
                break 
    nBar;
            }

            if(
    nType != -&& 
                
    arrClvSmooth[nBar nOutLag] <= dBuyLevel && 
                
    arrClvSmooth[nBar nOutLag] >= dBuyLevel)
            {
                if(
    nType == 1)
                {
                    
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                        
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                        
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                        * 
    dLotSize;

                    
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] + 
                        
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                        * 
    dLotSize;

                    
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1];

                    
    arrBars[ARRAY_SIZE(arrBars)] = nBar;
                }

                
    dOpenPrice arrHigh[nBar];
                
    dStop dOpenPrice dStopLoss;
                
    dTp dOpenPrice dTakeProfit;
                
    nType = -1;
                
                
    nTradeNumber nTradeNumber 1;
                
    nTradeNumberBuy nTradeNumberBuy 1;
            }
            else
            {
                if(
    nType != && 
                    
    arrClvSmooth[nBar nOutLag] >= dSellLevel && 
                    
    arrClvSmooth[nBar nOutLag] <= dSellLevel)
                {
                    if(
    nType == -1)
                    {
                        
    arrBalance[ARRAY_SIZE(arrBalance)] =
                            
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                            
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] =
                            
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] + 
                            
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] =
                            
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1];

                        
    arrBars[ARRAY_SIZE(arrBars)] = nBar;
                    }

                    
    dOpenPrice arrLow[nBar];
                    
    dStop dOpenPrice dStopLoss;
                    
    dTp dOpenPrice dTakeProfit;
                    
    nType 1;
                    
                    
    nTradeNumber nTradeNumber 1;
                    
    nTradeNumberSell nTradeNumberSell 1;
                }
            }
        }

        
    // If at the end we have open positions, close them

        
    if(nType == 1)
        {
            
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                
    100 * (dOpenPrice arrHigh[nBar 1] - dSpread
                * 
    dLotSize;

            
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] + 
                
    100 * (dOpenPrice arrHigh[nBar 1] - dSpread
                * 
    dLotSize;

            
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1];

            
    arrBars[ARRAY_SIZE(arrBars)] = nBar 1;
        }
        else
        {
            if(
    nType == -1)
            {
                
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                    
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                        
    100 * (arrLow[nBar 1] - dOpenPrice
                        * 
    dLotSize;
        
                
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                    
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] + 
                    
    100 * (arrLow[nBar 1] - dOpenPrice) * dLotSize;
        
                
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                    
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1];
        
                
    arrBars[ARRAY_SIZE(arrBars)] = nBar 1;
            }
        }
    }
    // -------------------
    array CreateClv(double nInterval)
    {    
        PRINT(
    "%s\r\n""Creating CLV indicator");

        array 
    arrClv CREATE_ARRAY(0);
        array 
    arrPeriodLow CREATE_ARRAY(0);
        array 
    arrPeriodHigh CREATE_ARRAY(0);

        
    double nArraySize ARRAY_SIZE(arrClose);

        array 
    arrPeriodLow MVMIN(arrLownInterval);
        array 
    arrPeriodHigh MVMAX(arrHighnInterval);

        for(
    double i 0nInterval1
        {
            
    arrClv[i] = 0;
        }
        
        
    double dClose;
        
    double dLow;
        
    double dHigh;
        for(
    nIntervalnArraySize1)
        {
            
    dClose arrClose[i];
            
    dLow arrPeriodLow[i];
            
    dHigh arrPeriodHigh[i];

            
    // / 2 + 1 to confine to 0...1 instead of -1...1
            
    arrClv[i] = (((dClose dLow) - (dHigh dClose))
                / (
    dHigh dLow)) / 0.5
        }

        return 
    arrClv;



    الدالة chart()،سيتم تقسيمها القطعتين ( الرأس والذيل )
    وينبغي أن تكون مكتوبة على ملف XML مرة واحدة فقط ، ولذلك تم نقلها إلى الجزء الرئيسي من البرنامج.
    واستخدمنا أيضا عداد ،لحفظ الملفات بأسماء مختلفة ،معلومات الإعدادات المستخدمة في إنشاء شارت معين ،يتم كتابتها في رأس الصور ، حتى يسهل علينا التعرف على الشارت والإعدادات المستخدمة .
    وخيرا يتم حفظ الشارت الفائزة يعني التي تحتوي على أعلى رصيد نهائي مقارنة برصيد الإنطلاق
    *
    forex_nn_02.tsc, part5
    كود PHP:
    void Chart(strForexName)
    {
        
    string strProfitPath strImagePath 
            
    strForexName NUM2STR(nNetNum"%.0f") + ".png";    
        
        
    strXML strXML "\t<symbol>\r\n";
        
    strXML strXML "\t\t<symbol>\r\n";
        
    strXML strXML "\t\t\t" strForexName 
            
    NUM2STR(arrBalance[ARRAY_SIZE(arrBalance) - 1], 
                
    ", Profit: %f") +  
            
    NUM2STR(nTradeNumber", Number of trades: %.0f") +
            
    NUM2STR(dMaxDrawDown", Max. Drawdown: %f") +
            
    NUM2STR(nInterval", CLV: %.0f") +
            
    NUM2STR(nMa", MA: %.0f") +
            
    NUM2STR(nOutLag", Out.Lag: %.0f") +
            
    NUM2STR(dStopLoss", Stop: %f") +
            
    NUM2STR(dTakeProfit", TakeProfit: %f") +
            
    NUM2STR(dBuyLevel", Buy: %f") + 
            
    NUM2STR(dSellLevel", Sell: %f\r\n");

        
    strXML strXML "\t\t</symbol>\r\n";

        
    strXML strXML "\t\t" 
            
    SAVE_CHART(4005000strProfitPatharrBarsarrBalance);

        
    strXML strXML "\t</symbol>\r\n";


    نشغل السكريبت الآن (سيستغرق بغض الوقت للإنتهاء )،وسينتهي بإظهار صفحة XML تحتوي على شارت الإعدادات الفائزة:



    بعض النتائج جيدة ،ولكن بما اننا نستخدم بيانات من المستقبل ،فهذا البرنامج لن ينجح طويلا ، في الواقع ، اذا نظرتم الى وظيفة () TEST، ستلاحظ توقف الدورة قبل أن نصل إلى العنصر الأخير من arrClose :
    كود PHP:
    for(nBar nRemoveFirst 1nBar 
        
    ARRAY_SIZE(arrClose) - nRemoveFirst; ... 
    والسبب هو أننا لا نملك البيانات المستقبلية لإكمال عنصر الإغلاق الأخير
    ولكن بإمكاننا إستعمال الشبكة العصبية للتنبؤ بها ...

  6. #231
    الصورة الرمزية Ahmed Shihab
    Ahmed Shihab غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2009
    المشاركات
    496

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    بارك الله تعالى فيك وأعزك اخى أحمد وزادك من علمه وفضله

    الحمد لله تعالى على العودة الكريمة أخى الكريم

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

    تقبل كامل احترامى وتقديرى أخى الكريم

  7. #232
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

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

  8. #233
    الصورة الرمزية طربان
    طربان غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2008
    العمر
    53
    المشاركات
    9

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    لم اكمل قراءة الدروس ولكن مافهمت حتى الان كانك تقول
    (( ان اسكبرت هو من يقوم بالتحليل عنا ويدخل في الفرص المناسبة حسب تحليله السابق وفهمه للمعطيات ))

  9. #234
    الصورة الرمزية صاعقة الأرض
    صاعقة الأرض غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2009
    المشاركات
    146

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    اقتباس المشاركة الأصلية كتبت بواسطة طربان مشاهدة المشاركة
    لم اكمل قراءة الدروس ولكن مافهمت حتى الان كانك تقول
    (( ان اسكبرت هو من يقوم بالتحليل عنا ويدخل في الفرص المناسبة حسب تحليله السابق وفهمه للمعطيات ))
    تقصد إكسبرت وليس سكربت
    ونعم كلامك صحيح فهو يقوم بالدخول بناء على عدة معطيات تم تلقينها له سابقا وإنتظر الجواب من الأخ الفاضل

    منتظرينك وبارك الله فيك

  10. #235
    الصورة الرمزية ahmedfeki
    ahmedfeki غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    الإقامة
    تونس
    المشاركات
    506

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    ادماج الشبكة العصبية مع الاكسبيرت

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

    في هذا الدرس سنقوم بتجريب عدة تركيبات ومحاولات (شارت،وصف الخسارة ،جني الربح ، مستويات البيع والشراء ...إلخ )

    السكريبت أدناه يحتوي على بعض التعليقات ولكن يجب أن تحاولوا فاهمه بدون مساعدة خصوصا بعد هذا الكم الهائل من الأمثلة ودرس البرمجة التي مررنا بها في هذه الدورة:
    forex_nn_03.tsc

    كود PHP:

    void main
    ()
    {
        
    OUT_CLEANUP();

        
    string strImagePath 
            
    "c:\\S_Projects\\CortexPro\\data\\stocks_nn\\images\\";

        PRINT(
    "%s\r\n""Deleting image files...");

        
    array_s arrDirList 
            
    GET_DIR(strImagePath0"*.png");
        for(
    double n 0ARRAY_SIZE(arrDirList); 1)
        {
            
    F_UNLINK(arrDirList[n]);
        }

        
    string strForexName "EURUSD_H1";

        
    string strNnPath 
            
    "c:\\S_Projects\\CortexPro\\data\\stocks_nn\\nn\\";
        
    string strNnFileName strNnPath strForexName ".nn";

        PRINT(
    "%s\r\n""Deleting nn files...");

        
    array_s arrDirList 
            
    GET_DIR(strNnPath0"*.nn");
        for(
    double n 0ARRAY_SIZE(arrDirList); 1)
        {
            
    F_UNLINK(arrDirList[n]);
        }
        
        
    // ------------

        
    string strDataFileName 
            
    "c:\\S_Projects\\CortexPro\\data\\samples\\forex\\"
            
    strForexName ".TXT";
        
    string strLagFileName 
            
    "c:\\S_Projects\\CortexPro\\data\\stocks_nn\\forex\\"
            
    strForexName ".lgg";
        
        
    double bIsPathRelative 0;

        array     
    arrDate CREATE_ARRAY(0);
        array 
    arrTime CREATE_ARRAY(0);
        array 
    arrOpen CREATE_ARRAY(0);
        array 
    arrHigh CREATE_ARRAY(0);
        array 
    arrLow CREATE_ARRAY(0);
        array 
    arrClose CREATE_ARRAY(0);

        
    TABLE_LOADER(strDataFileNamebIsPathRelative0""
            
    0""0arrDate1arrTime2arrOpen3
            
    arrHigh4arrLow5arrClose);

        
    // Interval, Ma, OutLag 
        
    array_s arrParameters CREATE_ARRAY_S(0);
        
    arrParameters[0] = "24,4,2";
        
    arrParameters[1] = "24,4,3";
        
    arrParameters[2] = "24,7,2";
        
    arrParameters[3] = "24,7,3";
        
    arrParameters[4] = "24,7,4";
        
    arrParameters[5] = "32,4,2";
        
    arrParameters[6] = "32,4,3";
        
    arrParameters[7] = "32,7,4";
        
    arrParameters[8] = "48,7,8";

        array 
    arrClv;
        array 
    arrClvSmooth;

        
    double nNetNum 1;
        
    double nRemoveFirst 200;

        
    double dStopError 0;
        
    double nStopEpoch

        array 
    arrLags CREATE_ARRAY(0);
        
    array_s arrStrLags CREATE_ARRAY_S(0)

        
    // ATTN: These lags are based on nWinLag. 
        // Example: nWinLag = 1, then each number 
        // should be increased by 1
        
    arrStrLags[0] = 
            
    "18,0,1,2,3,4,6,8,12,14,16,20,24,28,32,40,48,56,64";
        
    arrStrLags[1] = 
            
    "20,0,1,2,3,4,6,8,12,14,16,20,24,28,32,50,70,90,110,130,150";

        array 
    arrBalance CREATE_ARRAY(0);
        array 
    arrBalanceBuy CREATE_ARRAY(0);
        array 
    arrBalanceSell CREATE_ARRAY(0);
        
        array 
    arrWinInterval CREATE_ARRAY(0);
        array 
    arrWinMa CREATE_ARRAY(0);

        array 
    arrWinLag CREATE_ARRAY(0);
        array 
    arrWinStopLoss CREATE_ARRAY(0);
        array 
    arrWinTakeProfit CREATE_ARRAY(0);

        array 
    arrWinBuyLevel CREATE_ARRAY(0);
        array 
    arrWinSellLevel CREATE_ARRAY(0);

        array 
    arrWinNeurons CREATE_ARRAY(0);
        
    array_s arrWinNnLags CREATE_ARRAY_S(0);
        array 
    arrWinProfit CREATE_ARRAY(0);
        array 
    arrWinProfitBuy CREATE_ARRAY(0);
        array 
    arrWinProfitSell CREATE_ARRAY(0);

        array 
    arrNn CREATE_ARRAY(0);

        array 
    arrStopLoss CREATE_ARRAY(0);
        
    arrStopLoss[0] = 0.005;
        
    arrStopLoss[1] = 0.0075;
        
    arrStopLoss[2] = 0.01;
        
    arrStopLoss[3] = 0.015;
        
    arrStopLoss[4] = 0.02;

        
    string strParam;
        
    string strToken;
        
    double nMa;
        
    double nOutLag;
        
    double hNn;
        
    double dBuyLevel;
        
    double dSellLevel;
        
    double nInterval;
        
    double nExtractRecords;

        
    double nCounter 0;
        
    double nSelectedCounter 0;
        
    double dExpectedCycles 
            
    ARRAY_SIZE(arrParameters) * ARRAY_SIZE(arrStrLags);

        for(
    double nParIdx 0nParIdx ARRAY_SIZE(arrParameters); 
            
    nParIdx nParIdx 1)
        {
            
    strParam arrParameters[nParIdx];
            
    strToken GET_TOKEN(strParam",");
            
    nInterval STR2NUM(strToken);

            
    arrClv CreateClv(nInterval);

            
    strToken GET_TOKEN(strParam",");
            
    nMa STR2NUM(strToken);

            
    arrClvSmooth EXP_MVAVG(arrClvnMa);

            
    strToken GET_TOKEN(strParam",");
            
    nOutLag STR2NUM(strToken);

            for(
    double nLagIdx 0nLagIdx ARRAY_SIZE(arrStrLags); 
                
    nLagIdx nLagIdx 1)
            {
                
    double nNumOfLags;
                
    string strLagBuf arrStrLags[nLagIdx];
                
    CreateLagFile(strLagBufnRemoveFirst);

                
    double nNeurons = (nNumOfLags 1) / 1;
                
    nStopEpoch nNeurons 1000;

                
    nCounter nCounter 1;
                
                
    NewNn(arrLagsdStopErrornStopEpochnNeurons);
                
    TeachNn();

                
    hNn OPEN_NN(strNnFileNamebIsPathRelative);
                
    APPLY_NN(hNnnExtractRecords1.01
                    
    arrClvSmootharrLags1arrNn);
                
    CLOSE_NN(hNn);

                
    OUT_CLEANUP();
                    
                for(
    double nStopIdx 0nStopIdx ARRAY_SIZE(arrStopLoss);
                    
    nStopIdx nStopIdx 1)
                {
                    
    double dStopLoss arrStopLoss[nStopIdx];

                    for(
    double dTakeProfit 0dTakeProfit <= 0.05
                    
    dTakeProfit dTakeProfit 0.01)
                    {
                        for(
    double nBuySellIdx 0nBuySellIdx 24
                            
    nBuySellIdx nBuySellIdx 1)
                        {
                            
    dBuyLevel 0.1 0.01 nBuySellIdx;
                            
    dSellLevel 0.9 0.01 nBuySellIdx;

                            PRINT(
    "%.0f"nCounter" of %.0f"
                                
    dExpectedCycles" (%.0f): "
                                
    nSelectedCounter"%.0f\r\n"nNetNum);

                            
    Test();

                            if(
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1
                                > 
    1000 
                                
    && arrBalanceSell[ARRAY_SIZE(arrBalanceSell
                                - 
    1] > 1000)
                            {
                                
    nSelectedCounter nSelectedCounter 1;

                                
    SaveWin();

                                
    double dBuyLevelTmp dBuyLevel;
                                
    double dSellLevelTmp dSellLevel;
                                        
                                
    dBuyLevel dBuyLevel 0.003;
                                
    dSellLevel dSellLevel 0.003;

                                
    Test();
                                if(
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy
                                    - 
    1] > 1000 
                                    
    && arrBalanceSell[ARRAY_SIZE(
                                        
    arrBalanceSell) - 1] > 1000)
                                {
                                    
    SaveWin();
                                }

                                
    dBuyLevel dBuyLevel 0.006;
                                
    dSellLevel dSellLevel 0.006;

                                
    Test();
                                if(
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy
                                    - 
    1] > 1000 
                                    
    && arrBalanceSell[ARRAY_SIZE(
                                        
    arrBalanceSell) - 1] > 1000)
                                {
                                    
    SaveWin();
                                }

                                
    dBuyLevel dBuyLevelTmp;
                                
    dSellLevel dSellLevelTmp;
                            }
                        }
                    }
                }
            }
        }

        
    Chart(strForexName);

        PRINT(
    "%s\r\n""Done");
    }

    // ----------------

    void Test()
    {
        
    nNetNum nNetNum 1;
        
        
    ARRAY_REMOVE(arrBalance, -1);
        
    arrBalance[0] = 1000;

        
    ARRAY_REMOVE(arrBalanceBuy, -1);
        
    arrBalanceBuy[0] = 1000;

        
    ARRAY_REMOVE(arrBalanceSell, -1);
        
    arrBalanceSell[0] = 1000;

        array 
    arrBars CREATE_ARRAY(0);
        
    arrBars[0] = 0;

        
    double dLotSize 100;        // 0.1 lot
        
    double nType 0;            // 1 buy, -1 sell, 0 - none

        
    double dSpread 0.0005;
        
    double bStop;
        
    double dMaxDrawDown 0;                // Max. Drawdown
        
    double dCurrentMax arrBalance[0];        // To calculate drawdown

        
    double nTradeNumber 0;
        
    double nTradeNumberBuy 0;
        
    double nTradeNumberSell 0;
        
    double dOpenPrice;
        
    double dStop;
        
    double dTp 0;

        for(
    double nBar nRemoveFirst 1
            
    nBar ARRAY_SIZE(arrClose) - nRemoveFirst
            
    nBar nBar 1)
        {
            if(
    nType != 0)
            {
                
    bStop 0;
                
    double dClosedAt;

                
    // If BUY and stop loss or take profit reached
                
    if(nType == -&& (arrLow[nBar] <= dStop 
                    
    || (dTakeProfit 
                    
    && arrHigh[nBar] >= dTp dSpread)))
                {
                    
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                        
    arrBalance[ARRAY_SIZE(arrBalance) - 1
                        + 
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                    
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1
                        + 
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                    
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1]; 

                    
    bStop 1;
                    
    dClosedAt arrLow[nBar];
                }
                else
                {
                    if(
    nType == && (arrHigh[nBar] >= dStop dSpread ||
                        (
    dTakeProfit && arrLow[nBar] <= dTp)))
                    {
                        
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                            
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                            
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                                * 
    dLotSize;

                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                            
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1];

                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                            
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] + 
                            
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                                * 
    dLotSize;

                        
    bStop 1;
                        
    dClosedAt arrHigh[nBar];
                    }
                }

                if(
    bStop == 1)
                {
                    
    nType 0;
                    
    arrBars[ARRAY_SIZE(arrBars)] = nBar;
                }
            }

            if(
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] < 500 ||
                
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] < 500)
            {
                break 
    nBar;
            }

            
    double dDrawDown = (dCurrentMax 
                
    arrBalance[ARRAY_SIZE(arrBalance) - 1]) / 1000
            
    dMaxDrawDown MAX(dMaxDrawDowndDrawDown);
            
    dCurrentMax MAX(dCurrentMax
                
    arrBalance[ARRAY_SIZE(arrBalance) - 1]);

            if(
    nType != -&& arrNn[nBar 1] <= dBuyLevel 
                
    && arrNn[nBar] >= dBuyLevel)
            {
                if(
    nType == 1)
                {
                    
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                        
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                        
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                        * 
    dLotSize;

                    
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] + 
                        
    100 * (dOpenPrice arrHigh[nBar] - dSpread
                        * 
    dLotSize;

                    
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1];

                    
    arrBars[ARRAY_SIZE(arrBars)] = nBar;
                }

                
    dOpenPrice arrHigh[nBar];
                
    dStop dOpenPrice dStopLoss;
                
    dTp dOpenPrice dTakeProfit;
                
    nType = -1;
                
                
    nTradeNumber nTradeNumber 1;
                
    nTradeNumberBuy nTradeNumberBuy 1;
            }
            else
            {
                if(
    nType != && arrNn[nBar 1] >= dSellLevel 
                    
    && arrNn[nBar] <= dSellLevel)
                {
                    if(
    nType == -1)
                    {
                        
    arrBalance[ARRAY_SIZE(arrBalance)] =
                            
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                            
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                        
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] =
                            
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] + 
                            
    100 * (arrLow[nBar] - dOpenPrice) * dLotSize;

                        
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] =
                            
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1];

                        
    arrBars[ARRAY_SIZE(arrBars)] = nBar;
                    }

                    
    dOpenPrice arrLow[nBar];
                    
    dStop dOpenPrice dStopLoss;
                    
    dTp dOpenPrice dTakeProfit;
                    
    nType 1;
                    
                    
    nTradeNumber nTradeNumber 1;
                    
    nTradeNumberSell nTradeNumberSell 1;
                }
            }
        }

        
    // If at the end we have open positions, close them

        
    if(nType == 1)
        {
            
    arrBalance[ARRAY_SIZE(arrBalance)] = 
            
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                
    100 * (dOpenPrice arrHigh[nBar 1] - dSpread
                * 
    dLotSize;

            
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] + 
                
    100 * (dOpenPrice arrHigh[nBar 1] - dSpread
                * 
    dLotSize;

            
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1];

            
    arrBars[ARRAY_SIZE(arrBars)] = nBar 1;
        }
        else
        {
            if(
    nType == -1)
            {
                
    arrBalance[ARRAY_SIZE(arrBalance)] = 
                    
    arrBalance[ARRAY_SIZE(arrBalance) - 1] + 
                    
    100 * (arrLow[nBar 1] - dOpenPrice) * dLotSize;
        
                
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy)] = 
                    
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] + 
                    
    100 * (arrLow[nBar 1] - dOpenPrice) * dLotSize;
        
                
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell)] = 
                    
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1];
        
                
    arrBars[ARRAY_SIZE(arrBars)] = nBar 1;

            }
        }

        if(
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] > 1000 &&
            
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] > 1000)
        {
            PRINT(
    "%.0f"nNetNum". Trades: %.0f"nTradeNumber
                
    " (B: %.0f"nTradeNumberBuy
                
    ", S: %.0f"nTradeNumberSell
                
    "), Balance: %f"arrBalance[ARRAY_SIZE(arrBalance) - 1], 
                
    " (%f"arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1], 
                
    ", %f)\r\n"arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1], 
                
    "\tI: %.0f"nInterval", Ma: %.0f"nMa", Out: %.0f"
                
    nOutLag
                
    ", Stop: %.4f"dStopLoss", Tp: %.4f\r\n"dTakeProfit
                
    "\tBuy: %.3f"dBuyLevel", Sell: %.3f"dSellLevel
                
    ", Neurons: %.0f"nNeurons", Lags: %s\r\n"strLagBuf);
        }
    }

    // ---------------

    array CreateClv(double nInterval)
    {    
        PRINT(
    "%s\r\n""Creating CLV indicator");

        array 
    arrClv CREATE_ARRAY(0);
        array 
    arrPeriodLow CREATE_ARRAY(0);
        array 
    arrPeriodHigh CREATE_ARRAY(0);

        
    double nArraySize ARRAY_SIZE(arrClose);

        array 
    arrPeriodLow MVMIN(arrLownInterval);
        array 
    arrPeriodHigh MVMAX(arrHighnInterval);

        for(
    double i 0nInterval1
        {
            
    arrClv[i] = 0;
        }
        
        
    double dClose;
        
    double dLow;
        
    double dHigh;
        for(
    nIntervalnArraySize1)
        {
            
    dClose arrClose[i];
            
    dLow arrPeriodLow[i];
            
    dHigh arrPeriodHigh[i];

            
    // / 2 + 1 to confine to 0...1 instead of -1...1
            
    arrClv[i] = (((dClose dLow) - (dHigh dClose))
                / (
    dHigh dLow)) / 0.5
        }

        return 
    arrClv;
    }

    // ----------------

    void SaveWin()
    {
        if(
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1] > 1000 
            
    && arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1] > 1000)
        {
            
    double nWinIdx ARRAY_SIZE(arrWinInterval);

            
    arrWinInterval[nWinIdx] = nInterval;
            
    arrWinMa[nWinIdx] = nMa;
            
    arrWinLag[nWinIdx] = nOutLag;         
            
    arrWinStopLoss[nWinIdx] = dStopLoss;
            
    arrWinTakeProfit[nWinIdx] = dTakeProfit;
            
    arrWinBuyLevel[nWinIdx] = dBuyLevel;
            
    arrWinSellLevel[nWinIdx] = dSellLevel;
            
    arrWinNeurons[nWinIdx] = nNeurons;
            
    arrWinNnLags[nWinIdx] = arrStrLags[nLagIdx];
            
    arrWinProfit[nWinIdx] = arrBalance[ARRAY_SIZE(arrBalance) - 1];
            
    arrWinProfitBuy[nWinIdx] = 
                
    arrBalanceBuy[ARRAY_SIZE(arrBalanceBuy) - 1];
            
    arrWinProfitSell[nWinIdx] = 
                
    arrBalanceSell[ARRAY_SIZE(arrBalanceSell) - 1];

            
    string strWinNnFileName strNnPath strForexName "_" 
                
    NUM2STR(nWinIdx"%.0f") + ".nn";    
            
    F_COPY(strNnFileNamestrWinNnFileName);
        }
    }

    // -----------------

    void CreateLagFile(string strLagsdouble nRemoveFirst)
    {
        
    double hFile F_OPEN(strLagFileName"wb");

        
    F_PRINT(hFile"%s""No,Clv");

        
    ARRAY_REMOVE(arrLags, -1);
        
    string strToken GET_TOKEN(strLags",");
        
    nNumOfLags STR2NUM(strToken);
        
        for(
    double i 0nNumOfLags1)
        {
            
    strToken GET_TOKEN(strLags",");
            
    arrLags[i] = STR2NUM(strToken) + nOutLag;
        }

        
    double nFullLag;
        for(
    0ARRAY_SIZE(arrLags); 1)
        {
            
    nFullLag arrLags[i];
            
    F_PRINT(hFile",ClvMa%.0f"nMa"-%.0f"nFullLag); 
        }

        
    F_PRINT(hFile"%s\r\n""");

        
    double nNum;
        for(
    nRemoveFirstARRAY_SIZE(arrClose); 1)
        {
            
    nNum nRemoveFirst 1;
            
    F_PRINT(hFile"%.0f"nNum",%f"arrClvSmooth[i]);     

            for(
    double j 0ARRAY_SIZE(arrLags); 1)
            {
                
    F_PRINT(hFile",%f"arrClvSmooth[arrLags[j]]);     
            }

            
    F_PRINT(hFile"%s\r\n""");
        }

        
    F_CLOSE(hFile);
    }

    // --------------

    void NewNn(array arrLagsdouble dStopError
        
    double nStopEpochdouble nNeuronsLayer2)
    {
        
    double nSkipBefore 0;
        
    double nSkipAfter 0;
        
    string strStartLine "";
        
    string strEndLine "";
        
    double bReverseArrays 0;

        
    // Inputs
        
    array arrInputColumns CREATE_ARRAY(0);
        
    array_s arrInputColumnNames CREATE_ARRAY_S(0);
        
        
    // 0  - Number, 1 - Clv, our input begins at column No 2

        
    for(double nInputCol 0nInputCol ARRAY_SIZE(arrLags); 
            
    nInputCol nInputCol 1
        {
            
    arrInputColumns[nInputCol] = nInputCol 2;
            
    arrInputColumnNames[nInputCol] = 
                
    "Clv-" NUM2STR(arrLags[nInputCol], "%.0f"); 
        }

        array 
    arrOutputColumns CREATE_ARRAY(0);
        
    arrOutputColumns[0] = 1;    // Clv

        
    array_s arrOutputColumnNames CREATE_ARRAY_S(0);
        
    arrOutputColumnNames[0] = "Clv";

        
    nExtractRecords 0.7 ARRAY_SIZE(arrClose);

        
    // To do: Modify if more than one indicator is used
        
    double nNeuronsLayer1 ARRAY_SIZE(arrLags);
    //  double nNeuronsLayer2 = 7;
        
    double nNeuronsLayer3 1;
        
    double nNeuronsLayer4 0;
        
    double nLayers 3
        
    double nActivation 0;
        
    double nAdjustRange 1.0;

        array 
    arrOutTabInputColumns CREATE_ARRAY(0);
        
    arrOutTabInputColumns[0] = 0;    // Number

        
    array_s arrOutTabInputColumnNames CREATE_ARRAY_S(0);
        
    arrOutTabInputColumnNames[0] = "No";

        array 
    arrOutTabOutputColumns CREATE_ARRAY(0);
        
    // Desired output and NN output will be added to the 
        // same list, right after inputs
        
    arrOutTabOutputColumns[0] = ARRAY_SIZE(arrLags) + 2;    
        
    arrOutTabOutputColumns[1] = ARRAY_SIZE(arrLags) + 3;

        
    array_s arrOutTabOutputColumnNames CREATE_ARRAY_S(0);
        
    arrOutTabOutputColumnNames[0] = "Clv"
        
    arrOutTabOutputColumnNames[1] = "NN: Clv" ;

        
    CREATE_NN(strNnFileNamebIsPathRelativestrLagFileName
            
    bIsPathRelativenSkipBeforenSkipAfterstrStartLine
            
    strEndLinebReverseArraysarrInputColumns
            
    arrInputColumnNamesarrOutputColumnsarrOutputColumnNames
            
    nExtractRecordsdStopErrornStopEpoch
            
    nNeuronsLayer1nNeuronsLayer2nNeuronsLayer3nNeuronsLayer4
            
    nLayersnActivationnAdjustRangearrOutTabInputColumns
            
    arrOutTabInputColumnNames,
            
    arrOutTabOutputColumnsarrOutTabOutputColumnNames);
    }

    // ----------------

    void TeachNn()
    {
        PRINT(
    "%s\r\n""Opening NN dialog, teaching the NN");

        
    double bStartLearning 1
        
    double bResumeScript 1;
        
    double bReset 1;

        
    OPEN_NN_FILE(strNnFileNamebIsPathRelative
            
    bStartLearningbResumeScriptbReset);
    }

    // -------------

    void Chart(strForexName)
    {
        PRINT(
    "%s\r\n""Processing winning configurations...");

        
    string strXML "<forex>\r\n";
        
    string strWinNnFileName;
            
        for(
    double nWin 0nWin ARRAY_SIZE(arrWinInterval); 
            
    nWin nWin 1
        {
            PRINT(
    "%.0f..."nWin);
            
            if(
    arrWinProfit[nWin] > 1000)
            {
                PRINT(
    " %s\r\n""accepted");
                
    nInterval arrWinInterval[nWin];
                
    nMa arrWinMa[nWin];
                
    nOutLag arrWinLag[nWin];
                
    dStopLoss arrWinStopLoss[nWin];
                
    dTakeProfit arrWinTakeProfit[nWin];
                
    dBuyLevel arrWinBuyLevel[nWin];
                
    dSellLevel arrWinSellLevel[nWin];
                
    strLagBuf arrWinNnLags[nWin];

                
    arrClv CreateClv(nInterval);
                
    arrClvSmooth EXP_MVAVG(arrClvnMa);

                
    CreateLagFile(strLagBufnRemoveFirst);

                
    strWinNnFileName strNnPath strForexName 
                    
    "_" NUM2STR(nWin"%.0f") + ".nn";

                
    hNn OPEN_NN(strWinNnFileNamebIsPathRelative);
                
    APPLY_NN(hNnnExtractRecords1.01arrClvSmooth
                    
    arrLags1arrNn);
                
    CLOSE_NN(hNn);

                
    nNetNum nWin 1;
                
    Test();
                
                
    string strImageFileName strImagePath 
                    
    strForexName "_" 
                    
    NUM2STR(nWin"%.0f") + ".png";    
                
                
    strXML strXML 
                    
    "\t<symbol>\r\n\t\t<symbol>\r\n";

                
    strXML strXML "Trades:" NUM2STR(nTradeNumber"%.0f")
                    + 
    "(Buy:" NUM2STR(nTradeNumberBuy"%.0f")
                    + 
    ",Sell:" NUM2STR(nTradeNumberSell"%.0f")
                    + 
    "),I:" NUM2STR(nInterval"%.0f")
                    + 
    ",Ma:" NUM2STR(nMa"%.0f")
                    + 
    ",Lag:" NUM2STR(nOutLag"%.0f")
                    + 
    ",Stop:" NUM2STR(dStopLoss"%.4f")
                    + 
    ",Tp:" NUM2STR(dTakeProfit"%.4f")
                    + 
    ",Buy:" NUM2STR(dBuyLevel"%.3f")
                    + 
    ",Sell:" NUM2STR(dSellLevel"%.3f")
                    + 
    ",Neurons:" NUM2STR(arrWinNeurons[nWin], "%.0f")
                    + 
    ",Nn Lags:" strLags
                    
    ",Balance:" NUM2STR(arrWinProfit[nWin], "%f")
                    + 
    ",Balance long:" 
                        
    NUM2STR(arrWinProfitBuy[nWin], "%f")
                    + 
    ",Balance short:" 
                        
    NUM2STR(arrWinProfitSell[nWin], "%f\r\n");

                
    strXML strXML "\t\t</symbol>\r\n";

                
    strXML strXML "\t\t" SAVE_CHART(4003000
                    
    strImageFileName
                    
    arrBarsarrBalancearrBalanceBuyarrBalanceSell);
                
    strXML strXML "\t</symbol>\r\n";
            }
            else
            {
                PRINT(
    " %s\r\n""rejected");
            }
        }

        
    strXML strXML "</forex>\r\n";
        
    SAVE_XML(strImagePath"chart_forex_nn"
            
    "chart_forex_nn""root"strXML);
        
    SHOW_XML(strImagePath "chart_forex_nn.xml");

    سيستغرق البرنامج وقت طويل للعمل ،وستكون النتيجة قائمة طويلة من الشارتات ،والتي سنختار منها واحدة حسب نسبة الصفقات الرابحة والخاسرة وعدة معايير
    وهذا مثال من الشارت :


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

  11. #236
    الصورة الرمزية ahmedfeki
    ahmedfeki غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    الإقامة
    تونس
    المشاركات
    506

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

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

    أعلم أن هناك من يتابع الدورة نوعان من الأعضاء :
    * الأول هدفه تعليمي ، معتبرا الدورة مفتاح أو خيط يفتح له طريق ينتهي إن شاء الله بأكسبيرت ناجح بعد جهد وبحث وعامل
    *الثاني : يتابع الدورة من حين إلى أخر منتظر آخر مشاركة مني ،واللتي يتوقع ستكون اكسبيرت ناجح

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

    واريد أن أقول لثاني : يا أخي الكريم ، لا يوجد اكسبرت ناجح بدون خبرة وعلم صاحبه ، فلو تأملت في أي اكسبرت نجاح في السوق يعتمد على الشبكة العصبية ك (FABTURBO أو MEGADROID )
    فقد تعب اصحابها سنوات عديدة حتى توصلوا إليها ولا تعتقد بشرائك اكسبرت من هذه ستنجح ، لا ، فهم لن يبيعون سنوات العمل والدراسة بدولارات قليلة ، فهذه الإكسبرتات تعمل لفترة معينة وتنجح لفترة محدودة ثم تصبح غير صالحة ، حتى تشتري أخرى (وقد ذكرت سابقا سر هذه الإكسبرتات )
    فارجوك أخي الكريم أن توفر وقتك في الدراسة والبحث عوضا عن إنتظار الخبز البارد


    تقبلوا ودي واحترامي وشكرا للأستاذ MR.DOLLAR على دعمه للموضوع

  12. #237
    الصورة الرمزية njjar
    njjar غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Dec 2005
    الإقامة
    فلسطين
    المشاركات
    629

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    جزاك الله كل خيرا اخي الكريم ونتمنى لك التوفيق

  13. #238
    الصورة الرمزية mouadh_stam
    mouadh_stam غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2009
    المشاركات
    457

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    مواصل معك أخي أحمد

    و سعيد بعودتك للموضوع

  14. #239
    الصورة الرمزية bolbol911
    bolbol911 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2008
    الإقامة
    الجزائر
    العمر
    40
    المشاركات
    1,037

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    وفقك الله اخي الكريم
    متابعين معك باهتمام وباذن الله سيتم مراجعة الدروس عاجلا

  15. #240
    الصورة الرمزية raidy
    raidy غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2010
    الإقامة
    تعز - اليمن
    المشاركات
    736

    افتراضي رد: ๑۩۞۩๑( على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية )๑۩۞۩๑

    بارك الله فيك وزادك الله من فضله ، تابعت الموضوع ولم افهم شي
    والعيب بي أنا لأني لا افهم المعادلات ، واتمنى لك التوفيق
    وبانتظار النهاية

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

المواضيع المتشابهه

  1. ๑۩۞۩๑ فكرة مجنونة للمناقشة ۞ لأننى عايز الشارت يكلمنى ههههه ๑۩۞۩๑
    By MAMDOH111 in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 11
    آخر مشاركة: 08-03-2010, 01:46 AM
  2. مشاركات: 14
    آخر مشاركة: 27-02-2010, 12:32 AM
  3. مشاركات: 0
    آخر مشاركة: 25-02-2010, 06:14 PM
  4. مشاركات: 744
    آخر مشاركة: 16-12-2008, 05:13 AM

الاوسمة لهذا الموضوع


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