سؤال عن وظيفة SetIndexDrawBegin
ارجو من اساتذتنا الافاضل ان يقوموا بشرح تلك الوظيفه فقد مللت فعلا من Mql4 Documents
الوظيفه مستخدمه على سبيل المثال فى مؤشر hekin ashi
وهذا هو الكود الكامل للمؤشر
كود PHP:
//+------------------------------------------------------------------+
//| Heiken Ashi.mq4 |
//| Copyright c 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//| For Heiken Ashi we recommend next chart settings ( press F8 or |
//| select on menu 'Charts'->'Properties...'): |
//| - On 'Color' Tab select 'Black' for 'Line Graph' |
//| - On 'Common' Tab disable 'Chart on Foreground' checkbox and |
//| select 'Line Chart' radiobutton |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 White
#property indicator_color3 Red
#property indicator_color4 White
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 3
//----
extern color color1 = Red;
extern color color2 = White;
extern color color3 = Red;
extern color color4 = White;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//----
int ExtCountedBars=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1);
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, color3);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, color4);
SetIndexBuffer(3, ExtMapBuffer4);
//----
SetIndexDrawBegin(0,10);
SetIndexDrawBegin(1,10);
SetIndexDrawBegin(2,10);
SetIndexDrawBegin(3,10);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexBuffer(3,ExtMapBuffer4);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double haOpen, haHigh, haLow, haClose;
if(Bars<=10) return(0);
ExtCountedBars=IndicatorCounted();
//---- check for possible errors
if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars--;
int pos=Bars-ExtCountedBars-1;
while(pos>=0)
{
haOpen=(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2;
haClose=(Open[pos]+High[pos]+Low[pos]+Close[pos])/4;
haHigh=MathMax(High[pos], MathMax(haOpen, haClose));
haLow=MathMin(Low[pos], MathMin(haOpen, haClose));
if (haOpen<haClose)
{
ExtMapBuffer1[pos]=haLow;
ExtMapBuffer2[pos]=haHigh;
}
else
{
ExtMapBuffer1[pos]=haHigh;
ExtMapBuffer2[pos]=haLow;
}
ExtMapBuffer3[pos]=haOpen;
ExtMapBuffer4[pos]=haClose;
pos--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
رد: سؤال عن وظيفة SetIndexDrawBegin
رد: سؤال عن وظيفة SetIndexDrawBegin
السلام عليكم و رحمة الله و بركاته
الوظيفة تشرح نفسها draw begin يعني بداية الرسم أو بداية رسم المؤشر :
كود PHP:
SetIndexDrawBegin(int index,int begin);
index : تحديد الخط
begin : الشمعة التي سيبدأ منها الرسم
أرجو أن أكون قد أفدتك.
رد: سؤال عن وظيفة SetIndexDrawBegin
هذه الوظيفة تجبر المؤشر أن يبدأ الرسم من الشمعة العاشرة مثلا .
وهو رقم الشمعة من أول المؤشر ( الشمعات الأقدم ) وليس من آخره .
وهي مفيدة في حال كان المؤشر مزاح قليلا ويحتاج إلى عشرة شمعات مثلا ليبدأ الرسم فعليا على الشارت .
رد: سؤال عن وظيفة SetIndexDrawBegin
اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
هذه الوظيفة تجبر المؤشر أن يبدأ الرسم من الشمعة العاشرة مثلا .
وهو رقم الشمعة من أول المؤشر ( الشمعات الأقدم ) وليس من آخره .
وهي مفيدة في حال كان المؤشر مزاح قليلا ويحتاج إلى عشرة شمعات مثلا ليبدأ الرسم فعليا على الشارت .
لك جزيل الشكر استاذ وضاح
لكن عندما اشرت الى الشمعات الأقدم هل قصدت انه يبدا الرسم من على اليسار (اول الشارت من اليسار) ؟
رد: سؤال عن وظيفة SetIndexDrawBegin
اقتباس:
المشاركة الأصلية كتبت بواسطة lovely2kitten
لك جزيل الشكر استاذ وضاح
لكن عندما اشرت الى الشمعات الأقدم هل قصدت انه يبدا الرسم من على اليسار (اول الشارت من اليسار) ؟
نعم
الشمعات الأقدم من اليسار بحيث يبدأ العد من أول وأقدم شمعة من اليسار .
يمكن الذهاب طبعا لأقدم شمعة عن طريق الزر Home في لوحة المفاتيح .