طريقه تصميم مؤشر موفنج افرج
السلام عليكم
اخواني بما اننا في اجازه
دعونا نتعلم نصنع موشراتنا بانفسنا
الموفنج افرج من المؤشرات المهمه في تداولاتنا سواء اللحظيه او السوينقيه
والكثير من المتداولين يستخدمون الموفنج افرج على الفريم اليومي او اربع ساعات ولكن متابعتهم تكون على الفريمات الصغيره لاقتناص الفرص السريعه سكالبينج
خطرت في بالي فكره تصميم موفنج افرج ولكن متعدد الفريمات
احببت ان تشاركوني خطوات تركيبه خطوه خطوه
وليكن تدريب عملي على شروحات اساتذتنا
الاستاذ وضاح عطار والاستاذ اسامه ( مستر دولار )
بسم الله نبداء اول الخطوات
اولى الخطوات لعمل المؤشر مشروحه في هذه المشاركه للاستاذ وضاح عطار
اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
والآن لنبدأ في الخطوات المباشرة لكتابة النص البرمجي للمؤشر: 1- شغل برنامج التداول ميتا تريدر. 2- اضغط F4 أو انقر الأيقونة الصفراء أعلى وسط برنامج التداول. 3- سوف يظهر برنامج الميتا إيديتور. اضغط Ctrl+N لإنشاء برنامج جديد. 4- سوف يظهر نافذة نحدد من خلالها نوع البرنامج الذي نريد إنشائه وهو عبارة عن مؤشر ولذلك نختار Custom Indicator. ثم نضغط زر التالي. 5- سوف يظهر نافذة أخرى نكتب فيها اسم المؤشر Candle Length في حقل Name. 6- نكتب أيضا معلومات الحقوق المحفوظة في حقل Author. 7- نكتب اسم الموقع أو الإيميل في الحقل Link. 8- الاسم ضروري كتابته أما الحقوق المحفوظة والرابط فهما اختياريان ولكن يفضل ليكون العمل احترافيا أن نكتبهما. 9- نضغط زر التالي لتظهر نافذة أخرى جديدة. 10- ما يهمنا فيها أن نختار أن المؤشر الجديد سيظهر في نافذة منفصلة لذلك نضع علامة اختيار على الخيار Indicator in separate window. 11- نضغط إنهاء وعندها ستظهر نافذة المؤشر مع قليل من الكود البرمجي وتبقى علينا مهمة إكماله بالفكرة التي نريد من مؤشرنا أن يقوم بها. شرح أولي للكود الذي ظهر لنا: - أي شيء يظهر باللون الفضي هو عبارة عن تعليقات لا يتم تنفيذها وإنما تساعدنا على تنسيق الكود وإضافة شرح داخل النص البرمجي نفسه. - أول سطرين نراهما باللون الأزرق هما الأمرين الذين وضعنا فيهما نص الحقوق المحفوظة ونص الرابط وهما على الشكل التالي: - بعد ذلك يأتينا سطر هام آخر نحدد من خلاله أن المؤشر سيظهر في نافذة منفصلة. وهو على الشكل التالي: كود PHP:
#property indicator_separate_window
- نستطيع بسهولة تغيير هذه الخاصية باستبدال السطر السابق بالسطر التالي: كود PHP:
#property indicator_chart_window
- بعد ذلك نجد الكود التالي ( بعد حذف التعليقات منه ): كود PHP:
#property copyright "Copyright © 2007"
#property link "[email protected]"
#property indicator_chart_window
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int counted_bars=IndicatorCounted();
return(0);
}
الكود السابق هو عبارة عن ثلاثة وظائف خاصة بلغة MQL4. الوظيفة init نضع فيها كل الأوامر البرمجية التي نريد تنفيذها مرة واحدة عند بدء تشغيل البرنامج ( المؤشر ). الوظيفة start نضع فيها كل الأوامر البرمجية التي نريد تنفيذها مع كل تغير في السعر. الوظيفة deinit نضع فيها كل الأوامر البرمجية التي نريد تنفيذها مرة واحدة عند إزالة المؤشر من على الشارت. شرح أكثر للوظيفة Function وطريقة كتابتها بشكل عام: كما قلنا في الدرس الأول أن الوظيفة عبارة عن كتلة من الأوامر البرمجية تنفذ بكتابة اسم الوظيفة. وهذه الوظيفة تعود لنا بقيمة نختارها عن طريق الأمر return وغالبا يكون موجودا آخر الوظيفة. لكل وظيفة اسم يجب أن يكون ملائما لشروط التسمية في لغة MQL4 وهي: - أن يبدأ اسم الوظيفة بحرف وليس رقم. - أن لا يزيد عن أربعين حرف. - أن لا يحتوي على رموز ممنوعة مثل + - \ / * % ^ # % @ ! الخ. - أن لا يكون أحد الأسماء المحجوزة للغة MQL4 نفسها مثل print و int وغيرها من الكلمات المحجوزة التي لا يمكننا تسمية وظائفنا بها. كما يجب أن نحدد للوظيفة نوع القيمة التي ستعود بها هل هي رقمية أو نصية أو غيرها من أنواع البيانات المعروفة. تكون الصيغة النصية لكتابة وظيفة ما على الشكل التالي: نكتب أولا نوع القيمة العائدة مثل int أو double حيث int تعني أن القيمة العائدة رقم صحيح مثل 859 و double تعني أن القيمة المعادة رقم بفاصلة عائمة مثل 1.2358. بعد ذلك نكتب اسم الوظيفة وفق شروط التسمية التي شرحناها أعلاه. بعد ذلك نكتب قوسين هلاليين يغلق الثاني الأول على الشكل (). بعد ذلك نفتح قوسين استهلاليين {} نكتب داخلهما الكود الذي نريد. وتكون صيغة الوظيفة النهائية على الشكل التالي: كود PHP:
int FunctionName()
{
return(0);
}
كما يمكن أن نكتبها كلها على سطر واحد كالتالي: كود PHP:
int FunctionName() { return(0); }
وتوزيع الوظيفة على أكثر من سطر هو لسهولة القراءة فقط من قبل المبرمج أو من سيطلع على الكود بشكل عام.
وبتطبيق الشرح السابق للاستاذ وضاح عطار
ينتج لدينا الكود التالي
كود:
//+------------------------------------------------------------------+
//| MOVING AVERAGE MFT 101.mq4 |
//| |
//|
www.arabictrader.com |
//+------------------------------------------------------------------+
#property copyright "101"
#property link "
[email protected]"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
//----
return(0);
}
//+------------------------------------------------------------------+
رد: طريقه تصميم مؤشر موفنج افرج
الان نقوم بتحديد خصائص الموفنج افرج
وجعلها متغيرات خارجيه لسهوله التحكم بها
وهي على النحو التالي :
كود:
#property indicator_buffers 1
كود:
#property indicator_color1 Red
هذا الكود لتحديد عدد الخطوط التي ستظهر على الشارت ولون الخط
كود:
extern int TimeFrame= 240;
كود:
extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
السطر الاول من الكود هو لتحديد الفريم المستخدم
السطر الثاني عباره عن نوته لتوضيح الفريمات المستخدمه والرقم الذي يقابل كل فريم
وسوف تظهر في اعدادات المؤشر عند وضعه على الشارت
كود:
extern int MA_Period=14;
كود لاختيار المتوسط الحسابي المستخدم
كود:
extern int MA_Shift=0;
هذا الكود لتحديد مقدار الازاحه للمتوسط المتحرك
كود:
extern int MA_Method=0;
كود:
extern string note_MA_Method="0=SMA;1=EMA;2=SMMA;LWMA";
السطر الاول من الكود هو لتوضيح نوع المتوسط الحسابي
السطر الثاني نوته لتوضيح انواع المتوسطات الحسابيه والرقم الذي يمثل كل متوسط حسابي
وبذلك نكون انتهينا من اول جزء من المؤشر
وهو تحديد خصائص المؤشر
وهذا الكود بعد اضافه الخصائص السابقه
كود:
//+------------------------------------------------------------------+ //| MOVING AVERAGE MFT 101.mq4 | //| | //| www.arabictrader.com | //+------------------------------------------------------------------+ #property copyright "101" #property link "[email protected]" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- indicator parameters extern int TimeFrame= 240; extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF"; extern int MA_Period=14; extern int MA_Shift=0; extern int MA_Method=0; extern string note_MA_Method="0=SMA;1=EMA;2=SMMA;LWMA"; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
//----
return(0);
}
//+------------------------------------------------------------------+
تصبحو على خير نكمل في الغد باذن الله
رد: طريقه تصميم مؤشر موفنج افرج
السلام عليكم
نكمل مابدئناه
بعد تحديد خصائص المؤشر
ناتي الان لتحديد الشكل الذي سيتم به وضع المؤشر على الشارت هل خطوط او نقط او ارقام او غيرها
في البدء نقوم بتعريف متغير داخلي ويكون على شكل مصفوفه يعني نضع بعد المتغير الرمز [ ]
ويكون بالكود التالي
بعد ذلك نحدد الشكل الذي سيظهر به المؤشر على الشارت
ويتم عمل ذلك في الوظيفه الخاصه INIT
كود:
SetIndexStyle(0, DRAW_LINE, EMPTY,1);
هذا الكود لتحديد شكل المؤشر وسماكته
كود:
SetIndexShift(0,MA_Shift);
هذا الكود لتعريف مقدار الازاحه وربطه بالمؤشر
كود:
SetIndexBuffer(0, maf);
هذا الكود لتحديد ان المواصفات والخصائص السابقه خاصه بالمتغير maf
الان انتهينا من تحديد الشكل الرسومي للمؤشر
رد: طريقه تصميم مؤشر موفنج افرج
ننتقل لطريقه حساب الموشر ويتم ذلك في الوظيفه START
في البدء
للقيام بحساب متوسط حسابي للشموع التي على الشارت يجب علينا في البدء عمل حلقه تقوم بحساب قيمه المتوسط الحسابي لكل شمعه
وهذه الحلقه لها متغيرت يجب تعريفها
ولجعل المؤشر يحسب على حسب الفريم المطلوب ايضاً له حلقه يجب تعريف متغيراتها
قبل البدء في تعريف المتغيرات يجب علينا في البدايه ان نضع شرط لاستمرار حساب المتوسط المتحرك
هذا الشرط خاص بالفريم المستخدم
مثلاً طلبنا من المؤشر ان يقوم بحساب المتوسط المتحرك لـ 4 ساعات
وقمنا بفتح الشارت اليومي سينتج لدينا خطوط متداخله لن نرى الشارت من خلالها
ولحل هذه المشكله لدينا طريقتين
الطريقه الاولى ان نطلب من البرنامج ان لا يقوم بالحساب وبذلك لن نرى المؤشر على الشارت ويتم ذلك بالكود التالي :
كود:
if(TimeFrame < Period())return(0);
الطريقه الثانيه ان نطلب من البرنامج ان يقوم بعمليه الحساب على الفريم الحالي ويتجاهل الفريم الذي طلبنا ان يتم الحساب عليه
ويتم ذلك بالكود التالي :
كود:
if(TimeFrame < Period())TimeFrame=Period();
وبذلك تخلصنا من مشكله قد تواجهنا في المستقبل
ناتي الان لتعريف متغيرات الحلقتين وتصميم الحلقتين التي سيتم من خلالها حساب قيمه المتوسط المتحرك
وكود الحلقتين تكون متداخله
كود:
limit=Bars-counted_bars+2;
for(m=limit;m>=0;m--)
{
mm = iBarShift(NULL, TimeFrame, iTime(NULL,0,m)) ;
maf[m]=iMA(NULL,TimeFrame,MA_Period,MA_Shift,MA_Method,PRICE_CLOSE,mm);
}
حيث ان الحلقه كود:
mm = iBarShift(NULL, TimeFrame, iTime(NULL,0,m)) ;
هي المسئوله عن الفريم الذي يتم تحديده
والحلقه كود:
for(m=limit;m>=0;m--)
{
(NULL,TimeFrame,MA_Period,MA_Shift,MA_Method,PRICE_CLOSE,mm);
}
هي المسئوله عن عمليه الحساب لكل شمعه
وبذلك انتهينا من الكود كامل
رد: طريقه تصميم مؤشر موفنج افرج
هذا الكود كامل للمؤشر بعد الانتهاء منه
كود:
//+------------------------------------------------------------------+
//| MOVING AVERAGE MFT 101.mq4 |
//| |
//| www.arabictrader.com |
//+------------------------------------------------------------------+
#property copyright "101"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int TimeFrame= 240;
extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern int MA_Period=14;
extern int MA_Shift=0;
extern int MA_Method=0;
extern string note_MA_Method="0=SMA;1=EMA;2=SMMA;LWMA";
//---- indicator buffers
double maf[];
//----
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_LINE, EMPTY,1);
SetIndexBuffer(0, maf);
SetIndexShift(0,MA_Shift);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
if(TimeFrame < Period())TimeFrame=Period();
int m,limit,mm;
limit=Bars-counted_bars+2;
for(m=limit;m>=0;m--)
{
mm = iBarShift(NULL, TimeFrame, iTime(NULL,0,m)) ;
maf[m]=iMA(NULL,TimeFrame,MA_Period,MA_Shift,MA_Method,PRICE_CLOSE,mm);
}
//----
return(0);
}
//+------------------------------------------------------------------+
ان شاء الله يكون الشرح بسيط
تقبلو تقديري
رد: طريقه تصميم مؤشر موفنج افرج
رد: طريقه تصميم مؤشر موفنج افرج
هل المقصود هو موفنج متعدد الفريمات بمعني انني استطيع ان استخدم متوسط ما لفريم ربع ساعة مثلا على شارت 4 ساعات
رد: طريقه تصميم مؤشر موفنج افرج
رد: طريقه تصميم مؤشر موفنج افرج
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
بارك الله فيك
ويبارك فيك ان شاء الله
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
هل المقصود هو موفنج متعدد الفريمات بمعني انني استطيع ان استخدم متوسط ما لفريم ربع ساعة مثلا على شارت 4 ساعات
لا اخوي العكس هو الصحيح
تستطيع استخدام موفنج 4 ساعات على شارت 15 دقيقه
اقتباس:
المشاركة الأصلية كتبت بواسطة emperor
جزاك الله خيراً
ويجزاك بمثله ان شاء الله
رد: طريقه تصميم مؤشر موفنج افرج
هناك خطا في الكود
الكود الصحيح هو
كود:
//+------------------------------------------------------------------+
//| MOVING AVERAGE MFT 101.mq4 |
//| |
//| www.arabictrader.com |
//+------------------------------------------------------------------+
#property copyright "101"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int TimeFrame= 240;
extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern int MA_Period=14;
extern int MA_Shift=7;
extern int MA_Method=0;
extern string note_MA_Method="0=SMA;1=EMA;2=SMMA;LWMA";
extern int Price_constants= 0;
extern string note_Price_constants="0=close;1=open;2=high;3=low;4=high+low/2";
extern string note2_Price_constants="5=high+low+close/3;6=high+low+close+close/4";
//---- indicator buffers
double maf[];
//----
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_LINE, EMPTY,1);
SetIndexBuffer(0, maf);
SetIndexShift(0,MA_Shift);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
if(TimeFrame < Period())TimeFrame=Period();
int m,limit,mm;
limit=Bars-counted_bars+2;
for(m=limit;m>=0;m--)
{
mm = iBarShift(NULL, TimeFrame, iTime(NULL,0,m)) ;
maf[m]=iMA(NULL,TimeFrame,MA_Period,0,MA_Method,Price_constants,mm);
}
//----
return(0);
}
//+------------------------------------------------------------------+
شكلي اغرد لحالي
ماحد انتبه للخطاء
رد: طريقه تصميم مؤشر موفنج افرج
اقتباس:
المشاركة الأصلية كتبت بواسطة 101
هناك خطا في الكود
الكود الصحيح هو
كود:
//+------------------------------------------------------------------+
//| MOVING AVERAGE MFT 101.mq4 |
//| |
//| www.arabictrader.com |
//+------------------------------------------------------------------+
#property copyright "101"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int TimeFrame= 240;
extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern int MA_Period=14;
extern int MA_Shift=7;
extern int MA_Method=0;
extern string note_MA_Method="0=SMA;1=EMA;2=SMMA;LWMA";
extern int Price_constants= 0;
extern string note_Price_constants="0=close;1=open;2=high;3=low;4=high+low/2";
extern string note2_Price_constants="5=high+low+close/3;6=high+low+close+close/4";
//---- indicator buffers
double maf[];
//----
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_LINE, EMPTY,1);
SetIndexBuffer(0, maf);
SetIndexShift(0,MA_Shift);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
if(TimeFrame < Period())TimeFrame=Period();
int m,limit,mm;
limit=Bars-counted_bars+2;
for(m=limit;m>=0;m--)
{
mm = iBarShift(NULL, TimeFrame, iTime(NULL,0,m)) ;
maf[m]=iMA(NULL,TimeFrame,MA_Period,0,MA_Method,Price_constants,mm);
}
//----
return(0);
}
//+------------------------------------------------------------------+
شكلي اغرد لحالي
ماحد انتبه للخطاء
اتكلم عن نفسي فانا ماعرف برمجه حتى انتبه للخطأ
حاولت اتعلم البرمجه ولكني ما استطعت
وتأكد بأنك لست وحدك فالكل يقرا في صمت للأسف
مثل هذه الورشه القيمه يجب ان يلاقي تفاعل ممتاز
وللاعضاء اذا لم تستطع المشاركه
بفكرة للتطوير
أو بالسؤال
فأعتقد كلمه (شكرا) ليست ثقيله
رد: طريقه تصميم مؤشر موفنج افرج
رد: طريقه تصميم مؤشر موفنج افرج
اقتباس:
المشاركة الأصلية كتبت بواسطة Qamar14
اتكلم عن نفسي فانا ماعرف برمجه حتى انتبه للخطأ
حاولت اتعلم البرمجه ولكني ما استطعت
وتأكد بأنك لست وحدك فالكل يقرا في صمت للأسف
مثل هذه الورشه القيمه يجب ان يلاقي تفاعل ممتاز
وللاعضاء اذا لم تستطع المشاركه
بفكرة للتطوير
أو بالسؤال
فأعتقد كلمه (شكرا) ليست ثقيله
الف شكر على مرورك اختي وتطييب خاطري
ولكن لم يكن كلامي للعتب ابداً
كان للمزح مع الاخوان هذي من جهه والثقه التي منحوني اياها بحيث لم يتاكدو من مصداقيه المؤشر حتى
اقتباس:
المشاركة الأصلية كتبت بواسطة FalCOns
بارك الله فيك
الله يبارك في عمرك
رد: طريقه تصميم مؤشر موفنج افرج
بارك الله في جهودك منتظرين
رد: طريقه تصميم مؤشر موفنج افرج
درس عظيم وشرح وافي .. بارك الله فيك