صفحة 7 من 13 الأولىالأولى 12345678910111213 الأخيرةالأخيرة
النتائج 91 إلى 105 من 192
  1. #91
    الصورة الرمزية turkm
    turkm غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    المشاركات
    1,626

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Ram22 مشاهدة المشاركة
    ابدأ من المشاركة 20 وستجد فكرة أستعمال المؤشرات مع الأكسبرت موجودة ولكي تعمل هيدج عندما تخسر الصفقة فأنت تحتاج أن تقرأ الصفقات السابقة وتعرف نوعها وتعرف هل خسرت أم ربحت
    وتستطيع أن تعرف هل الصفقة الأخيرة ربحت أم خسرت من الكود


    كود:
     
    int DDProfit() { int w = 0; int History = OrdersHistoryTotal(); OrderSelect(History-1, SELECT_BY_POS, MODE_HISTORY); if ( OrderSymbol() == Symbol() && OrderProfit() < 0.0) w=1; if (OrderSymbol() == Symbol() &&OrderProfit() > 0.0) w=2; return (w); }
    فلو وجدت الدالة تعطيك الرقم 1 يعني خسرت ولو أعطتك الرقم 2 ربحت
    ويمكنك أن تعرف نوعها من الدالة
    كود:
    int DDType() { int G = 0; int History = OrdersHistoryTotal(); OrderSelect(History-1, SELECT_BY_POS, MODE_HISTORY); if ( OrderSymbol() == Symbol() &&OrderType()==OP_BUY) G=1; if (OrderSymbol() == Symbol() &&OrderType()==OP_SELL) G=2; return (G); }
    لو أعطتك الدالة 1 يعني شراء ولو أعطتك 2 يعني بيع
    وبعد ذلك تستطيع أن تستخدم الأفكار السابقة من GlobalVariable وطريقة كتابة الشروط والحلقات والمصفوفات وتجمع الأفكار مع بعض ومع التجربة تعمل الأكسبرت الذي تريد أن شاء الله
    مشكور مشكور مشكور لا توفيك حقك يا استاذ لذلك اكتفي بالله يجزيك عنا كل خير
    اخي الكريم انا مبرمج جيد بالـ ++C والفيجوال بيسك والحمدلله لكن اجد هنا احيانا بعض الصعوبة وانا جديد على هذه اللغة الجميلة خصوصا وانني احاول نقل كود مؤشر والاستغناء عنه وتحويل كوداته الى دالة داخل الاكسبيرت لان ذلك سيخفف على الكثير من ضياع الذاكرة الوهمية خصوصا مع استدعاء iCustom بشكل متكرر
    فالمشكلة الرئيسية التي تواجهني ان داخل المؤشر هناك مجموعة من المصفوفات وعندما كنت اضع المصفوفة داخل امر كومنت من داخل المؤشر كنت اجد قيم المصفوفات على شاشة الشارت لكن عندما نقلت الكود للاكسبيرت طبعا مع القيام ببعض التعديلات هنا وهناك لم تعد المصفوفات تاخذ اي قيمة فقط صفر على الشارت وحاولت وحاولت لكنني على يقين ان الخطأ الذي وقعت به انما هو صغير جدا لنه غير لي جميع نتائجي فارجو من حضرتكم المشورة واذا تفضلت اخي الكري واعطيتني القليل من وقتك اقوم بارسال ملف الكسبيرت فقط اريد ان ترجع خمس مصفوفات لاعطاء الارقام فقط
    ولكم جزيل الشكر

  2. #92
    الصورة الرمزية thecreativex
    thecreativex غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2008
    الإقامة
    مصر
    المشاركات
    1,320

    افتراضي

    بصراحه موضوع مميز جدا جدا جدا
    و اتمنى منك شرح ملفات الdll و البرمجه العصبيه و باقى الحاجات
    صدقنى مش شرط خالص الناس المتابعه تكتب فى ناس كتير بتستفيد بس مش شرط تشارك فى الموضوع و فى ناس حتى مش فى المنتدى نفسه
    و شكرا على الموضوع

  3. #93
    الصورة الرمزية Ram22
    Ram22 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2011
    المشاركات
    354

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة turkm مشاهدة المشاركة
    مشكور مشكور مشكور لا توفيك حقك يا استاذ لذلك اكتفي بالله يجزيك عنا كل خير
    اخي الكريم انا مبرمج جيد بالـ ++C والفيجوال بيسك والحمدلله لكن اجد هنا احيانا بعض الصعوبة وانا جديد على هذه اللغة الجميلة خصوصا وانني احاول نقل كود مؤشر والاستغناء عنه وتحويل كوداته الى دالة داخل الاكسبيرت لان ذلك سيخفف على الكثير من ضياع الذاكرة الوهمية خصوصا مع استدعاء iCustom بشكل متكرر
    فالمشكلة الرئيسية التي تواجهني ان داخل المؤشر هناك مجموعة من المصفوفات وعندما كنت اضع المصفوفة داخل امر كومنت من داخل المؤشر كنت اجد قيم المصفوفات على شاشة الشارت لكن عندما نقلت الكود للاكسبيرت طبعا مع القيام ببعض التعديلات هنا وهناك لم تعد المصفوفات تاخذ اي قيمة فقط صفر على الشارت وحاولت وحاولت لكنني على يقين ان الخطأ الذي وقعت به انما هو صغير جدا لنه غير لي جميع نتائجي فارجو من حضرتكم المشورة واذا تفضلت اخي الكري واعطيتني القليل من وقتك اقوم بارسال ملف الكسبيرت فقط اريد ان ترجع خمس مصفوفات لاعطاء الارقام فقط
    ولكم جزيل الشكر
    أنا لا أستطيع أن أفهم ماذا حصل الا لو كتبت كود المؤشر وكود الأكسبرت الذي عدلته كي أحاول أن أعرف الخلل.
    اقتباس المشاركة الأصلية كتبت بواسطة thecreativex مشاهدة المشاركة
    بصراحه موضوع مميز جدا جدا جدا
    و اتمنى منك شرح ملفات الdll و البرمجه العصبيه و باقى الحاجات
    صدقنى مش شرط خالص الناس المتابعه تكتب فى ناس كتير بتستفيد بس مش شرط تشارك فى الموضوع و فى ناس حتى مش فى المنتدى نفسه
    و شكرا على الموضوع
    أنا أختلف معك علي هذه النقطة لأنه يوجد فرق كبير بين موضوع علي المنتدي الهدف منه التجارب والتعلم وبين كتاب ويوجد كتب جاهزة علي المواضيع التي ذكرتها موجودة علي النت ولكنها بدون تجارب وأنا ايضا أتعلم من التجارب علي أجهزة أخري وعلي بروكرات أخري يعني مثلا عندما يعمل مؤشر مثلا علي بروكر ويأتي واحد ويقول هو لم يعمل علي بروكري فأعرف أنه توجد بروكرات خمس وأربع أرقام مثلا وممكن يعمل علي هذا ولا يعمل علي ذلك وبدون تجارب سيكون الموضوع كتاب وأنا لا أريده أن يكون كتاب فتوجد كتب أفضل منه ولكني أريد تجارب.

  4. #94
    الصورة الرمزية turkm
    turkm غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    المشاركات
    1,626

    افتراضي

    [QUOTE=Ram22;2276036]أنا لا أستطيع أن أفهم ماذا حصل الا لو كتبت كود المؤشر وكود الأكسبرت الذي عدلته كي أحاول أن أعرف الخلل.

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

  5. #95
    الصورة الرمزية turkm
    turkm غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    المشاركات
    1,626

    افتراضي

    اخي الكريم مامشي الحال معي ورح امشي معك بالتفصيل شو هي المشكل:
    اولا عملت دالة اسمها timing وجواتها في مصفوفات بعد ماتعمل الدالة بعض الحسابات وتضيف هالقيم للمصفوفات وضعت كومنت لحتى اعرف قيمة بس وحدة من هالمصفوفات لكن للاسف فقط القيمة صفر على الشاشة وهاد كود الدالة
    كود PHP:
    void timing() 
    {
       
    double ld_12;
       
    double ld_20;
       
    double ld_28;
       for (
    int i_1 0i_1 Barsi_1++) {
          
    ld_12 0;
          for (
    int i_2 i_1i_2 NumBars i_1i_2++) ld_12 += (High[i_2] + Low[i_2]) / 2.0;
          
    ld_20 ld_12 NumBars;
          
    ld_12 0;
          for (
    i_2 i_1i_2 NumBars i_1i_2++) ld_12 += High[i_2] - Low[i_2];
          
    ld_28 0.2 * (ld_12 NumBars);
          
    g_ibuf_80[i_1] = (High[i_1] - ld_20) / ld_28;
          
    g_ibuf_92[i_1] = (Low[i_1] - ld_20) / ld_28;
          
    g_ibuf_84[i_1] = (Open[i_1] - ld_20) / ld_28;
          
    g_ibuf_88[i_1] = (Close[i_1] - ld_20) / ld_28;
          
    Comment(DoubleToStr(g_ibuf_80[i_1],5),"        ",Bars); 
       }

    وحتى اني لغيت امر DoubleToStr لكن بدون اي فائدة اخي الكريم لو تتكرم علي وتعطيني الكود المعدل يلي برجعلي قيمة هالمصفوفة لحتى اقدر استفيد منو ضمن الجسم الرئيسي

    وهي صورة التشارت وقيمة المصفوفة صفر مثل مابتشوف على الشاشة
    وجزاك الله عني كل خير
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة nnnn.gif‏  

  6. #96
    الصورة الرمزية turkm
    turkm غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    المشاركات
    1,626

    افتراضي

    اخي الكريم كمان نفس المشكلة مع الدالة سلس سميتها RSX
    وانا وضعت لك المصفوفة المراد اظهار قيمتها داخل خطين من اشارات ++++++++++++++++++++
    وممكن تقلي لازم يتم تعريف المصفوفات في بداية الاكسبيرت طبعا عملت التغيير بس ماظهرت اي قيم فقط صفر
    وممكن تقلي القيمة المسندة لها تساي فعلا الصفر منشان هيك عملت كومنت تماما بعد سطر المصفوفة ووضعت داخل الكومنت اسم المصفوفة ثم القيمة الاخري بنفس الكومنت هي نفس القيمة المسندة للمصفوفة ورح تشوف انو بالصورة ظهرت قيمة المعادلة التي اسندت للمصفوفة ولكن قيمة المصفوفة لاحياة لمن تنادي قيمتها صفر فارجو منك المساعدة اخي العزيز جزاك الله عني كل خير وبتركك مع الكود والصورة وناااااااااااااااااااااااطرك على نار يا استاذنا
    كود PHP:
    void  RSX(int rsxPeriod)
    {

    #define wuBuffer 13
    #define wdBuffer 14

       
    double rsx_Blue_indecator[];
       
    double rsxDa[];
       
    double rsxDb[];
       
    double rsx_Yellow_indecator[];
       
    double rsx_Magenta_indecator[];
       
    double rsx_Up_indecator[];
       
    double rsx_Down_indecator[];
       
    double trend[];
       
    double wrkBuffer[][15];
       
       
       
    int TmaHalfLength MathMax(12,1);
       
    double FullLength 2.0*TmaHalfLength+1.0;
       
    int counted_bars=IndicatorCounted();
       
    int i,j,k,r,limit;
       
       
    //if(counted_bars<0) return(-1);
       
    if(counted_bars>0counted_bars--;
       
    limit MathMin(Bars-1,Bars-counted_bars+TmaHalfLength);
       if (
    ArrayRange(wrkBuffer,0) != BarsArrayResize(wrkBuffer,Bars);

       
    double Kg = (3.0)/(2.0+14);
       
    double Hg 1.0-Kg;
       
       for(
    i=limitr=Bars-i-1i>=0i--, r++)
       {
          
    wrkBuffer[r][TmaHalfLength] = iMA(NULL,rsxPeriod,1,0,MODE_SMA,0,i);
          if (
    i==(Bars-1)) { for (int c=0c<TmaHalfLengthc++) wrkBuffer[r][c] = 0; continue; }  

          
    double roc wrkBuffer[r][TmaHalfLength]-wrkBuffer[r-1][TmaHalfLength];
          
    double roa MathAbs(roc);
          for (
    k=0k<3k++)
          {
             
    int kk k*2;
                
    wrkBuffer[r][kk+0] = Kg*roc                Hg*wrkBuffer[r-1][kk+0];
                
    wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; roc 1.5*wrkBuffer[r][kk+0] - 0.5 wrkBuffer[r][kk+1];
                
    wrkBuffer[r][kk+6] = Kg*roa                Hg*wrkBuffer[r-1][kk+6];
                
    wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; roa 1.5*wrkBuffer[r][kk+6] - 0.5 wrkBuffer[r][kk+7];
          }
          if (
    roa != 0
          {     
    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                
    rsx_Blue_indecator[i] = MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00);
                
    Comment(rsx_Blue_indecator[i],"      ",MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00));
          }     
    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
          
    else  rsx_Blue_indecator[i] = 50.0;
       }
       
       for (
    i=limiti>=0i--) rsx_Yellow_indecator[i] = iMAOnArray(rsx_Blue_indecator,0,5,0,MODE_SMA,i);


       if (
    trend[limit] == -1ClearPoint(limit,rsxDa,rsxDb);
       for(
    i=limitr=Bars-i-1i>=0i--, r++)
       {
          
    rsxDa[i] = EMPTY_VALUE;
          
    rsxDb[i] = EMPTY_VALUE;
          
    trend[i] = trend[i+1];
          if (
    rsx_Blue_indecator[i]>rsx_Yellow_indecator[i]) trend[i] =  1;
          if (
    rsx_Blue_indecator[i]<rsx_Yellow_indecator[i]) trend[i] = -1;
          if (
    trend[i] == -1PlotPoint(i,rsxDa,rsxDb,rsx_Blue_indecator);
          if (
    TmaApplyTo==0)
             
    double price rsx_Blue_indecator[i];
          else      
    price rsx_Yellow_indecator[i];
          
             
    double sum  = (TmaHalfLength+1)*price;
             
    double sumw = (TmaHalfLength+1);
             for(
    j=1k=TmaHalfLengthj<=TmaHalfLengthj++, k--)
             {
                if (
    TmaApplyTo==0)               
                      
    sum  += k*rsx_Blue_indecator[i+j];
                else  
    sum  += k*rsx_Yellow_indecator[i+j];
                
    sumw += k;

                if (
    j<=i)
                {
                   if (
    TmaApplyTo==0)               
                         
    sum  += k*rsx_Blue_indecator[i-j];
                   else  
    sum  += k*rsx_Yellow_indecator[i-j];
                   
    sumw += k;
                }
             }
             
    rsx_Magenta_indecator[i] = sum/sumw;
                
             
    double diff price-rsx_Magenta_indecator[i];
                if (
    i> (Bars-TmaHalfLength-2)) continue;
                if (
    i==(Bars-TmaHalfLength-2))
                {
                   
    rsx_Up_indecator[i] = rsx_Magenta_indecator[i];
                   
    rsx_Down_indecator[i] = rsx_Magenta_indecator[i];
                   if (
    diff>=0)
                      {
                         
    wrkBuffer[r][13] = MathPow(diff,2);
                         
    wrkBuffer[r][14] = 0;
                      }
                   else
                      {               
                         
    wrkBuffer[r][14] = MathPow(diff,2);
                         
    wrkBuffer[r][13] = 0;
                      }                  
                   continue;
                }

             
    wrkBuffer[r][13] = wrkBuffer[r-1][13];
             
    wrkBuffer[r][14] = wrkBuffer[r-1][14];
                if(
    diff>0)
                {
                   
    wrkBuffer[r][13] = (wrkBuffer[r-1][13]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   
    wrkBuffer[r][14] =  wrkBuffer[r-1][14]*(FullLength-1)/FullLength;
                }
                if(
    diff<0)
                {
                   
    wrkBuffer[r][14] = (wrkBuffer[r-1][14]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   
    wrkBuffer[r][13] =  wrkBuffer[r-1][13]*(FullLength-1)/FullLength;
                }
             
    rsx_Up_indecator[i] = rsx_Magenta_indecator[i] + 2.8*MathSqrt(wrkBuffer[r][13]);
             
    rsx_Down_indecator[i] = rsx_Magenta_indecator[i] - 2.8*MathSqrt(wrkBuffer[r][14]);
             
    /*
             rsx_Blue = rsx_Blue_indecator[1];
             rsx_Yellow = rsx_Yellow_indecator[1];
             rsx_Magenta = rsx_Magenta_indecator[1];
             rsx_Up = rsx_Up_indecator[1];
             rsx_Down = rsx_Down_indecator[1];  */
       
    }

    انا عارف انو في دالتين بتناديهن الدالة RSX وهدول هنا تفضل:

    كود PHP:
    void ClearPoint(int i,doublefirst[],doublesecond[])
    {
       if ((
    second[i]  != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
            
    second[i+1] = EMPTY_VALUE;
       else
          if ((
    first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
              
    first[i+1] = EMPTY_VALUE;
    }


    void PlotPoint(int i,doublefirst[],doublesecond[],doublefrom[])
    {
       if (
    first[i+1] == EMPTY_VALUE)
          {
          if (
    first[i+2] == EMPTY_VALUE) {
              
    first[i]    = from[i];
              
    first[i+1]  = from[i+1];
              
    second[i]   = EMPTY_VALUE;
             }
          else {
              
    second[i]   = from[i];
              
    second[i+1] = from[i+1];
              
    first[i]    = EMPTY_VALUE;
             }
          }
       else
          {
             
    first[i]   = from[i];
             
    second[i]  = EMPTY_VALUE;
          }

    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة vvvv.gif‏  

  7. #97
    الصورة الرمزية Ram22
    Ram22 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2011
    المشاركات
    354

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة turkm مشاهدة المشاركة
    اخي الكريم مامشي الحال معي ورح امشي معك بالتفصيل شو هي المشكل:
    اولا عملت دالة اسمها timing وجواتها في مصفوفات بعد ماتعمل الدالة بعض الحسابات وتضيف هالقيم للمصفوفات وضعت كومنت لحتى اعرف قيمة بس وحدة من هالمصفوفات لكن للاسف فقط القيمة صفر على الشاشة وهاد كود الدالة
    كود PHP:
    void timing() 
    {
       
    double ld_12;
       
    double ld_20;
       
    double ld_28;
       for (
    int i_1 0i_1 Barsi_1++) {
          
    ld_12 0;
          for (
    int i_2 i_1i_2 NumBars i_1i_2++) ld_12 += (High[i_2] + Low[i_2]) / 2.0;
          
    ld_20 ld_12 NumBars;
          
    ld_12 0;
          for (
    i_2 i_1i_2 NumBars i_1i_2++) ld_12 += High[i_2] - Low[i_2];
          
    ld_28 0.2 * (ld_12 NumBars);
          
    g_ibuf_80[i_1] = (High[i_1] - ld_20) / ld_28;
          
    g_ibuf_92[i_1] = (Low[i_1] - ld_20) / ld_28;
          
    g_ibuf_84[i_1] = (Open[i_1] - ld_20) / ld_28;
          
    g_ibuf_88[i_1] = (Close[i_1] - ld_20) / ld_28;
          
    Comment(DoubleToStr(g_ibuf_80[i_1],5),"        ",Bars); 
       }

    وحتى اني لغيت امر DoubleToStr لكن بدون اي فائدة اخي الكريم لو تتكرم علي وتعطيني الكود المعدل يلي برجعلي قيمة هالمصفوفة لحتى اقدر استفيد منو ضمن الجسم الرئيسي

    وهي صورة التشارت وقيمة المصفوفة صفر مثل مابتشوف على الشاشة
    وجزاك الله عني كل خير

    لو وضعت هذا الكود لوحده فأكيد لن يظهر رقم لأنه ناقص وتوجد به أشياء مجهولة, أنا جربته ووجدت أشياء ناقصة فلو تضع المؤشر الأصلي يكون أفضل
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة yyy.GIF‏  

  8. #98
    الصورة الرمزية turkm
    turkm غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    المشاركات
    1,626

    افتراضي

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

    لو وضعت هذا الكود لوحده فأكيد لن يظهر رقم لأنه ناقص وتوجد به أشياء مجهولة, أنا جربته ووجدت أشياء ناقصة فلو تضع المؤشر الأصلي يكون أفضل
    تفضل يا استاذي هاد هو المؤشر الاصلي كامل وشكرا على تجاوبك السريع:
    كود PHP:
    #property copyright ""
    #property link      ""

    #property indicator_separate_window
    #property indicator_minimum -13.0
    #property indicator_maximum 13.0
    #property indicator_buffers 4

    #property indicator_color1 Black
    #property indicator_color2 Black
    #property indicator_color3 Black
    #property indicator_color4 Black
    #property indicator_width1 1
    #property indicator_width2 1
    #property indicator_width3 1
    #property indicator_width4 1

    #property indicator_levelcolor Gold
    #property indicator_levelstyle 2

    #property indicator_level1 4.0
    #property indicator_levelcolor1 Gold
    #property indicator_level2 8.0
    #property indicator_levelcolor2 Gold
    #property indicator_level3 12.0
    #property indicator_levelcolor3 Gold
    #property indicator_level4 -4.0
    #property indicator_levelcolor4 Gold
    #property indicator_level5 -8.0
    #property indicator_levelcolor5 Gold
    #property indicator_level6 -12.0
    #property indicator_levelcolor6 Gold
    #property indicator_level7 0
    #property indicator_levelcolor7 Gold


    extern int NumBars 5;
    double g_ibuf_80[];
    double g_ibuf_84[];
    double g_ibuf_88[];
    double g_ibuf_92[];

    int init() {
       
    SetIndexStyle(0DRAW_NONE);
       
    SetIndexBuffer(0g_ibuf_80);
       
    SetIndexStyle(1DRAW_NONE);
       
    SetIndexBuffer(1g_ibuf_92);
       
    SetIndexStyle(2DRAW_NONE);
       
    SetIndexBuffer(2g_ibuf_84);
       
    SetIndexStyle(3DRAW_NONE);
       
    SetIndexBuffer(3g_ibuf_88);
       
    IndicatorShortName(" ********** TIMING    ");
       return (
    0);
    }

    int deinit() {
       
    Comment("");
       return (
    0);
    }

    int start() {
       
    double ld_12;
       
    double ld_20;
       
    double ld_28;
       
    string l_name_44;
       
    string l_name_52;
       
    string ls_0 " ********** TIMING    ";
       
    int li_8 WindowFind(ls_0);
       for (
    int l_index_40 0l_index_40 Barsl_index_40++) {
          
    ld_12 0;
          for (
    int l_index_36 l_index_40l_index_36 NumBars l_index_40l_index_36++) ld_12 += (High[l_index_36] + Low[l_index_36]) / 2.0;
          
    ld_20 ld_12 NumBars;
          
    ld_12 0;
          for (
    l_index_36 l_index_40l_index_36 NumBars l_index_40l_index_36++) ld_12 += High[l_index_36] - Low[l_index_36];
          
    ld_28 0.2 * (ld_12 NumBars);
          
    g_ibuf_80[l_index_40] = (High[l_index_40] - ld_20) / ld_28;
          
    g_ibuf_92[l_index_40] = (Low[l_index_40] - ld_20) / ld_28;
          
    g_ibuf_84[l_index_40] = (Open[l_index_40] - ld_20) / ld_28;
          
    g_ibuf_88[l_index_40] = (Close[l_index_40] - ld_20) / ld_28;
       }
       
    Sleep(1000);
       
    ObjectsDeleteAll(li_8);
       for (
    l_index_36 0l_index_36 <= Barsl_index_36++) {
          
    l_name_44 "TimingHL" l_index_36;
          
    ObjectCreate(l_name_44OBJ_TRENDli_8Time[l_index_36], g_ibuf_80[l_index_36], Time[l_index_36], g_ibuf_92[l_index_36]);
          
    ObjectSet(l_name_44OBJPROP_STYLESTYLE_SOLID);
          
    ObjectSet(l_name_44OBJPROP_RAYFALSE);
          
    ObjectSet(l_name_44OBJPROP_WIDTH1);
          
    l_name_52 "TimingOC" l_index_36;
          
    ObjectCreate(l_name_52OBJ_TRENDli_8Time[l_index_36], g_ibuf_84[l_index_36], Time[l_index_36], g_ibuf_88[l_index_36]);
          
    ObjectSet(l_name_52OBJPROP_STYLESTYLE_SOLID);
          
    ObjectSet(l_name_52OBJPROP_RAYFALSE);
          
    ObjectSet(l_name_52OBJPROP_WIDTH3);
          if (
    Open[l_index_36] <= Close[l_index_36]) {
             
    ObjectSet(l_name_44OBJPROP_COLORGreen);
             
    ObjectSet(l_name_52OBJPROP_COLORGreen);
          } else {
             
    ObjectSet(l_name_44OBJPROP_COLORRed);
             
    ObjectSet(l_name_52OBJPROP_COLORRed);
          }
       }
       
    ObjectCreate("actual_VCharte"OBJ_HLINEli_80g_ibuf_88[0]);
       
    ObjectSet("actual_Vcharte"OBJPROP_COLORBlue);
       return (
    0);


  9. #99
    الصورة الرمزية Ram22
    Ram22 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2011
    المشاركات
    354

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة turkm مشاهدة المشاركة
    اخي الكريم كمان نفس المشكلة مع الدالة سلس سميتها RSX
    وانا وضعت لك المصفوفة المراد اظهار قيمتها داخل خطين من اشارات ++++++++++++++++++++
    وممكن تقلي لازم يتم تعريف المصفوفات في بداية الاكسبيرت طبعا عملت التغيير بس ماظهرت اي قيم فقط صفر
    وممكن تقلي القيمة المسندة لها تساي فعلا الصفر منشان هيك عملت كومنت تماما بعد سطر المصفوفة ووضعت داخل الكومنت اسم المصفوفة ثم القيمة الاخري بنفس الكومنت هي نفس القيمة المسندة للمصفوفة ورح تشوف انو بالصورة ظهرت قيمة المعادلة التي اسندت للمصفوفة ولكن قيمة المصفوفة لاحياة لمن تنادي قيمتها صفر فارجو منك المساعدة اخي العزيز جزاك الله عني كل خير وبتركك مع الكود والصورة وناااااااااااااااااااااااطرك على نار يا استاذنا
    كود PHP:
    void  RSX(int rsxPeriod)
    {

    #define wuBuffer 13
    #define wdBuffer 14

       
    double rsx_Blue_indecator[];
       
    double rsxDa[];
       
    double rsxDb[];
       
    double rsx_Yellow_indecator[];
       
    double rsx_Magenta_indecator[];
       
    double rsx_Up_indecator[];
       
    double rsx_Down_indecator[];
       
    double trend[];
       
    double wrkBuffer[][15];
       
       
       
    int TmaHalfLength MathMax(12,1);
       
    double FullLength 2.0*TmaHalfLength+1.0;
       
    int counted_bars=IndicatorCounted();
       
    int i,j,k,r,limit;
       
       
    //if(counted_bars<0) return(-1);
       
    if(counted_bars>0counted_bars--;
       
    limit MathMin(Bars-1,Bars-counted_bars+TmaHalfLength);
       if (
    ArrayRange(wrkBuffer,0) != BarsArrayResize(wrkBuffer,Bars);

       
    double Kg = (3.0)/(2.0+14);
       
    double Hg 1.0-Kg;
       
       for(
    i=limitr=Bars-i-1i>=0i--, r++)
       {
          
    wrkBuffer[r][TmaHalfLength] = iMA(NULL,rsxPeriod,1,0,MODE_SMA,0,i);
          if (
    i==(Bars-1)) { for (int c=0c<TmaHalfLengthc++) wrkBuffer[r][c] = 0; continue; }  

          
    double roc wrkBuffer[r][TmaHalfLength]-wrkBuffer[r-1][TmaHalfLength];
          
    double roa MathAbs(roc);
          for (
    k=0k<3k++)
          {
             
    int kk k*2;
                
    wrkBuffer[r][kk+0] = Kg*roc                Hg*wrkBuffer[r-1][kk+0];
                
    wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; roc 1.5*wrkBuffer[r][kk+0] - 0.5 wrkBuffer[r][kk+1];
                
    wrkBuffer[r][kk+6] = Kg*roa                Hg*wrkBuffer[r-1][kk+6];
                
    wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; roa 1.5*wrkBuffer[r][kk+6] - 0.5 wrkBuffer[r][kk+7];
          }
          if (
    roa != 0
          {     
    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                
    rsx_Blue_indecator[i] = MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00);
                
    Comment(rsx_Blue_indecator[i],"      ",MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00));
          }     
    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
          
    else  rsx_Blue_indecator[i] = 50.0;
       }
       
       for (
    i=limiti>=0i--) rsx_Yellow_indecator[i] = iMAOnArray(rsx_Blue_indecator,0,5,0,MODE_SMA,i);


       if (
    trend[limit] == -1ClearPoint(limit,rsxDa,rsxDb);
       for(
    i=limitr=Bars-i-1i>=0i--, r++)
       {
          
    rsxDa[i] = EMPTY_VALUE;
          
    rsxDb[i] = EMPTY_VALUE;
          
    trend[i] = trend[i+1];
          if (
    rsx_Blue_indecator[i]>rsx_Yellow_indecator[i]) trend[i] =  1;
          if (
    rsx_Blue_indecator[i]<rsx_Yellow_indecator[i]) trend[i] = -1;
          if (
    trend[i] == -1PlotPoint(i,rsxDa,rsxDb,rsx_Blue_indecator);
          if (
    TmaApplyTo==0)
             
    double price rsx_Blue_indecator[i];
          else      
    price rsx_Yellow_indecator[i];
          
             
    double sum  = (TmaHalfLength+1)*price;
             
    double sumw = (TmaHalfLength+1);
             for(
    j=1k=TmaHalfLengthj<=TmaHalfLengthj++, k--)
             {
                if (
    TmaApplyTo==0)               
                      
    sum  += k*rsx_Blue_indecator[i+j];
                else  
    sum  += k*rsx_Yellow_indecator[i+j];
                
    sumw += k;

                if (
    j<=i)
                {
                   if (
    TmaApplyTo==0)               
                         
    sum  += k*rsx_Blue_indecator[i-j];
                   else  
    sum  += k*rsx_Yellow_indecator[i-j];
                   
    sumw += k;
                }
             }
             
    rsx_Magenta_indecator[i] = sum/sumw;
                
             
    double diff price-rsx_Magenta_indecator[i];
                if (
    i> (Bars-TmaHalfLength-2)) continue;
                if (
    i==(Bars-TmaHalfLength-2))
                {
                   
    rsx_Up_indecator[i] = rsx_Magenta_indecator[i];
                   
    rsx_Down_indecator[i] = rsx_Magenta_indecator[i];
                   if (
    diff>=0)
                      {
                         
    wrkBuffer[r][13] = MathPow(diff,2);
                         
    wrkBuffer[r][14] = 0;
                      }
                   else
                      {               
                         
    wrkBuffer[r][14] = MathPow(diff,2);
                         
    wrkBuffer[r][13] = 0;
                      }                  
                   continue;
                }

             
    wrkBuffer[r][13] = wrkBuffer[r-1][13];
             
    wrkBuffer[r][14] = wrkBuffer[r-1][14];
                if(
    diff>0)
                {
                   
    wrkBuffer[r][13] = (wrkBuffer[r-1][13]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   
    wrkBuffer[r][14] =  wrkBuffer[r-1][14]*(FullLength-1)/FullLength;
                }
                if(
    diff<0)
                {
                   
    wrkBuffer[r][14] = (wrkBuffer[r-1][14]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   
    wrkBuffer[r][13] =  wrkBuffer[r-1][13]*(FullLength-1)/FullLength;
                }
             
    rsx_Up_indecator[i] = rsx_Magenta_indecator[i] + 2.8*MathSqrt(wrkBuffer[r][13]);
             
    rsx_Down_indecator[i] = rsx_Magenta_indecator[i] - 2.8*MathSqrt(wrkBuffer[r][14]);
             
    /*
             rsx_Blue = rsx_Blue_indecator[1];
             rsx_Yellow = rsx_Yellow_indecator[1];
             rsx_Magenta = rsx_Magenta_indecator[1];
             rsx_Up = rsx_Up_indecator[1];
             rsx_Down = rsx_Down_indecator[1];  */
       
    }

    انا عارف انو في دالتين بتناديهن الدالة RSX وهدول هنا تفضل:

    كود PHP:
    void ClearPoint(int i,doublefirst[],doublesecond[])
    {
       if ((
    second[i]  != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
            
    second[i+1] = EMPTY_VALUE;
       else
          if ((
    first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
              
    first[i+1] = EMPTY_VALUE;
    }


    void PlotPoint(int i,doublefirst[],doublesecond[],doublefrom[])
    {
       if (
    first[i+1] == EMPTY_VALUE)
          {
          if (
    first[i+2] == EMPTY_VALUE) {
              
    first[i]    = from[i];
              
    first[i+1]  = from[i+1];
              
    second[i]   = EMPTY_VALUE;
             }
          else {
              
    second[i]   = from[i];
              
    second[i+1] = from[i+1];
              
    first[i]    = EMPTY_VALUE;
             }
          }
       else
          {
             
    first[i]   = from[i];
             
    second[i]  = EMPTY_VALUE;
          }


    وهنا وجدت خطئين :
    الخطأ الأول :ماهي TmaApply To مجهولة ولم أعرف ماهي.

    الخطأ الثاني جميع المصفوفات غير معرفة الحجم ولكي أعدلها لا بد من أن أعرف ماهي Tma Apply To أكيد موجودة بالمؤشر الأصلي لأنه سيكون بأخطاء لو لم تكون موجودة
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة 7788.GIF‏  

  10. #100
    الصورة الرمزية أبوجلال
    أبوجلال غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2010
    الإقامة
    الوطن العربي
    المشاركات
    321

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Ram22 مشاهدة المشاركة
    السكربت الأول أسمه buy

    كود:
     
    #property show_confirm int start() { if(GlobalVariableCheck("Order")){ GlobalVariableDel("Order"); GlobalVariableSet("Order",1); } else{ GlobalVariableSet("Order",1); } return(0); }
    والسكربت الثاني أسمه Sell
    كود:
     
    #property show_confirm int start() { if(GlobalVariableCheck("Order")){ GlobalVariableDel("Order"); GlobalVariableSet("Order",2); } else{ GlobalVariableSet("Order",2); } return(0); }

    والسكربت الثالث أسمه Close

    كود:
     
    #property show_confirm int start() { if(GlobalVariableCheck("Order")){ GlobalVariableDel("Order"); GlobalVariableSet("Order",3); } else{ GlobalVariableSet("Order",3); } return(0); }
    موضوع رائع بارك الله فيك وجعله ماتقدمه في ميزان حسناتك ان شاء الله
    بس عندي سؤال : هل ممكن عمل اسكربت لفتح صفقات بيع او شراء بهدف 15 واستوب 20
    مع مراعاة ان الدخول على اكثر من صفقة بأسلوب (هيدج )
    وكيف تغيير حجم اللوت المستخدم للاسكربت ان امكن وحفظها الاعدادت مسبقا ...
    وشكرا جزيلا لك
    آخر تعديل بواسطة أبوجلال ، 14-12-2011 الساعة 08:54 PM

  11. #101
    الصورة الرمزية turkm
    turkm غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    المشاركات
    1,626

    افتراضي

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

    وهنا وجدت خطئين :
    الخطأ الأول :ماهي TmaApply To مجهولة ولم أعرف ماهي.

    الخطأ الثاني جميع المصفوفات غير معرفة الحجم ولكي أعدلها لا بد من أن أعرف ماهي Tma Apply To أكيد موجودة بالمؤشر الأصلي لأنه سيكون بأخطاء لو لم تكون موجودة



    هاد اخي الكود الكامل للمؤشر يلي بالمشاركة 96

    كود PHP:
    //+------------------------------------------------------------------+
    //|                                  rsx + ma + tma asymmetric bands |
    //|                                                           mladen |
    //+------------------------------------------------------------------+
    #property copyright "mladen"
    #property link      "[email protected]"

    #property indicator_separate_window
    #property indicator_buffers 7
    #property indicator_color1  DeepSkyBlue
    #property indicator_color2  Red
    #property indicator_color3  Red
    #property indicator_color4  Gold
    #property indicator_color5  DimGray
    #property indicator_color6  Red
    #property indicator_color7  LimeGreen
    #property indicator_style5  STYLE_DOT
    #property indicator_width1  2
    #property indicator_width2  2
    #property indicator_width3  2

    extern int    RsxPeriod       14;
    extern int    RsxPrice        0;
    extern int    SignalPeriod    5;
    extern int    SignalMethod    MODE_SMA;
    extern int    TmaHalfLength   12;
    extern int    TmaApplyTo      0// 0 -> to RSX, 1 -> to MA of RSX
    extern double BandsDeviations 2.8;

    double rsx[];
    double rsxDa[];
    double rsxDb[];
    double signal[];
    double tmBuffer[];
    double upBuffer[];
    double dnBuffer[];
    double trend[];
    double wrkBuffer[][15];

    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+

    int init()
    {
       
    IndicatorBuffers(8);
       
    SetIndexBuffer(0,rsx);//Blue
       
    SetIndexDrawBegin(0,TmaHalfLength+1);
       
    SetIndexLabel(0,"RSX");
       
    SetIndexBuffer(1,rsxDa);//Red
       
    SetIndexDrawBegin(1,TmaHalfLength+1);
       
    SetIndexLabel(1,"RSX");
       
    SetIndexBuffer(2,rsxDb);
       
    SetIndexDrawBegin(2,TmaHalfLength+1);
       
    SetIndexLabel(2,"RSX");
       
    SetIndexBuffer(3,signal);//Yellow
       
    SetIndexDrawBegin(3,TmaHalfLength+1);
       
    SetIndexLabel(3,"RSX signal");
       
    SetIndexBuffer(4,tmBuffer);//Magenta
       
    SetIndexDrawBegin(4,TmaHalfLength+1);
       
    SetIndexBuffer(5,upBuffer);// UP
       
    SetIndexDrawBegin(5,TmaHalfLength+1);
       
    SetIndexBuffer(6,dnBuffer);// Down
       
    SetIndexDrawBegin(6,TmaHalfLength+1);
       
    SetIndexBuffer(7,trend);

          
    TmaHalfLength MathMax(TmaHalfLength,1);

       
    IndicatorShortName("Rsx ("+RsxPeriod+")");
       return(
    0);
    }
    int deinit() { return(0); }

    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+

    #define wuBuffer 13
    #define wdBuffer 14

    int start()
    {
       
        
       
    double FullLength 2.0*TmaHalfLength+1.0;
       
    int counted_bars=IndicatorCounted();
       
    int i,j,k,r,limit;

       if(
    counted_bars<0) return(-1);
       if(
    counted_bars>0counted_bars--;
             
    limit MathMin(Bars-1,Bars-counted_bars+TmaHalfLength);
                if (
    ArrayRange(wrkBuffer,0) != BarsArrayResize(wrkBuffer,Bars);

       
    double Kg = (3.0)/(2.0+RsxPeriod);
       
    double Hg 1.0-Kg;
       
       for(
    i=limitr=Bars-i-1i>=0i--, r++)
       {
          
    wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,RsxPrice,i);

             if (
    i==(Bars-1)) { for (int c=0c<12c++) wrkBuffer[r][c] = 0; continue; }  

          
    double roc wrkBuffer[r][12]-wrkBuffer[r-1][12];
          
    double roa MathAbs(roc);
          for (
    k=0k<3k++)
          {
             
    int kk k*2;
                
    wrkBuffer[r][kk+0] = Kg*roc                Hg*wrkBuffer[r-1][kk+0];
                
    wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; roc 1.5*wrkBuffer[r][kk+0] - 0.5 wrkBuffer[r][kk+1];
                
    wrkBuffer[r][kk+6] = Kg*roa                Hg*wrkBuffer[r-1][kk+6];
                
    wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; roa 1.5*wrkBuffer[r][kk+6] - 0.5 wrkBuffer[r][kk+7];
          }
          if (
    roa != 0)
               
    rsx[i] = MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00); 
          else 
    rsx[i] = 50.0;
       }
       
       for (
    i=limiti>=0i--) signal[i] = iMAOnArray(rsx,0,SignalPeriod,0,SignalMethod,i);


       if (
    trend[limit] == -1ClearPoint(limit,rsxDa,rsxDb);
       for(
    i=limitr=Bars-i-1i>=0i--, r++)
       {
          
    rsxDa[i] = EMPTY_VALUE;
          
    rsxDb[i] = EMPTY_VALUE;
          
    trend[i] = trend[i+1];
          if (
    rsx[i]>signal[i]) trend[i] =  1;
          if (
    rsx[i]<signal[i]) trend[i] = -1;
          if (
    trend[i] == -1PlotPoint(i,rsxDa,rsxDb,rsx);
          if (
    TmaApplyTo==0)
             
    double price rsx[i];
          else      
    price signal[i];
          
             
    double sum  = (TmaHalfLength+1)*price;
             
    double sumw = (TmaHalfLength+1);
             for(
    j=1k=TmaHalfLengthj<=TmaHalfLengthj++, k--)
             {
                if (
    TmaApplyTo==0)               
                      
    sum  += k*rsx[i+j];
                else  
    sum  += k*signal[i+j];
                
    sumw += k;

                if (
    j<=i)
                {
                   if (
    TmaApplyTo==0)               
                         
    sum  += k*rsx[i-j];
                   else  
    sum  += k*signal[i-j];
                   
    sumw += k;
                }
             }
             
    tmBuffer[i] = sum/sumw;
                
             
    double diff price-tmBuffer[i];
                if (
    i> (Bars-TmaHalfLength-2)) continue;
                if (
    i==(Bars-TmaHalfLength-2))
                {
                   
    upBuffer[i] = tmBuffer[i];
                   
    dnBuffer[i] = tmBuffer[i];
                   if (
    diff>=0)
                      {
                         
    wrkBuffer[r][wuBuffer] = MathPow(diff,2);
                         
    wrkBuffer[r][wdBuffer] = 0;
                      }
                   else
                      {               
                         
    wrkBuffer[r][wdBuffer] = MathPow(diff,2);
                         
    wrkBuffer[r][wuBuffer] = 0;
                      }                  
                   continue;
                }

             
    wrkBuffer[r][wuBuffer] = wrkBuffer[r-1][wuBuffer];
             
    wrkBuffer[r][wdBuffer] = wrkBuffer[r-1][wdBuffer];
                if(
    diff>0)
                {
                   
    wrkBuffer[r][wuBuffer] = (wrkBuffer[r-1][wuBuffer]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   
    wrkBuffer[r][wdBuffer] =  wrkBuffer[r-1][wdBuffer]*(FullLength-1)/FullLength;
                }
                if(
    diff<0)
                {
                   
    wrkBuffer[r][wdBuffer] = (wrkBuffer[r-1][wdBuffer]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   
    wrkBuffer[r][wuBuffer] =  wrkBuffer[r-1][wuBuffer]*(FullLength-1)/FullLength;
                }
             
    upBuffer[i] = tmBuffer[i] + BandsDeviations*MathSqrt(wrkBuffer[r][wuBuffer]);
             
    dnBuffer[i] = tmBuffer[i] - BandsDeviations*MathSqrt(wrkBuffer[r][wdBuffer]);
       }
       
       return(
    0);
    }

    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+

    void ClearPoint(int i,doublefirst[],doublesecond[])
    {
       if ((
    second[i]  != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
            
    second[i+1] = EMPTY_VALUE;
       else
          if ((
    first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
              
    first[i+1] = EMPTY_VALUE;
    }


    void PlotPoint(int i,doublefirst[],doublesecond[],doublefrom[])
    {
       if (
    first[i+1] == EMPTY_VALUE)
          {
          if (
    first[i+2] == EMPTY_VALUE) {
              
    first[i]    = from[i];
              
    first[i+1]  = from[i+1];
              
    second[i]   = EMPTY_VALUE;
             }
          else {
              
    second[i]   = from[i];
              
    second[i+1] = from[i+1];
              
    first[i]    = EMPTY_VALUE;
             }
          }
       else
          {
             
    first[i]   = from[i];
             
    second[i]  = EMPTY_VALUE;
          }

    بالله عليك اخي الكريم لو بتقدر تحل مشكلتي وبرجع بقولها انني بدي استرجع قيم المصفوفات بعد تحويل المؤشر الى دالة ولو بس مصفوفة واحدة المهم اعرف الطريقة كيف وانا بكمل

    والله يجزيك كل خير
    آخر تعديل بواسطة turkm ، 14-12-2011 الساعة 09:34 PM

  12. #102
    الصورة الرمزية Ram22
    Ram22 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2011
    المشاركات
    354

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة turkm مشاهدة المشاركة
    اخي الكريم مامشي الحال معي ورح امشي معك بالتفصيل شو هي المشكل:
    اولا عملت دالة اسمها timing وجواتها في مصفوفات بعد ماتعمل الدالة بعض الحسابات وتضيف هالقيم للمصفوفات وضعت كومنت لحتى اعرف قيمة بس وحدة من هالمصفوفات لكن للاسف فقط القيمة صفر على الشاشة وهاد كود الدالة
    كود:
      #property copyright ""
    #property link      ""
    
    #property indicator_separate_window
    #property indicator_minimum -13.0
    #property indicator_maximum 13.0
    #property indicator_buffers 4
    
    #property indicator_color1 Black
    #property indicator_color2 Black
    #property indicator_color3 Black
    #property indicator_color4 Black
    #property indicator_width1 1
    #property indicator_width2 1
    #property indicator_width3 1
    #property indicator_width4 1
    
    #property indicator_levelcolor Gold
    #property indicator_levelstyle 2
    
    #property indicator_level1 4.0
    #property indicator_levelcolor1 Gold
    #property indicator_level2 8.0
    #property indicator_levelcolor2 Gold
    #property indicator_level3 12.0
    #property indicator_levelcolor3 Gold
    #property indicator_level4 -4.0
    #property indicator_levelcolor4 Gold
    #property indicator_level5 -8.0
    #property indicator_levelcolor5 Gold
    #property indicator_level6 -12.0
    #property indicator_levelcolor6 Gold
    #property indicator_level7 0
    #property indicator_levelcolor7 Gold
    
    
    extern int NumBars = 5;
    double g_ibuf_80[];
    double g_ibuf_84[];
    double g_ibuf_88[];
    double g_ibuf_92[];
    
    int init() {
       SetIndexStyle(0, DRAW_NONE);
       SetIndexBuffer(0, g_ibuf_80);
       SetIndexStyle(1, DRAW_NONE);
       SetIndexBuffer(1, g_ibuf_92);
       SetIndexStyle(2, DRAW_NONE);
       SetIndexBuffer(2, g_ibuf_84);
       SetIndexStyle(3, DRAW_NONE);
       SetIndexBuffer(3, g_ibuf_88);
       IndicatorShortName(" ********** TIMING    ");
       return (0);
    }
    
    int deinit() {
       Comment("");
       return (0);
    }
    
    int start() {
       double ld_12;
       double ld_20;
       double ld_28;
       string l_name_44;
       string l_name_52;
       string ls_0 = " ********** TIMING    ";
       int li_8 = WindowFind(ls_0);
       for (int l_index_40 = 0; l_index_40 < Bars; l_index_40++) {
          ld_12 = 0;
          for (int l_index_36 = l_index_40; l_index_36 < NumBars + l_index_40; l_index_36++) ld_12 += (High[l_index_36] + Low[l_index_36]) / 2.0;
          ld_20 = ld_12 / NumBars;
          ld_12 = 0;
          for (l_index_36 = l_index_40; l_index_36 < NumBars + l_index_40; l_index_36++) ld_12 += High[l_index_36] - Low[l_index_36];
          ld_28 = 0.2 * (ld_12 / NumBars);
          g_ibuf_80[l_index_40] = (High[l_index_40] - ld_20) / ld_28;
          g_ibuf_92[l_index_40] = (Low[l_index_40] - ld_20) / ld_28;
          g_ibuf_84[l_index_40] = (Open[l_index_40] - ld_20) / ld_28;
          g_ibuf_88[l_index_40] = (Close[l_index_40] - ld_20) / ld_28;
       }
       Sleep(1000);
       ObjectsDeleteAll(li_8);
       for (l_index_36 = 0; l_index_36 <= Bars; l_index_36++) {
          l_name_44 = "TimingHL" + l_index_36;
          ObjectCreate(l_name_44, OBJ_TREND, li_8, Time[l_index_36], g_ibuf_80[l_index_36], Time[l_index_36], g_ibuf_92[l_index_36]);
          ObjectSet(l_name_44, OBJPROP_STYLE, STYLE_SOLID);
          ObjectSet(l_name_44, OBJPROP_RAY, FALSE);
          ObjectSet(l_name_44, OBJPROP_WIDTH, 1);
          l_name_52 = "TimingOC" + l_index_36;
          ObjectCreate(l_name_52, OBJ_TREND, li_8, Time[l_index_36], g_ibuf_84[l_index_36], Time[l_index_36], g_ibuf_88[l_index_36]);
          ObjectSet(l_name_52, OBJPROP_STYLE, STYLE_SOLID);
          ObjectSet(l_name_52, OBJPROP_RAY, FALSE);
          ObjectSet(l_name_52, OBJPROP_WIDTH, 3);
          if (Open[l_index_36] <= Close[l_index_36]) {
             ObjectSet(l_name_44, OBJPROP_COLOR, Green);
             ObjectSet(l_name_52, OBJPROP_COLOR, Green);
          } else {
             ObjectSet(l_name_44, OBJPROP_COLOR, Red);
             ObjectSet(l_name_52, OBJPROP_COLOR, Red);
          }
       }
       ObjectCreate("actual_VCharte", OBJ_HLINE, li_8, 0, g_ibuf_88[0]);
       ObjectSet("actual_Vcharte", OBJPROP_COLOR, Blue);
       return (0);
    وحتى اني لغيت امر DoubleToStr لكن بدون اي فائدة اخي الكريم لو تتكرم علي وتعطيني الكود المعدل يلي برجعلي قيمة هالمصفوفة لحتى اقدر استفيد منو ضمن الجسم الرئيسي

    وهي صورة التشارت وقيمة المصفوفة صفر مثل مابتشوف على الشاشة
    وجزاك الله عني كل خير

    هنا ستستعمل هذا الكود


    كود:
     
    double CMA(int Type,int bar){ double G=0; double RG1; double RG2; double RG3; string Name1; string Name2; string SS1 = " ********** TIMING "; int SS2 = WindowFind(SS1); ArrayResize(Array1,Bars); ArrayResize(Array2,Bars); ArrayResize(Array3,Bars); ArrayResize(Array4,Bars); for (int j = 0; j < Bars; j++) { RG1 = 0; for (int GT1 = j; GT1 < NumBars + j; GT1++) RG1 += (High[GT1] + Low[GT1]) / 2.0; RG2 = RG1 / NumBars; RG1 = 0; for (GT1 = j; GT1 < NumBars + j; GT1++) RG1 += High[GT1] - Low[GT1]; RG3 = 0.2 * (RG1 / NumBars); Array1[ j] = (High[ j] - RG2) / RG3; Array4[ j] = (Low[ j] - RG2) / RG3; Array2[ j] = (Open[ j] - RG2) / RG3; Array3[ j] = (Close[ j] - RG2) / RG3; } switch(Type) { case 1: { G=Array1[bar]; break; } case 2: { G=Array2[bar]; break; } case 3: { G=Array3[bar]; break; } case 4: { G=Array4[bar]; break; } } return(G); }
    ولابد من أن تكتب هذا الكود بالبداية ليعمل معه

    كود:
     [LEFT]
    extern int NumBars = 5; double Array1[]; double Array2[]; double Array3[]; double Array4[];
    وتستعمله من


    كود:
     
    CMA(int Type,int bar)
    Type أكتب مكانها 1 أو 2 أو 3 أو 4 بحيث واحد تعطيك قيمة المصفوفة رقم 1 و2 المصفوفة رقم 2 و3 المصفوفة رقم 3 و4 المصفوفة رقم 4
    وأكتب مكان bar رقم الشمعة فلو أردت أن تعطيك الدالة الشمعة الحالية أكتب 0 والسابقة 1 وقبل السابقة 2 وهكذا
    وهذا مثال سأستعمل الكود بأسكربت وأجعله يظهر أرقام بصندوق عن قيمة المؤشر


    كود:
     
    #property show_inputs extern int NumBars = 5; extern int Singal=1; // 1 or 2 or 3 or 4 extern int barTest=0; // رقم الشمعة double Array1[]; double Array2[]; double Array3[]; double Array4[]; int start() { double T=CMA(Singal,barTest); Alert(T); return(0); } double CMA(int Type,int bar){ double G=0; double RG1; double RG2; double RG3; string Name1; string Name2; string SS1 = " ********** TIMING "; int SS2 = WindowFind(SS1); ArrayResize(Array1,Bars); ArrayResize(Array2,Bars); ArrayResize(Array3,Bars); ArrayResize(Array4,Bars); for (int j = 0; j < Bars; j++) { RG1 = 0; for (int GT1 = j; GT1 < NumBars + j; GT1++) RG1 += (High[GT1] + Low[GT1]) / 2.0; RG2 = RG1 / NumBars; RG1 = 0; for (GT1 = j; GT1 < NumBars + j; GT1++) RG1 += High[GT1] - Low[GT1]; RG3 = 0.2 * (RG1 / NumBars); Array1[ j] = (High[ j] - RG2) / RG3; Array4[ j] = (Low[ j] - RG2) / RG3; Array2[ j] = (Open[ j] - RG2) / RG3; Array3[ j] = (Close[ j] - RG2) / RG3; } switch(Type) { case 1: { G=Array1[bar]; break; } case 2: { G=Array2[bar]; break; } case 3: { G=Array3[bar]; break; } case 4: { G=Array4[bar]; break; } } return(G); }
    أنا غيرت الرموز وجعلتها سهلة القرائة
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة 77.GIF‏  
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 Test.mq4‏ (1.3 كيلوبايت, المشاهدات 24)
    آخر تعديل بواسطة Ram22 ، 14-12-2011 الساعة 10:00 PM

  13. #103
    الصورة الرمزية turkm
    turkm غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    المشاركات
    1,626

    افتراضي

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

    هنا ستستعمل هذا الكود


    كود:
     
    double CMA(int Type,int bar){ double G=0; double RG1; double RG2; double RG3; string Name1; string Name2; string SS1 = " ********** TIMING "; int SS2 = WindowFind(SS1); ArrayResize(Array1,Bars); ArrayResize(Array2,Bars); ArrayResize(Array3,Bars); ArrayResize(Array4,Bars); for (int j = 0; j < Bars; j++) { RG1 = 0; for (int GT1 = j; GT1 < NumBars + j; GT1++) RG1 += (High[GT1] + Low[GT1]) / 2.0; RG2 = RG1 / NumBars; RG1 = 0; for (GT1 = j; GT1 < NumBars + j; GT1++) RG1 += High[GT1] - Low[GT1]; RG3 = 0.2 * (RG1 / NumBars); Array1[ j] = (High[ j] - RG2) / RG3; Array4[ j] = (Low[ j] - RG2) / RG3; Array2[ j] = (Open[ j] - RG2) / RG3; Array3[ j] = (Close[ j] - RG2) / RG3; } switch(Type) { case 1: { G=Array1[bar]; break; } case 2: { G=Array2[bar]; break; } case 3: { G=Array3[bar]; break; } case 4: { G=Array4[bar]; break; } } return(G); }
    ولابد من أن تكتب هذا الكود بالبداية ليعمل معه

    كود:
     [LEFT]
    extern int NumBars = 5; double Array1[]; double Array2[]; double Array3[]; double Array4[];
    وتستعمله من


    كود:
     
    CMA(int Type,int bar)
    Type أكتب مكانها 1 أو 2 أو 3 أو 4 بحيث واحد تعطيك قيمة المصفوفة رقم 1 و2 المصفوفة رقم 2 و3 المصفوفة رقم 3 و4 المصفوفة رقم 4
    وأكتب مكان bar رقم الشمعة فلو أردت أن تعطيك الدالة الشمعة الحالية أكتب 0 والسابقة 1 وقبل السابقة 2 وهكذا
    وهذا مثال سأستعمل الكود بأسكربت وأجعله يظهر أرقام بصندوق عن قيمة المؤشر


    كود:
     
    #property show_inputs extern int NumBars = 5; extern int Singal=1; // 1 or 2 or 3 or 4 extern int barTest=0; // رقم الشمعة double Array1[]; double Array2[]; double Array3[]; double Array4[]; int start() { double T=CMA(Singal,barTest); Alert(T); return(0); } double CMA(int Type,int bar){ double G=0; double RG1; double RG2; double RG3; string Name1; string Name2; string SS1 = " ********** TIMING "; int SS2 = WindowFind(SS1); ArrayResize(Array1,Bars); ArrayResize(Array2,Bars); ArrayResize(Array3,Bars); ArrayResize(Array4,Bars); for (int j = 0; j < Bars; j++) { RG1 = 0; for (int GT1 = j; GT1 < NumBars + j; GT1++) RG1 += (High[GT1] + Low[GT1]) / 2.0; RG2 = RG1 / NumBars; RG1 = 0; for (GT1 = j; GT1 < NumBars + j; GT1++) RG1 += High[GT1] - Low[GT1]; RG3 = 0.2 * (RG1 / NumBars); Array1[ j] = (High[ j] - RG2) / RG3; Array4[ j] = (Low[ j] - RG2) / RG3; Array2[ j] = (Open[ j] - RG2) / RG3; Array3[ j] = (Close[ j] - RG2) / RG3; } switch(Type) { case 1: { G=Array1[bar]; break; } case 2: { G=Array2[bar]; break; } case 3: { G=Array3[bar]; break; } case 4: { G=Array4[bar]; break; } } return(G); }
    أنا غيرت الرموز وجعلتها سهلة القرائة
    بارك الله بك استاذنا العزيز والله انك فضلت على وهلق خود كل راحتك لو حبيت تعدل على كود المؤشر الاخر او لا على راحتك انت لحد هون مفضل وبشكرك والله يجزيك كل الخير الك ولاهلك

  14. #104
    الصورة الرمزية Ram22
    Ram22 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2011
    المشاركات
    354

    افتراضي

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


    موضوع رائع بارك الله فيك وجعله ماتقدمه في ميزان حسناتك ان شاء الله
    بس عندي سؤال : هل ممكن عمل اسكربت لفتح صفقات بيع او شراء بهدف 15 واستوب 20
    مع مراعاة ان الدخول على اكثر من صفقة بأسلوب (هيدج )
    وكيف تغيير حجم اللوت المستخدم للاسكربت ان امكن وحفظها الاعدادت مسبقا ...
    وشكرا جزيلا لك
    السكربت يعمل مرة واحدة عند وضعه علي الشارت يدوي ثم يخرج من الشارت لوحده والأكسبرت يعمل بأستمرار وأظن أنك تستطيع أن تعمل أسكربت يفتح صفقة بهدف ووقف خسارة بنفسك بعد هذا الشرح لأنه بسيط جدا والموضوع هدفه أن تصنع أكسبرت بنفسك أصعب من هذه الفكرة .

  15. #105
    الصورة الرمزية عبد المهيمن عبد الواحد
    عبد المهيمن عبد الواحد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2010
    الإقامة
    ليبيا
    المشاركات
    214

    افتراضي

    ماشاء الله موضوع تعليمي اسلوب سلس تماما والله احنا محظوظين بأستاذ مثل حضرتك
    استمر بارك الله فيك

صفحة 7 من 13 الأولىالأولى 12345678910111213 الأخيرةالأخيرة

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