اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex (https://fx-arabia.com/vb/index.php)
-   منتدى المؤشرات و الاكسبيرتات (https://fx-arabia.com/vb/forumdisplay.php?f=6)
-   -   دورة تعلم البرمجة باحتراف (https://fx-arabia.com/vb/showthread.php?t=27491)

MOVING_AVERAGE 15-02-2013 01:30 PM

رد: دورة تعلم البرمجة باحتراف
 
[PHP]
int style=EMPTY
[/PHP]

هذه الكتابة لن تهمنا في حالة الاسهم

وسنتكتبها كالتالي

[PHP]
EMPTY
[/PHP]

يمكننا التوقف الان وعدم اكمال باقي الخانات لو نريد

الكتابة الي حد الان

[PHP]
SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
[/PHP]

في هذه الكتابة عرفنا الانواع التي سنرسمها علي الشارت

انا انصح بالكتابة الي هنا فقط

MOVING_AVERAGE 15-02-2013 01:32 PM

رد: دورة تعلم البرمجة باحتراف
 
[PHP]
int width=EMPTY

هذه الكتابة للتحكم في حجم الكائن

[/PHP]



[PHP]

color clr=CLR_NONE

وهذه الكتابة للتحكم في لون الكائن
[/PHP]

MOVING_AVERAGE 15-02-2013 01:33 PM

رد: دورة تعلم البرمجة باحتراف
 
بما اننا اخترنا الاسهم فسيكون لها اشكال كثيرة جدا

MOVING_AVERAGE 15-02-2013 01:41 PM

رد: دورة تعلم البرمجة باحتراف
 
الكائن الاول لونه احمر

والكائن الثاني لونه ازرق

خسب الكتابات السابقة

الان نحن نريد ربط السهم النازل بالكائن الاول

والسهم الصاعد بالكائن الثاني

كما قلنا الكائن الاول هو 0

والكائن الثاني هو 1

لكي نربط الاشكال بالكائنات نستعمل التالي

[PHP]
SetIndexArrow( int index, int code)
[/PHP]حيث

[PHP]
int index
[/PHP]رقم الكائن

[PHP]
int code
[/PHP]كود الكائن

ويمكننا في هذه الخانة وضع اعداد ما بين 33 الي 255

وكل عدد له شكل معين

انا استخدم

الاعداد 233 للسهم الصاعد

234 للسهم النازل

اذا عملية تحديد الشكل ستكون كالتالي

[PHP]
SetIndexArrow(0, 234);
SetIndexArrow(1, 233);
[/PHP]وكل الكتابة التي شرحناها هي

[PHP]
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
[/PHP]حتي الان قمنا بتحديد نوع الكائن وشكل الكائن حسب اللون

MOVING_AVERAGE 15-02-2013 01:45 PM

رد: دورة تعلم البرمجة باحتراف
 
اخر شئ في داخل الدالة init

هو ربط الكائن بالمصفوفة التي عرفناها من قبل

ويتم الربط بواسطة الجملة

[PHP]
SetIndexBuffer( int index, double array[])
[/PHP]

حيث

[PHP]
int index
[/PHP]

رقم الكائن

[PHP]
double array[])
[/PHP]

اسم المصفوفة

هنا يجب وضع اسم المصفوفة بدون

[PHP]
[]
[/PHP]

نرجع الي مثالنا

MOVING_AVERAGE 15-02-2013 01:54 PM

رد: دورة تعلم البرمجة باحتراف
 
في مثالنا وضعنا

الكائن رقم 0 سهم احمر ونازل للاسفل فمن المنطقي ان نسميه

[PHP]
CrossDown1
[/PHP]

الكائن رقم 1 بسهم ازرق وسهم صاعد الي الاعلي فمن المنطقي ان نسميه

[PHP]
CrossUp1
[/PHP]

ترجمة ما سبق الي البرنامج

[PHP]
SetIndexBuffer(1, CrossUp1);

SetIndexBuffer(0, CrossDown1);
[/PHP]

كل الكتابة السابقة هي

[PHP]
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);


SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);

[/PHP]

MOVING_AVERAGE 15-02-2013 01:57 PM

رد: دورة تعلم البرمجة باحتراف
 
يعني كتابتنا العامة للكود وادخال كائنين علي الشارت وتحديد نوعهم وشكلهم ولونهم

ستكون

[PHP]
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue



double CrossUp1[];
double CrossDown1[];



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
[/PHP]

MOVING_AVERAGE 15-02-2013 02:01 PM

رد: دورة تعلم البرمجة باحتراف
 
لكي نعمل مؤشر احترافي لابد ان تضهر لنا خطوط الموفينجات علي الشارت

ولكي نضهر خطوط الموفينجات علي الشارت سنعيد نفس عملية الاسهم لاكننا بتغير نوع الكائن الي خط بدل السهم

وازالة شكل الخط لان الخط ليس له شكل

MOVING_AVERAGE 15-02-2013 02:01 PM

رد: دورة تعلم البرمجة باحتراف
 
في انتضار اي اسئلة لكي نكمل المؤشر

MOVING_AVERAGE 15-02-2013 02:58 PM

رد: دورة تعلم البرمجة باحتراف
 
لاضهار خطوط الموفينج سنستعمل كائنين اخرين علي الشارت

فتصبح الكتابة الاولي كالتالي

[PHP]
#property indicator_buffers 4
[/PHP]

يعني سنستخدم 4 كائنات

2 للاسهم و 2 لخطوط الموفينج

MOVING_AVERAGE 15-02-2013 03:01 PM

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

[PHP]

#property indicator_color1 Red
#property indicator_color2 Blue
كتابة الاسهم السابقة

#property indicator_color3 Yellow
#property indicator_color4 Lime
كتابة الكائنات الجديدة لخطوط الموفينجات
[/PHP]

MOVING_AVERAGE 15-02-2013 03:02 PM

رد: دورة تعلم البرمجة باحتراف
 
كل الكتابة ستكون

[PHP]
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime
[/PHP]

MOVING_AVERAGE 15-02-2013 03:05 PM

رد: دورة تعلم البرمجة باحتراف
 
كتابة مصفوفتين لخطوط الموفينج

[PHP]
double FastMA[];
double SlowMA[];
[/PHP]

ستكون الكتابة الكلية كالتالي

[PHP]
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime



double CrossUp1[];
double CrossDown1[];

double FastMA[];
double SlowMA[];
[/PHP]

MOVING_AVERAGE 15-02-2013 03:08 PM

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

الكائن الرابع يحمل الرقم 3 ولونه اخضر

MOVING_AVERAGE 15-02-2013 03:10 PM

رد: دورة تعلم البرمجة باحتراف
 
تحديد نوع الكائن 3 و 4

كما قلنا الكائن 3 و 4 عبارة عن خطوط لذا سيكون النوع هذه المرة خط

[PHP]
SetIndexStyle( 2, DRAW_LINE );
SetIndexStyle( 3, DRAW_LINE );
[/PHP]

MOVING_AVERAGE 15-02-2013 03:12 PM

رد: دورة تعلم البرمجة باحتراف
 
لاتوجد اشكال للخطوط

ربط الخط بالمصفوقة سيكون كالتالي

[PHP]
SetIndexBuffer( 2, FastMA );
SetIndexBuffer( 1, SlowMA );
[/PHP]

الكتابة الكلية تكون كالتالي

[PHP]
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime



double CrossUp1[];
double CrossDown1[];

double FastMA[];
double SlowMA[];



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);

SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer( 1, SlowMA );


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
[/PHP]

MOVING_AVERAGE 15-02-2013 03:15 PM

رد: دورة تعلم البرمجة باحتراف
 
الان ندخل الي الدالة start

ونكتب حلقة for لاتكرارية

[PHP]
int start()
{
int x,i;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;

for(i =0 ; i<x ; i++)
{



}

return(0);
}
[/PHP]

MOVING_AVERAGE 15-02-2013 03:18 PM

رد: دورة تعلم البرمجة باحتراف
 
الان نجمع اكواد الكائنات الرسومية مع الحلقة التكرارية سيكون لدينا التالي

[PHP]
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime



double CrossUp1[];
double CrossDown1[];

double FastMA[];
double SlowMA[];



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);

SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer(3, SlowMA );


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int x,i;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;

for(i =0 ; i<x ; i++)
{



}

return(0);
}
[/PHP]

MOVING_AVERAGE 15-02-2013 03:34 PM

رد: دورة تعلم البرمجة باحتراف
 
نضع خطوط الموفينجات

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

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

الاعددات الخارجية التي تهمنا في الموفينج

1- دور الموفينج

سنستعمل متغيرين خارجيين للتعبير عم دور الموفينج

[PHP]
extern int ExtPeriodFastMA = 7;
extern int ExtPeriodSlowMA = 15;
[/PHP]سنكتب هذين المتغيرين خارج الدالة ستار

2-الاعتماد نوع الموفينج هل هو سمبل اكسبنشل او غيرها

سنستعمل ايضا متغيرين للتعبير عن النوع

[PHP]
extern int ExtModeFastMA = 1;
extern int ExtModeSlowMA = 1;
[/PHP]فرضنا اننا سنستخدم الاكسبنشل في النوعين

3- الاغلقات او الافتتحات

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

[PHP]
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;
[/PHP]فرضا اننا استعملنا الاغلاقات في كلا الموفينجين

MOVING_AVERAGE 15-02-2013 03:38 PM

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

[PHP]
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
[/PHP]

كتابة كل الكود حتي الان

[PHP]
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime



double CrossUp1[];
double CrossDown1[];

double FastMA[];
double SlowMA[];

extern int ExtPeriodFastMA = 7;
extern int ExtPeriodSlowMA = 15;
extern int ExtModeFastMA = 1;
extern int ExtModeSlowMA = 1;
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);

SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer( 3, SlowMA );


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int x,i;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;

for(i =0 ; i<x ; i++)
{

FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );

}

return(0);
}
[/PHP]

MOVING_AVERAGE 15-02-2013 03:41 PM

رد: دورة تعلم البرمجة باحتراف
 
شرح كتابة الموفينجين

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

وفي كل قيمة للحلقة التكرارية وضعنا قيمة الموفينج المحدد في المصفوفة المرافقة

وعند جمع كل القيم تقوم المصفوفة باضهار خط يكون متوافق تمام مع خط الموفينج

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

فلو غيرنا في الاعددات سيتغير خط الموفينج

MOVING_AVERAGE 15-02-2013 03:48 PM

رد: دورة تعلم البرمجة باحتراف
 
للتحكم في اضهار او عدم اضهار خطوط الموفينج

سنستعمل متغير من النوع المنطقي

وهذا النوع كما قلنا من قبل يحمل قيمتين

سنجعل الخطوط تضهر علي حسب قيمة هذا المتغير

[PHP]
extern bool showMA=true
[/PHP]

ويكون كود الاضهار او عدم الاضهار كالتالي

[PHP]
if(showMA==true)
{
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
}
[/PHP]

الكتابة الكلية

[PHP]
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime


extern bool showMA=true;

double CrossUp1[];
double CrossDown1[];

double FastMA[];
double SlowMA[];

extern int ExtPeriodFastMA = 7;
extern int ExtPeriodSlowMA = 15;
extern int ExtModeFastMA = 1;
extern int ExtModeSlowMA = 1;
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);

SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer( 3, SlowMA );


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int x,i;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;

for(i =0 ; i<x ; i++)
{
if(showMA==true)
{
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
}

}

return(0);
}

[/PHP]

انا تعبت من الكتابة ساخذ شوية راحة ونكمل ان شاء الله

MOVING_AVERAGE 22-02-2013 02:42 PM

رد: دورة تعلم البرمجة باحتراف
 
شباب اليوم ان شاء الله ساركز غلي الدورتين فقط لكي انتهي من اول مؤشر واول اكسبريت

Mohamed_Amr 22-02-2013 02:43 PM

رد: دورة تعلم البرمجة باحتراف
 
تسلم الايادى اخى موفينج
بارك الله فيك

MOVING_AVERAGE 22-02-2013 02:44 PM

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

واختيار اضهارهما او لا

MOVING_AVERAGE 22-02-2013 02:51 PM

رد: دورة تعلم البرمجة باحتراف
 
تعديل بسيط

انا لا خضت ان خطوط الموفينج ليست واضحة كتيرا

فاريد الزيادة في سمكها

ساستخدم

[PHP]
#property indicator_width3 2
#property indicator_width4 2
[/PHP]

ويكون الكود الكلي كالتالي

[PHP]

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime
#property indicator_width3 2
#property indicator_width4 2


extern bool showMA=true;

double CrossUp1[];
double CrossDown1[];

double FastMA[];
double SlowMA[];

extern int ExtPeriodFastMA = 7;
extern int ExtPeriodSlowMA = 15;
extern int ExtModeFastMA = 1;
extern int ExtModeSlowMA = 1;
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);

SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer( 3, SlowMA );


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int x,i;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;

for(i =0 ; i<x ; i++)
{
if(showMA==true)
{
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
}

}

return(0);
}
[/PHP]

MOVING_AVERAGE 22-02-2013 03:28 PM

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

نكتب الشمعة قبل السابقة في الكود الخاص بنا

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

نستعمل 4 متغيرات جديدة

2 للشمعة السابقة و 2 للشمعة قبل السابقة

في المتغيرين للشمعة السابقة نضع قيم الموفينج 7 و 15

[PHP]
double fasterEMAprevious=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+1 );
double slowerEMAprevious =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+1 );
[/PHP]ونفس الشئ بالنسبة للشمعة قبل السابقة

[PHP]
double fasterEMAprevious1=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+2 );
double slowerEMAprevious1 =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+2 );
[/PHP]

MOVING_AVERAGE 22-02-2013 03:33 PM

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

سنكتب التقاطع كما قلنا سابقا

الاتجاه يكون صاعد اذا كان الموفينج سابقا نازل ثم اصبح صاعد

وبترجمة الي لغة البرنامج

الاتجاه صاعد يعني

[PHP]
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAp revious1<slowerEMAprevious1)
[/PHP]

الاتجاه نازل يعني

[PHP]
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAp revious1>slowerEMAprevious1)
[/PHP]

MOVING_AVERAGE 22-02-2013 03:35 PM

رد: دورة تعلم البرمجة باحتراف
 
الان بعد ان وضعنا ترجمة الاتجاه الصاعد والنازل

سنضع ما نريد لما يتحقق الشرط

MOVING_AVERAGE 22-02-2013 03:36 PM

رد: دورة تعلم البرمجة باحتراف
 
ونحن نريد اضهار سهم صاعد لما يتحقق شرط الاتجاه الصاعد

وسهم نازل لما يتحقق شرط الاتجاه النازل

MOVING_AVERAGE 22-02-2013 03:41 PM

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

[PHP]
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAp revious1>slowerEMAprevious1)
{
السهم
}

if(fasterEMAprevious>slowerEMAprevious&&fasterEMAp revious1<slowerEMAprevious1)
{
السهم
}
[/PHP]

وكما تم تعريف سابقا

السهم الصاعد هو

[PHP]
CrossUp1
[/PHP]

السهم النازل هو

[PHP]
CrossDown1
[/PHP]

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

مثلا السهم النازل نرسمه اعلي الشمعة

والسهم الصاعد نرسمه اسفل الشمعة

MOVING_AVERAGE 22-02-2013 03:44 PM

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

[PHP]
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAp revious1>slowerEMAprevious1)
{
CrossDown1[i+1]=High[i+1];
}
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAp revious1<slowerEMAprevious1)
{
CrossUp1[i+1]=Low[i+1];
}
[/PHP]حيث السهم يضهر علي الشمعة السابقة اما فوق الهاي او تحت اللو

لاكن هذا الاضهار للسهم لن يكون واضح جدا

لان ممكن الهاي او اللو تكون قريبة جدا من جسم الشمعة فيصبح منضر السهم غير جميل

MOVING_AVERAGE 22-02-2013 03:58 PM

رد: دورة تعلم البرمجة باحتراف
 
شرح ما سبق بالصور

http://www.fx-arabia.com/vb/uploaded...1361537666.jpg


نعتبر ان الخط الازرق هو خط الشمعة الحالية

يعني الشموع التي خلفه لم تتشكل بعد

الشمعة رقم 1 كما موضح والحلقة التكرارية هي i+1

الشمعة رقم 2 كما موضح والحلقة التكرارية هي i+2

اذا لما تتكون اخر شمعة ولم تغلق يقوم المؤشر بالمقارنة بين الشمعة 1 والشمعة 2

حيث يقارن بين الموفينجين في الشمعة 1 والموفينجين في الشمعة 2

اذا تحقق شروط التقاطع سيرسم لنا سهم علي الشمعة رقم 1

هذا هو شرح العمل الذي قمنا به الي الان

MOVING_AVERAGE 22-02-2013 04:01 PM

رد: دورة تعلم البرمجة باحتراف
 
السهم في الرسم للشمعة 1 غير مكتمل للاسف انا اقصد الشمعة

http://www.fx-arabia.com/vb/uploaded...1361538060.jpg

MOVING_AVERAGE 22-02-2013 04:02 PM

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

MOVING_AVERAGE 22-02-2013 04:12 PM

رد: دورة تعلم البرمجة باحتراف
 
سنستخدم متغير اخر هو متوسط قيمة الرنج ل 10 شمعات

ونضهر السهم بدلالته

لكي نحسب متوسط الرنج ل 10 شمعات نستخدم التالي



[PHP]

Range=0;
AvgRange=0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;

[/PHP]

وهذه الحلقة باختصار هي اضافة قيمة الرنج كل مرة الي المتغير AvgRange

ثم عند انتهاء اضافة 10 قيم نقسم المجموع علي 10

ونعطي قيمة القسمة الي Range

ونستخدمه لاضهار السهم بطريقة جميلة ومتناسقة مع الشموع

نغير من سمك السهم كما فعلنا مع الخط

والكود النهائي حتي الان سيكون

[PHP]

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2


extern bool showMA=true;

double CrossUp1[];
double CrossDown1[];

double FastMA[];
double SlowMA[];

extern int ExtPeriodFastMA = 7;
extern int ExtPeriodSlowMA = 15;
extern int ExtModeFastMA = 1;
extern int ExtModeSlowMA = 1;
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 234);
SetIndexBuffer(0, CrossDown1);

SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 233);
SetIndexBuffer(1, CrossUp1);

SetIndexStyle( 2, DRAW_LINE );
SetIndexBuffer( 2, FastMA );
SetIndexStyle( 3, DRAW_LINE );
SetIndexBuffer( 3, SlowMA );


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int x,i, counter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
x=Bars-counted_bars;

for(i =0 ; i<x ; i++)
{
if(showMA==true)
{
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
}
Range=0;
AvgRange=0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
double fasterEMAprevious=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+1 );
double fasterEMAprevious1=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+2 );
double slowerEMAprevious =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+1 );
double slowerEMAprevious1 =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+2 );
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAp revious1>slowerEMAprevious1)
{
CrossDown1[i+1]=High[i+1]+ Range*0.5;
}
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAp revious1<slowerEMAprevious1)
{
CrossUp1[i+1]=Low[i+1]- Range*0.5;
}

}

return(0);
}
[/PHP]

MOVING_AVERAGE 22-02-2013 04:48 PM

رد: دورة تعلم البرمجة باحتراف
 
1 مرفق
الان نضيف توقيع بسيط علي المؤشر

وتم التطرق لكيفية اضهار كتابة علي الشارت في الدروس السابقة

ونرفقه ex4



لكي نحتفظ بالحقوق الفكرية للمبرمج

وهذا تطبيقي

للمؤشر الاول

http://www.fx-arabia.com/vb/uploaded...1361539811.jpg

اتمني ان اري تطبيقاتكم شباب واي استفسار

MOVING_AVERAGE 04-03-2013 04:54 PM

رد: دورة تعلم البرمجة باحتراف
 
نكمل الدورة ان شاء الله

اذا كانت هناك فكرة اي مؤشر لكي ننفذها في الدورة فتفضلوا اخواني بطرحها

Mohamed_Amr 04-03-2013 05:05 PM

رد: دورة تعلم البرمجة باحتراف
 
ربى يبارك فيك اخى موفينج
ولى استفسار هل ممكن عمل مؤشر رينج يومى
فى نافذة مستقله عن الشارت ويظهر لنا الرينج اليومى
لعشر ازاوج مثلا ؟

MOVING_AVERAGE 04-03-2013 05:08 PM

رد: دورة تعلم البرمجة باحتراف
 
نعم ممكن عمل ذلك


الساعة الآن 09:07 PM

Powered by vBulletin® Copyright ©2000 - 2024

جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com