مشاهدة النسخة كاملة : دورة تعلم البرمجة باحتراف
MOVING_AVERAGE
15-02-2013, 03:01 PM
الكتابة التالية تكون كالتالي
#property indicator_color1 Red
#property indicator_color2 Blue
كتابة الاسهم السابقة
#property indicator_color3 Yellow
#property indicator_color4 Lime
كتابة الكائنات الجديدة لخطوط الموفينجات
MOVING_AVERAGE
15-02-2013, 03:02 PM
كل الكتابة ستكون
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Yellow
#property indicator_color4 Lime
MOVING_AVERAGE
15-02-2013, 03:05 PM
كتابة مصفوفتين لخطوط الموفينج
double FastMA[];
double SlowMA[];
ستكون الكتابة الكلية كالتالي
#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[];
MOVING_AVERAGE
15-02-2013, 03:08 PM
الكائن الثالث يحمل الرقم 2 ولونه اصفر
الكائن الرابع يحمل الرقم 3 ولونه اخضر
MOVING_AVERAGE
15-02-2013, 03:10 PM
تحديد نوع الكائن 3 و 4
كما قلنا الكائن 3 و 4 عبارة عن خطوط لذا سيكون النوع هذه المرة خط
SetIndexStyle( 2, DRAW_LINE );
SetIndexStyle( 3, DRAW_LINE );
MOVING_AVERAGE
15-02-2013, 03:12 PM
لاتوجد اشكال للخطوط
ربط الخط بالمصفوقة سيكون كالتالي
SetIndexBuffer( 2, FastMA );
SetIndexBuffer( 1, SlowMA );
الكتابة الكلية تكون كالتالي
#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);
}
MOVING_AVERAGE
15-02-2013, 03:15 PM
الان ندخل الي الدالة start
ونكتب حلقة for لاتكرارية
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);
}
MOVING_AVERAGE
15-02-2013, 03:18 PM
الان نجمع اكواد الكائنات الرسومية مع الحلقة التكرارية سيكون لدينا التالي
#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);
}
MOVING_AVERAGE
15-02-2013, 03:34 PM
نضع خطوط الموفينجات
وهنا خط الموفينج سياخذ اخر قيمة يعني سيكون بدلالة i
يجب ان نترك الموفينج مرن اي ممكن نتحكم باعدداته الخارجية له
الاعددات الخارجية التي تهمنا في الموفينج
1- دور الموفينج
سنستعمل متغيرين خارجيين للتعبير عم دور الموفينج
extern int ExtPeriodFastMA = 7;
extern int ExtPeriodSlowMA = 15;
سنكتب هذين المتغيرين خارج الدالة ستار
2-الاعتماد نوع الموفينج هل هو سمبل اكسبنشل او غيرها
سنستعمل ايضا متغيرين للتعبير عن النوع
extern int ExtModeFastMA = 1;
extern int ExtModeSlowMA = 1;
فرضنا اننا سنستخدم الاكسبنشل في النوعين
3- الاغلقات او الافتتحات
وكما سبق سنستعمل متغيرين خارجيين لتحديد هذ المتغير
extern int ExtPriceFastMA = 0;
extern int ExtPriceSlowMA = 0;
فرضا اننا استعملنا الاغلاقات في كلا الموفينجين
MOVING_AVERAGE
15-02-2013, 03:38 PM
تكون كتابة الموفينجين داخل الحلقة التكرارية كالتالي
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
كتابة كل الكود حتي الان
#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);
}
MOVING_AVERAGE
15-02-2013, 03:41 PM
شرح كتابة الموفينجين
لقد قمنا بربط المصفوفة التي هي عبارة عن خط بقيم الموفينج المحدد
وفي كل قيمة للحلقة التكرارية وضعنا قيمة الموفينج المحدد في المصفوفة المرافقة
وعند جمع كل القيم تقوم المصفوفة باضهار خط يكون متوافق تمام مع خط الموفينج
كما يمكننا التحكم باعددات الموفينج الخارجية
فلو غيرنا في الاعددات سيتغير خط الموفينج
MOVING_AVERAGE
15-02-2013, 03:48 PM
للتحكم في اضهار او عدم اضهار خطوط الموفينج
سنستعمل متغير من النوع المنطقي
وهذا النوع كما قلنا من قبل يحمل قيمتين
سنجعل الخطوط تضهر علي حسب قيمة هذا المتغير
extern bool showMA=true
ويكون كود الاضهار او عدم الاضهار كالتالي
if(showMA==true)
{
FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
}
الكتابة الكلية
#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);
}
انا تعبت من الكتابة ساخذ شوية راحة ونكمل ان شاء الله
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
تعديل بسيط
انا لا خضت ان خطوط الموفينج ليست واضحة كتيرا
فاريد الزيادة في سمكها
ساستخدم
#property indicator_width3 2
#property indicator_width4 2
ويكون الكود الكلي كالتالي
#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);
}
MOVING_AVERAGE
22-02-2013, 03:28 PM
الان ندخل علي التقاطعات وكما قلنا سابقا نعرف التقاطع اذا تغير ترتيب الموفينجات في الشمعة السابقة و الشمعة قبل السابقة
نكتب الشمعة قبل السابقة في الكود الخاص بنا
توجد عدة طرق لعمل التقاطع نحن سنستعمل الطريقة التي تترجم ما كتبناه سابقا
نستعمل 4 متغيرات جديدة
2 للشمعة السابقة و 2 للشمعة قبل السابقة
في المتغيرين للشمعة السابقة نضع قيم الموفينج 7 و 15
double fasterEMAprevious=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+1 );
double slowerEMAprevious =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+1 );
ونفس الشئ بالنسبة للشمعة قبل السابقة
double fasterEMAprevious1=iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i+2 );
double slowerEMAprevious1 =iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i+2 );
MOVING_AVERAGE
22-02-2013, 03:33 PM
بعد ان كتب المعطيات التي نحتاجها للتقاطع
سنكتب التقاطع كما قلنا سابقا
الاتجاه يكون صاعد اذا كان الموفينج سابقا نازل ثم اصبح صاعد
وبترجمة الي لغة البرنامج
الاتجاه صاعد يعني
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAprevious1<slowerEMAprevious1)
الاتجاه نازل يعني
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAprevious1>slowerEMAprevious1)
MOVING_AVERAGE
22-02-2013, 03:35 PM
الان بعد ان وضعنا ترجمة الاتجاه الصاعد والنازل
سنضع ما نريد لما يتحقق الشرط
MOVING_AVERAGE
22-02-2013, 03:36 PM
ونحن نريد اضهار سهم صاعد لما يتحقق شرط الاتجاه الصاعد
وسهم نازل لما يتحقق شرط الاتجاه النازل
MOVING_AVERAGE
22-02-2013, 03:41 PM
فنكتب التالي
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAprevious1>slowerEMAprevious1)
{
السهم
}
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAprevious1<slowerEMAprevious1)
{
السهم
}
وكما تم تعريف سابقا
السهم الصاعد هو
CrossUp1
السهم النازل هو
CrossDown1
الان لكي يقوم البرنامج برسم السهم لابد ان نعطيه قيمة معينة لكي يرسم لنا السهم في هذه القيمة
مثلا السهم النازل نرسمه اعلي الشمعة
والسهم الصاعد نرسمه اسفل الشمعة
MOVING_AVERAGE
22-02-2013, 03:44 PM
نترجم ما سبق فتكون الكتابة كالتالي
if(fasterEMAprevious<slowerEMAprevious&&fasterEMAprevious1>slowerEMAprevious1)
{
CrossDown1[i+1]=High[i+1];
}
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAprevious1<slowerEMAprevious1)
{
CrossUp1[i+1]=Low[i+1];
}
حيث السهم يضهر علي الشمعة السابقة اما فوق الهاي او تحت اللو
لاكن هذا الاضهار للسهم لن يكون واضح جدا
لان ممكن الهاي او اللو تكون قريبة جدا من جسم الشمعة فيصبح منضر السهم غير جميل
MOVING_AVERAGE
22-02-2013, 03:58 PM
شرح ما سبق بالصور
http://www.fx-arabia.com/vb/uploaded/8190_01361537666.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/8190_01361538060.jpg
MOVING_AVERAGE
22-02-2013, 04:02 PM
ماهو الحل لكي يكون اضهار السهم اكثر وضوح
MOVING_AVERAGE
22-02-2013, 04:12 PM
سنستخدم متغير اخر هو متوسط قيمة الرنج ل 10 شمعات
ونضهر السهم بدلالته
لكي نحسب متوسط الرنج ل 10 شمعات نستخدم التالي
Range=0;
AvgRange=0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
وهذه الحلقة باختصار هي اضافة قيمة الرنج كل مرة الي المتغير AvgRange
ثم عند انتهاء اضافة 10 قيم نقسم المجموع علي 10
ونعطي قيمة القسمة الي Range
ونستخدمه لاضهار السهم بطريقة جميلة ومتناسقة مع الشموع
نغير من سمك السهم كما فعلنا مع الخط
والكود النهائي حتي الان سيكون
#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&&fasterEMAprevious1>slowerEMAprevious1)
{
CrossDown1[i+1]=High[i+1]+ Range*0.5;
}
if(fasterEMAprevious>slowerEMAprevious&&fasterEMAprevious1<slowerEMAprevious1)
{
CrossUp1[i+1]=Low[i+1]- Range*0.5;
}
}
return(0);
}
MOVING_AVERAGE
22-02-2013, 04:48 PM
الان نضيف توقيع بسيط علي المؤشر
وتم التطرق لكيفية اضهار كتابة علي الشارت في الدروس السابقة
ونرفقه ex4
لكي نحتفظ بالحقوق الفكرية للمبرمج
وهذا تطبيقي
للمؤشر الاول
http://www.fx-arabia.com/vb/uploaded/8190_01361539811.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
نعم ممكن عمل ذلك
Mohamed_Amr
04-03-2013, 05:13 PM
نعم ممكن عمل ذلك
اتمنى وعمله اخى الحبيب
واتمتى رؤيه موضوع الاكسبريت الخاص بالرينج
حيث توجد مشكله فى فتح الصفقات
وبالتوفيق ياغالى
NTTnightmare
05-03-2013, 05:27 PM
أخي موفنغ لقد بعت لك رسالة لمذا لا تجاوبني
MOVING_AVERAGE
05-03-2013, 05:34 PM
أخي موفنغ لقد بعت لك رسالة لمذا لا تجاوبني
لم تصلني اي رسالة اخي
NTTnightmare
05-03-2013, 05:56 PM
على كل أخي الكريم ممكن تساعدني في هدا الإكسبيرت خاصية البريك إيفن و تريلين ستوب لا أعلم أين أخطأة ممكن الكود إكون مفتوح عشان أشوف وين أخطأة جزاك الله خيرا
http://www.fx-arabia.com/vb/uploaded/12051_11362495232.mq4
hussien86
05-03-2013, 09:34 PM
انا مش عارف ياموفنج افريج ليه التجاهل ده وببعتلك عالخاص وفاتحلك موضوع لاضافة بسيطه مش هتاخد منك 10 دقايق
يااخي انا مش فاهم انت ليه موجود مادامك مش عايز تساعد الناس ..
NTTnightmare
06-03-2013, 12:49 AM
على الأقل رد علينا يا موفنغ كنت فاكر أن دي ورشة لتعلم أرجو من الإدارة حذف مشاركاتي من الورشة دي لأني دخلة المكان الغلط
NTTnightmare
06-03-2013, 01:21 AM
بارك الله فيك أخي الكريم
MOVING_AVERAGE
15-03-2013, 10:47 PM
وصلنا الي تعريف الدالة
ماهي الدالة
الدالة هي عملية يقوم بها الاكسبريت لتسهيل الاكواد وتجنب التكرار
وهي مهمة جدا في البرمجة
تكب الدوال خارج الدالة start
وعند مناداتها تقوم بالعملية التي برمجة لاجلها
مثال عن دالة تقوم بعملية جمع عددين
double ADD(double a,double b)
{
double c=a+b;
return(c);
}
كيف يتم مندات هذه الدالة
نقوم بمنادات هذه الدالة عن طريق كتابت اسمها ووضع الاعداد التي نريد جمعها داخل اقواس الدالة
ثم اسناد قيمتها الي متغير من نفس نوع الناتج
double s=ADD(5,20);
حيث يمكن مناداتها داخل الدالة start او خارجها حسب الاستعمال الذي نريده
meto123123
20-03-2013, 01:44 PM
بعدما ان اعلمنا البرنامج اننا سنرسم كائنين علي الشارت
لابد الان من ربط هذين الكائنين بمصفوفتين
وقبل الربط نعرف مصفوفتين من نوع double
والتعريف يكون كالتالي
double CrossUp1[];
double CrossDown1[];
كل مصفوقة اعطيتها اسم خاص بها
اذا حتي الان كتبنا التالي
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
double CrossUp1[];
double CrossDown1[];
ماشاء الله
ربنا يبارك لك صحتك ويرزقك الجنة انتا ووالديك
لى سؤال بسيط اخ موفينج
هو بدل الاسهم دى عاوز احط خط راسى vertical line
الامر بتاعها فى البرمجة يكون ازاى ( ممكن تدينى الامر نفسه الموجود فى اللغة ) يعنى تعرف الخط الراسى
وشكرا لك مرة اخرى
MOVING_AVERAGE
21-03-2013, 01:22 PM
ماشاء الله
ربنا يبارك لك صحتك ويرزقك الجنة انتا ووالديك
لى سؤال بسيط اخ موفينج
هو بدل الاسهم دى عاوز احط خط راسى vertical line
الامر بتاعها فى البرمجة يكون ازاى ( ممكن تدينى الامر نفسه الموجود فى اللغة ) يعنى تعرف الخط الراسى
وشكرا لك مرة اخرى
نعم اخي ممكن لو ترجع قليلا للخلف
ستجد انني شرحت المكان الذي تربط فيه نوع الكائن
خط او سهم او هستةغرام
MOVING_AVERAGE
21-03-2013, 01:26 PM
تحديد نوع الكائن 3 و 4
كما قلنا الكائن 3 و 4 عبارة عن خطوط لذا سيكون النوع هذه المرة خط
SetIndexStyle( 2, DRAW_LINE );
SetIndexStyle( 3, DRAW_LINE );
وهنا شرحت كيف يتم تحديد نوع الكائن ليكون خط
اما اذا كان قصدك اخي خط افقي او عمودي او مائل
فستستعمل دالة اخري هي دالة الرسم
وشرحناها فيما سبق
ونفذنا عليها تطبيق لمؤشر البايفوت
meto123123
21-03-2013, 03:42 PM
وهنا شرحت كيف يتم تحديد نوع الكائن ليكون خط
اما اذا كان قصدك اخي خط افقي او عمودي او مائل
فستستعمل دالة اخري هي دالة الرسم
وشرحناها فيما سبق
ونفذنا عليها تطبيق لمؤشر البايفوت
بارك الله فيك اشكرك بشدة اخى
هل ممكن تكمل الدورة وتعلمنا نعمل اكسبريت لمؤشر خارجى
كتطبيق بسيط وسريع
وجزاك الله خيرا
MOVING_AVERAGE
21-03-2013, 05:01 PM
بارك الله فيك اشكرك بشدة اخى
هل ممكن تكمل الدورة وتعلمنا نعمل اكسبريت لمؤشر خارجى
كتطبيق بسيط وسريع
وجزاك الله خيرا
تجود دورة للاكسبريتات
وشرحت فيها عمل اكسبريت لمؤشر صنعناه هنا
هو مؤشر تقاطع الموفينج
MOVING_AVERAGE
24-03-2013, 05:01 PM
مثال عن حالة اخري
مثلا دالة لمضاعفة اي عدد
double SS(double a)
{
double b=2*a;
return(b);
}
MOVING_AVERAGE
24-03-2013, 05:09 PM
مثال ثالث لتداخل دالتين
يعني نستخدم دالة داخل دالة اخري
مثلا
الدالة 1 تربيع اي عدد
double Vt(double a)
{
double b=a*a;
return(b);
}
الدالة 2 لجمع مربع عددين اعتمادا علي الدالة 1
double St(double a,double b)
{
double N=Vt(a)+Vt(b);
return(N);
}
نستطيع بواسطة الدوال عمل وتسهيل مهام كثيرة جدا
ملاحضات
اي دالة ممكن ترجع لنا قيمة او ممكن لا ترجع لنا قيمة وتقوم باجراء شئ محدد
مثلا رسم خط
ممكن استعمال نفس المتغير في اكثر من دالة خارج start
وبتعريفه كل مرة
MOVING_AVERAGE
24-03-2013, 05:48 PM
تطبيق مباشر
حاول كتابت دالة فايبوناتشي تحسب لنا حدود الفايبوناتشي
ونحن ما علينا الا ادخال رقم الحد لتعطيني كم يساوي ذلك الحد
imaddine
27-03-2013, 03:30 AM
بارك الله فيك اخي موفنج وفي والديك
والله موضوع مميز فعلا قمت بمراجعته من اول درس
وقد قمت بعمل الواجب :D
وساقوم بمراجعة موضوع
http://fx-arabia.net/vb/showthread.php?t=29378
متابع معاك ان شاء الله
الواجب في المرفقات
م. عبدالرحمن وردة
11-04-2013, 03:45 PM
السلام عليكم و رحمة الله و بركاته.
أخي "موفنج أفرج" بارك الله فيك و في والديك وجزاكم الله خير الجزاء.
تكملة لما قام به "الهذلي" مشكورا من تجميع الدورة على pdf حتى الصفحة 22.
فقد قمت بتجميع الباقى و وضع الكل في ملف pdf واحد.
عدد الصفحات: 108 صفحة.
حجم الملف : 1.78 Mb.
رابط التحميل:
ط¯ظˆط±ط© طھط¹ظ„ظ… ط§ظ„ط¨ط±ظ…ط¬ط© ط¨ط§ط*****طھط±ط§ظپ - ظ…ظ† ط¥ط¹ط¯ط§ط¯ ظ…ظˆظپظ†ط¬ ط£ظپط±ط¬ ظ…ظ† ظ…ظ†طھط¯ظ‰ Fx-arabia.pdf (http://www.mediafire.com/view/?n183b4501endbeh)
ayoob
12-04-2013, 12:24 AM
السلام عليكم اخي مصطفي قمت بي برمجة اكسبيرات لي iStochastic شروط الشراء ان يقطع خط MAIN خط SIGNAL الي اعلي ويكون خط MAIN و SIGNAL فوق مستوي 20 ولكن هناك خطا في الكواد لانها يفتح شراء كل ما تقطاع MAIN مع SIGNAL وهو فوق العشرين الكواد مرفق
STOK1=iStochastic(Symbol(),PERIOD_M15,5,3,3,0,0,MO DE_MAIN,1);
STOK2=iStochastic(Symbol(),PERIOD_M15,5,3,3,0,0,MO DE_MAIN,2);
STOK3=iStochastic(Symbol(),PERIOD_M15,5,3,3,0,0,MO DE_SIGNAL,1);
STOK4 =iStochastic(Symbol(),PERIOD_M15,5,3,3,0,0,MODE_SI GNAL,2);
if(STOK1>STOK3&&STOK2<STOK4&&STOK1>20&&STOK3>20)
بي انتطار تصحيح الخطا
ayoob
12-04-2013, 01:09 AM
هو الكواد صحيح في الشراء يفتح الصفقة في التقاطع ولكن كل ما تقاطع و هو فوق العشرين يفتح في شراء ان اريد كل ما قطع خط العشرين فقط والعكس في البيع
ayoob
13-04-2013, 01:15 AM
للرفع
Qadri
17-04-2013, 04:21 AM
بارك الله فيك استاذ موفينج على هذا الشرح البسيط
عندى سؤال - - لماذا لا توجد فى هذه اللغة دالة تحدد القمم والقيعان للسعر وللمؤشرات مثل الموفينج مثلا؟ انا اعلم انه يمكن عمل ذلك بتحديد اعلى او اقل قيمة فى خلال عدد من الشموع ولكن هذه الطريقة ليست دقيقة - مع العلم ان مثل هذه الدوال موجودة فى لغة برامج اخرى مثل "امى بروكر " وهى peak - trough
ارجو الا اكون اثقلت عليك بسؤالي
شكرا لك اخى الكريم
MOVING_AVERAGE
17-04-2013, 11:12 AM
هو الكواد صحيح في الشراء يفتح الصفقة في التقاطع ولكن كل ما تقاطع و هو فوق العشرين يفتح في شراء ان اريد كل ما قطع خط العشرين فقط والعكس في البيع
لم افهم المطلوب بالتحديد
MOVING_AVERAGE
17-04-2013, 11:14 AM
بارك الله فيك استاذ موفينج على هذا الشرح البسيط
عندى سؤال - - لماذا لا توجد فى هذه اللغة دالة تحدد القمم والقيعان للسعر وللمؤشرات مثل الموفينج مثلا؟ انا اعلم انه يمكن عمل ذلك بتحديد اعلى او اقل قيمة فى خلال عدد من الشموع ولكن هذه الطريقة ليست دقيقة - مع العلم ان مثل هذه الدوال موجودة فى لغة برامج اخرى مثل "امى بروكر " وهى peak - trough
ارجو الا اكون اثقلت عليك بسؤالي
شكرا لك اخى الكريم
موجودة اخي
تبحث عن القمة في مجال محدد مسبقا يواسطة highest
والقاع المحدد في مجال بواسطة lowest
faris11
20-04-2013, 08:09 PM
اشكرك اخي على تعليم الناس الخير وصلت الى الصفحة السابعة ارجو ان يجعله الله في ميزان حسناتك
MOVING_AVERAGE
21-04-2013, 11:58 AM
اشكرك اخي على تعليم الناس الخير وصلت الى الصفحة السابعة ارجو ان يجعله الله في ميزان حسناتك
بالتوفيق اخي وسنكمل الدورة قريبا ان شاء الله
imaddine
21-04-2013, 04:13 PM
في انتظار اكمال الدورة استاذ موفنج
لو كان عندك وقت طريقة عمل مؤشر على القمم والقيعان
او رسم خطوط الدعم والمقاومة اعتمادا عليها
ايضا في موضوع دورة تعليم برمجة اكسبيرت
طريقة عمل اكسبيرت على مؤشر لا يحتوي على
اندكسات لمعرفة طريقة التعامل معه وانتقال منه خطوة خطوة
الى المضاعفات وثم صفقات معلقة وغيرها اي يكون اكسبيرت شامل
للدورة ما رائيك استاذ موفنج
والله صراحة وجدت عدة مواضيع لتعليم البرمجة لكن طريقة
شرحك كانت الافضل بالنسبة لي بسيطة ومفهومة
بارك الله فيك
MOVING_AVERAGE
22-04-2013, 01:46 PM
في انتظار اكمال الدورة استاذ موفنج
لو كان عندك وقت طريقة عمل مؤشر على القمم والقيعان
او رسم خطوط الدعم والمقاومة اعتمادا عليها
ايضا في موضوع دورة تعليم برمجة اكسبيرت
طريقة عمل اكسبيرت على مؤشر لا يحتوي على
اندكسات لمعرفة طريقة التعامل معه وانتقال منه خطوة خطوة
الى المضاعفات وثم صفقات معلقة وغيرها اي يكون اكسبيرت شامل
للدورة ما رائيك استاذ موفنج
والله صراحة وجدت عدة مواضيع لتعليم البرمجة لكن طريقة
شرحك كانت الافضل بالنسبة لي بسيطة ومفهومة
بارك الله فيك
ان شاء الله اخي
لاكن كل مبرمج وله افكاره الخاصة
ربما انا ابرمج اعتمادا علي طريقة ومبرمج اخر يبرمج اعتمادا علي طريقة اخري
وان شاء الله نضع امثلة لبرمجة نفس الشئ باكثر من طريقة
vBulletin® v3.8.8