النتائج 1 إلى 9 من 9
الموضوع: كيف اعدل هذا الكود
- 16-08-2015, 03:15 AM #1
كيف اعدل هذا الكود
السلام عليكم
هذا المؤشر للدايقرنجيس مع الار اس اي
المطلوب منه :
1 - زيادة القمم والقيعان
لأنه الآن يظهر اقرب قمة وقاع فقط
2 - وضع خط افقى لأعلى قمة بين قاعين دقرانجيس
او ادنى قاع بين قمتين
كمستهدف
فكيف اهدل الكود التالي ليقوم بالمطلوب
لم اعرف اين الجزئية المسؤولة عن اختيار القمم والقيعان
وهل سأحتاج ( لوبينج ) للبحث عن اعلى قمة بين قاعي دايفرنجيس
جزاكم الله خيرا
كود 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);
}
}
- 16-08-2015, 07:14 AM #2
يبدو ان مبتغاي في هذه الأسطر
وهو من التعقيد بمكان فيحتاج اكثر من (لوبينج)
اعتذر منكم
ماذا يقصد بـ j++
+++++++++ ما اجملك يا (vb.net) لكن mq4 لا يقبل غير C++ ++++++++++++
كود PHP:int GetIndicatorLastPeak(int shift)
{
for(int j = shift + 500; [COLOR="#FF0000"]j < Bars; j++[/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 + 500; j < Bars; j++)
{
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);
}
- 16-08-2015, 10:19 AM #3
في هذا الكود فهو يبحث عن قمة أو القاع التي تبعد عن آخر قمة أو قاع تم تحديدها بعدد 5 شموع
كود PHP:for(int j = shift + 5; j < Bars; 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);
}
- 16-08-2015, 12:13 PM #4
شاكرا لك افضالك استاذي الكريم
يبدو اني سأحتاج الى تعلم دوال هذه اللغة من البداية ثم اعادة بناءه من الصفر
بخصوص الخمس شموع
في الاقتباس اعلاه انا رفعته الى 500 شمعة
for(int j = shift + 500; j < Bars; j++)
لكن بدون نتيجة
فهو يبحث عن اقرب قاع او قمة ثم يتوقف
---
جزئية القمة بين القاعين
ارى انك كتبت MaxRSI وانا اريد قمة في السعر وليس المؤشر
ساجربها باذن الله
- 18-08-2015, 12:11 AM #5
- 18-08-2015, 09:05 AM #6
الله يجزاك خير ويرحم والديك
لازلت اعاني من بناء الاكواد وصيغها
ويبدو اني سأبدأ المؤشر من جديد (اردت ان اعدل عليه اختصارا للوقت والجهد)
فان سمح لك وقتك اكون لك من الشاكرين
استاذي الفاضل
لماذا يقبل بهذا
كود 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]<>0
كود PHP:Try
Catch
End Try
- 18-08-2015, 07:46 PM #7
- 18-08-2015, 08:12 PM #8
https://forum.arabictrader.com/t93679.html#post1662296
شكرا استاذ اسامة
الاجابة وجدتها اعلاه
- 19-08-2015, 09:00 AM #9
بفضل الله
تم ضبط الخط الأفقي
وبقي زيادة القمم والقيعان
شكرا استاذ اسامة
تعمدت مد الخط مسافة محددة الى اليسار
اخترت 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>b && a>0 && b>0){
return(a);}
else{
return(b); } }
int GetMin(int a , int b){
if(a<b && a>0 && b>0){
return(a);}
else{
return(b); } }