النتائج 1 إلى 9 من 9
  1. #1
    الصورة الرمزية أبو نـاصر
    أبو نـاصر غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2013
    الإقامة
    السعودية
    المشاركات
    3,189

    افتراضي كيف اعدل هذا الكود

    السلام عليكم

    هذا المؤشر للدايقرنجيس مع الار اس اي

    المطلوب منه :

    1 - زيادة القمم والقيعان
    لأنه الآن يظهر اقرب قمة وقاع فقط

    2 - وضع خط افقى لأعلى قمة بين قاعين دقرانجيس
    او ادنى قاع بين قمتين
    كمستهدف

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

    لم اعرف اين الجزئية المسؤولة عن اختيار القمم والقيعان

    وهل سأحتاج ( لوبينج ) للبحث عن اعلى قمة بين قاعي دايفرنجيس

    جزاكم الله خيرا
    اضغط على الصورة لعرض أكبر

الاســـم:	666333.jpg
المشاهدات:	31
الحجـــم:	78.4 كيلوبايت
الرقم:	441556

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

الاســـم:	555566.png
المشاهدات:	40
الحجـــم:	20.5 كيلوبايت
الرقم:	441557

    كود PHP:
       if(IsIndicatorTrough(shift) == false)
            return;  
            
        
    int currentTrough shift;
        
    int lastTrough GetIndicatorLastTrough(shift);

        
    //--CLASSIC DIVERGENCE--//
        
    if (DisplayClassicalDivergences)
        {
            if(
    rsi[currentTrough] > rsi[lastTrough] && Low[currentTrough] < Low[lastTrough])
            {
                
    bullishDivergence[currentTrough] = rsi[currentTrough] - arrowsDisplacement;
           
                
    divergencesType[currentTrough] = 1//"Classic Bullish";
                
    divergencesRSIDiff[currentTrough] = MathAbs(rsi[currentTrough] - rsi[lastTrough]);
                
    divergencesPriceDiff[currentTrough] = MathAbs(Low[currentTrough] - Low[lastTrough]);
            
    if (
    DrawPriceTrendLines) {h1=Time[currentTrough]; h2=Time[lastTrough]; s7=StringConcatenate(PriceLine,h1," ",h2); t4=0;
    DrawTrendLine(s7,t4,h1,Low[currentTrough],h2,Low[lastTrough],LongColour,STYLE_SOLID,1);}            
                    
    if (
    DrawIndicatorTrendLines) {h1=Time[currentTrough]; h2=Time[lastTrough]; s7=StringConcatenate(RSILine,h1," ",h2); t4=ChartWindowFind(0,indicatorName);
    DrawTrendLine(s7,t4,h1,rsi[currentTrough],h2,rsi[lastTrough],LongColour,STYLE_SOLID,1);}
                                          
           
                if(
    DisplayAlert)
                    
    DisplayAlert("Classical RSI bullish divergence on: "currentTrough);  
            }
        } 
    الملفات المرفقة الملفات المرفقة

  2. #2
    الصورة الرمزية أبو نـاصر
    أبو نـاصر غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2013
    الإقامة
    السعودية
    المشاركات
    3,189

    افتراضي

    يبدو ان مبتغاي في هذه الأسطر

    وهو من التعقيد بمكان فيحتاج اكثر من (لوبينج)

    اعتذر منكم

    ماذا يقصد بـ j++


    +++++++++ ما اجملك يا (vb.net) لكن mq4 لا يقبل غير C++ ++++++++++++

    كود PHP:
    int GetIndicatorLastPeak(int shift)
    {
        for(
    int j shift 500; [COLOR="#FF0000"]Barsj++[/COLOR])
        {
            if(
    rsi[j] >= rsi[j+1] && rsi[j] > rsi[j+2] &&
               
    rsi[j] >= rsi[j-1] && rsi[j] > rsi[j-2])
                return(
    j);
        }
        return(-
    1);
    }



    int GetIndicatorLastTrough(int shift)
    {
        for(
    int j shift 500Barsj++)
        {
            if(
    rsi[j] <= rsi[j+1] && rsi[j] < rsi[j+2] &&
               
    rsi[j] <= rsi[j-1] && rsi[j] < rsi[j-2])
                return(
    j);
        }
        return(-
    1);


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

    افتراضي

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

    وهو من التعقيد بمكان فيحتاج اكثر من (لوبينج)

    اعتذر منكم

    ماذا يقصد بـ j++


    +++++++++ ما اجملك يا (vb.net) لكن mq4 لا يقبل غير C++ ++++++++++++

    كود PHP:
    int GetIndicatorLastPeak(int shift)
    {
        for(
    int j shift 500; [COLOR="#FF0000"]Barsj++[/COLOR])
        {
            if(
    rsi[j] >= rsi[j+1] && rsi[j] > rsi[j+2] &&
               
    rsi[j] >= rsi[j-1] && rsi[j] > rsi[j-2])
                return(
    j);
        }
        return(-
    1);
    }
     
     
     
    int GetIndicatorLastTrough(int shift)
    {
        for(
    int j shift 500Barsj++)
        {
            if(
    rsi[j] <= rsi[j+1] && rsi[j] < rsi[j+2] &&
               
    rsi[j] <= rsi[j-1] && rsi[j] < rsi[j-2])
                return(
    j);
        }
        return(-
    1);

    في هذا الكود فهو يبحث عن قمة أو القاع التي تبعد عن آخر قمة أو قاع تم تحديدها بعدد 5 شموع
    كود PHP:
    for(int j shift 5Barsj++) 
    مثلا لو وجد قمة عند الشمعه رقم 12 فسوف يبدأ بالبحث من الشمعه رقم 17 ثم 18 ثم 19 وهكذا هذا المقصود ب ++j
    حتى يجد أقرب قمه ثم يتوقف بالبحث عندها ونفس الطريقه بالنسبه للقاع

    الآن أنت تريد معرفة أكبر قمة بين قاعين ديفرجنس
    في دالة
    كود PHP:
    void CatchBullishDivergence(int shift
    سوف تجد أنه يستخرج قيمة القاعين في الكود
    كود PHP:
     int currentTrough shift;
        
    int lastTrough GetIndicatorLastTrough(shift); 
    ويكفي أنت أن تبحث عن أعلى قمة بين هذين المستويين
    مثال
    كود PHP:
    double MaxRSI;
         
        for(
    int i=currentTrough;i<=lastTrough;i++)
        {
         if(
    CalculateRSI(i)>MaxRSI)MaxRSI=CalculateRSI(i);
        } 
    وستطبق نفس الفكره لإيجاد أقل قاع بين قمتين ديفرجنس

  4. #4
    الصورة الرمزية أبو نـاصر
    أبو نـاصر غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2013
    الإقامة
    السعودية
    المشاركات
    3,189

    افتراضي

    شاكرا لك افضالك استاذي الكريم

    يبدو اني سأحتاج الى تعلم دوال هذه اللغة من البداية ثم اعادة بناءه من الصفر

    بخصوص الخمس شموع

    في الاقتباس اعلاه انا رفعته الى 500 شمعة
    for(int j = shift + 500; j < Bars; j++)

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


    ---


    جزئية القمة بين القاعين

    ارى انك كتبت MaxRSI وانا اريد قمة في السعر وليس المؤشر

    ساجربها باذن الله

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

    افتراضي

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

    يبدو اني سأحتاج الى تعلم دوال هذه اللغة من البداية ثم اعادة بناءه من الصفر

    بخصوص الخمس شموع

    في الاقتباس اعلاه انا رفعته الى 500 شمعة
    for(int j = shift + 500; j < Bars; j++)

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


    ---


    جزئية القمة بين القاعين

    ارى انك كتبت MaxRSI وانا اريد قمة في السعر وليس المؤشر

    ساجربها باذن الله
    يجب أن تتأكد بوجود عدد شموع كافي بدئا من شمعة البحث +500 شمعه
    بما أنك تريد قمة السعر فسوف تستخدم نفس مجال البحث لكن على السعر
    كود PHP:
    if(High[i]>MaxHigh)MaxHigh=High[i]; 

  6. #6
    الصورة الرمزية أبو نـاصر
    أبو نـاصر غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2013
    الإقامة
    السعودية
    المشاركات
    3,189

    افتراضي

    الله يجزاك خير ويرحم والديك

    لازلت اعاني من بناء الاكواد وصيغها

    ويبدو اني سأبدأ المؤشر من جديد (اردت ان اعدل عليه اختصارا للوقت والجهد)

    فان سمح لك وقتك اكون لك من الشاكرين


    استاذي الفاضل

    لماذا يقبل بهذا
    كود PHP:
    if(High[shift]<=High[shift-1]( 
    ولا يقبل
    كود PHP:
    if(High[shift]=High[shift-1


    كيف يصاغ امر
    كود PHP:
    Select Case
                  
         Case 
    Is 
     End Select 
    كود PHP:
    High[shift]<>Nothing&&High[shift]<>
    كود PHP:
    Try
    Catch
                                    
    End Try 

  7. #7
    الصورة الرمزية أبو نـاصر
    أبو نـاصر غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2013
    الإقامة
    السعودية
    المشاركات
    3,189

    افتراضي

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

    لازلت اعاني من بناء الاكواد وصيغها

    ويبدو اني سأبدأ المؤشر من جديد (اردت ان اعدل عليه اختصارا للوقت والجهد)

    فان سمح لك وقتك اكون لك من الشاكرين


    استاذي الفاضل

    لماذا يقبل بهذا
    كود PHP:
    if(High[shift]<=High[shift-1]( 
    ولا يقبل
    كود PHP:
    if(High[shift]=High[shift-1

    سألت احد الاساتذة فاخبرني ان اكتبها ==
    if(High[shift]==High[shift-1]

    الآن جاري البحث عن or

    High[shift]==High[shift-1] or High[shift]<High[shift-1]
    آخر تعديل بواسطة أبو نـاصر ، 18-08-2015 الساعة 07:50 PM

  8. #8
    الصورة الرمزية أبو نـاصر
    أبو نـاصر غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2013
    الإقامة
    السعودية
    المشاركات
    3,189

    افتراضي

    https://forum.arabictrader.com/t93679.html#post1662296

    شكرا استاذ اسامة
    الاجابة وجدتها اعلاه

  9. #9
    الصورة الرمزية أبو نـاصر
    أبو نـاصر غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jun 2013
    الإقامة
    السعودية
    المشاركات
    3,189

    افتراضي

    بفضل الله

    تم ضبط الخط الأفقي

    وبقي زيادة القمم والقيعان

    شكرا استاذ اسامة

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

الاســـم:	5522.jpg
المشاهدات:	20
الحجـــم:	65.7 كيلوبايت
الرقم:	441770

    تعمدت مد الخط مسافة محددة الى اليسار


    اخترت 50 شمعة

    وواجهتني اشكالية الخط في اقصى اليمين حبث تقل شموعة عن 50 (فيتغير الخط مع الزوم للشارت وينعكس )
    اما لو استخدمت (شيفت) فانه سيمد جميع الخطوط الى اول شمعة

    استخدمت الكود التالي للحل

    كود PHP:
      int gg=GetMin(shift,50) ;

    if (
    DrawPriceTrendLines) {h1=Time[currentTrough-gg]; h2=Time[lastTrough]; s7=StringConcatenate(PriceLine,h1," ",h2); t4=0;      
       
    DrawTrendLine(s7,t4,h1,MaxHigh,h2,MaxHigh,LongColour,STYLE_SOLID,1);} 
    كود PHP:
    int GetMax(int a int b){
     if(
    a>&& a>0  && b>0){
             return(
    a);}
             else{
              return(
    b); }  }
    int GetMin(int a int b){
     if(
    a<&& a>0  && b>0){
             return(
    a);}
             else{
              return(
    b); }  } 


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