النتائج 1 إلى 15 من 73
- 15-06-2010, 03:36 PM #1
موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
بناء على طلب أحد الإخوه الأعزاء سوف نقوم بتصميم إكسبرت يعتمد على مؤشر البارابوليك سار بإعدادات وتايم فريم مختلف يمكن تحديدها حسب ما تريد من متغيرات الإكسبرت الخارجيه
وسوف نشرح ايضا بعض الخصائص التي سنقوم بوضعها في الإكسبرت مثل خاصية البريك إيفين أو إخفاء الهدف والأستوب أو إستخدام التريلينج ستوب
سنقوم بشرح الموضوع بشكل مبسط للمبتدئين ومن لهم خلفيه بسيطه في البرمجه ولمن يرغب في تعلم البرمجه من البدايه عليه بالمواضيع المثبته في القسم
سنبدأ مباشرة كما أبدأ أنا في تصميم أي إكسبرت وهو الداله start ثم بعد ذلك عندما يمر أي كود أريد إضافة متغير خارجي له أقوم بإضافته في الجزء الخاص بالمتغيرات الخارجيه للإكسبرت
كذلك سنبدأ بشكل بسيط ثم في كل مره نريد زيادة كفاءة الإكسبرت سنقوم بتعديله
بداية كود إستدعاء مؤشر البارابوليك سار سيكون بالشكل التالي
كود PHP:double sar1=iSAR(NULL,Sar1TF,Step1,Maximum1,1);
double sar2=iSAR(NULL,Sar2TF,Step2,Maximum2,1);
Sar1Step و Sar2Maximum و Sar2Step و Sar2Maximum هي إعدادات المؤشر
لذلك سنحتاج إلى تعريف هذه المتغيرات في خصائص الإكسبرت الخارجيه لذلك سوف نقوم بتعريفها في الجزء الخاص بالمتغيرات الخارجيه بالشكل التالي
كود PHP:extern string S1=" Parabolic Sar Settings";
extern int Sar1TF=0;
extern double Sar1Step=0.02;
extern double Sar1Maximum=0.2;
extern int Sar2TF=240;
extern double Sar2Step=0.02;
extern double Sar2Maximum=0.2;
أما المتغيرات Sar1Step و Sar1Maximum قمنا بتعريفهم على أنه متغير من نوع double أو عدد عشري لأنه تأخذ أحيانا أرقام عشريه مثل 0.2 أو 0.02
- 15-06-2010, 04:48 PM #2
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
مشكور اخي الكريم وربنا يسهل نتعلم معاك
- 15-06-2010, 06:17 PM #3
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
إن شاء الله تتعلم فقط محتاج قليل من التركيز
نأتي الآن لشرط الدخول في الصفقه سواء بيع أو شراء كما في الصوره التاليه
نقوم بالبيع إذا كان البارابوليك أكبر من الشمعه الحاليه ونقوم بالشراء إذا كان البارابوليك أقل من الشمعه الحاليه
لذلك سيكون شرط الشراء
كود PHP:if (sar1<Open[1]&&sar2<Open[1])
كود PHP:if (sar1>Open[1]&&sar2>Open[1])
بالنسبه للشراء سيكون كالآتي
كود PHP:if (sar1<Open[1]&&sar2<Open[1]){
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
}
قمنا بجعل الهدف وهو TP يساوي السعر الحالي + TakeProfit*قيمة النقطه
فمثلا السعر الحالي 1.4000 وكان الهدف 30 نقطه فسوف يكون الناتج
1.4000+30*0.0001 = 1.4000+0.0030= 1.4030 وهو الهدف الذي نريده
والعكس في حالة البيع
وقمنا بتعريف المتغيرات TakeProfit و StopLoss في المتغيرات الخارجيه للإكسبرت
وتعريف المتغيرين SL , TP بداخل الداله ستارت
وأمر البيع سيكون كالآتي
كود PHP:if (sar1>Open[1]&&sar2>Open[1]){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
}
إذا قمنا بتجربة الإكسبرت الآن فسوف نلاحظ عند فتح صفقه فسوف يظل يفتح صفقات عند تحقق الشروط إلى مالانهاية وحتى لا يبقى مارجن كافي لفتره الصفقه لذلك يجب أن نضيف داله لحساب عدد الصفقات الحاليه بحيث لا يتم الدخول إلا إذا كان عدد الصفقات الحاليه يساوي 0
وستكون بالشكل الآتي
كود PHP:int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
في الكود التالي
كود PHP:for(int i =0;i<OrdersTotal();i++){
ثم نقوم بإستخدام الأمر OrderSelect لإختيار الصفقه التي قمنا بتحديدها ومقارنة هل الماجيك نمبر يساوي الماجيك نمبر الذي قمنا بتحديده وهل العمله المستخدمه هي نفس العمله التي قمنا بتحديدها فإذا كان كذلك قم بزيادة 1 إلى قيمة cnt
كود PHP:OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
كود PHP:return(cnt);
الآن سنضع في شروط الدخول في صفقة البيع أو الشراء الشرط التالي
كود PHP:if(orderstotal()<1)
ونكمل في المشاركه التاليه بإذن الله
- 15-06-2010, 06:27 PM #4
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
بارك الله فيك ومتابعين معك وياريت يكون بالاكسيبرت اعادة دخول مع المضاعفات
- 15-06-2010, 10:23 PM #5
- 15-06-2010, 11:10 PM #6
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
اخى Mr.dollar
ارجو شرح هذه الاسطر والخاصه بـ OrderSend ولا اقصد معانى الكلمات ولكن كترتيب
الاجزاء الملونه بالاحمر الى ماذا ترمز وهل لها علاقه باسم المؤشر المستخدم او اسم الاكسبيرت كذلك PlaySound لماذا اضيفت فقط فى امر البيع ولم تكتب فى امر الشراء
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
كذلك عند كتابه امر البيع والشراء شرط الباربوليك انه اكبر او اصغر من open للشمعه بهذا نضمن سبات الاشاره هل فهمى صحيح وان كنا مثلا نريد بمجرد ظهور الاشاره تكون القيمه اكبر او اصغر من ؟؟؟؟؟
وارجو المعزر على اسئلتى ولكنى اتابع لأفهم وليس للحصول على الاكسبيرت جاهزآخر تعديل بواسطة coolhero ، 15-06-2010 الساعة 11:34 PM
- 15-06-2010, 11:46 PM #7
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
سوف تجد شرح الأمر OrderSend بالتفصيل في هذه المشاركه
https://forum.arabictrader.com/t93679.html#post1673127
بإختصار بالنسبه للرقم 3 فهو Slippage ويمكنك جعله في خصائص الإكسبرت الخارجيه
بالنسبه ل MR.dollar EA فهو التعليق الذي يتم كتابته بجوار الصفقه
قم بإضافة أمر PlaySound للشراء أيضا
كتبت شرط البارابوليك سار أن يكون أصغر أو أكبر من إفتتاح الشمعه السابقه لضمان ثبات الإشاره لكن إذا أردت دخول الصفقه بمجرد ظهور الإشاره فسوف تجعل الكود كالتالي
كود PHP:if(Sar1>Open[0]
- 15-06-2010, 11:55 PM #8
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
حبيبي استاذ اسامه اخبارك
اعجبني الموضوع
سأفيدكم بأمر سري جدا بل هو استراتيجيه
انا استخدم البارابوليك على الخمس دقائق اضع التشارت لاربع عملات المجنون والكيبل واليورو والفرنك
اذا ظهرت اشارة البارابوليك مع تشبع الاستوكاستيك وكان الامر هذا متطابق مع الاربع عملات ادخل والاهداف جميله
جربوها وادعولي
- 16-06-2010, 12:33 AM #9
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
بارك الله فيك
شرح اكثر من رائع
- 16-06-2010, 02:04 AM #10
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
مستر دولار والاخوه المشاركين ...من واقع تجربتي للمؤشر سار على الحقيقي استفدت منه بشكل بسيط وجميل عندما اعكس باستمرار نصائحه اي البيع عند اشاره الشراء والعكس على الساعه وبالاعدادات الافتراضيه مع ايقاف خساره عند 155نقطه مع الصبر وعدم القلق واهم شيء هو الخروج بهذه الطريقه من العمليه عند اقتراب الشمعه من نقطه المؤشر بحدود 8-10 نقاط ودون تردد ..تحيه طيبه
- 16-06-2010, 05:16 PM #11
- 16-06-2010, 05:42 PM #12
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
وبارك الله فيك ووفقك
الحمد لله بخير وجاري التجربه ومبدئيا تبدو جيده جدا ويمكننا أن نضيف هذه الإضافة الجميله في الإكسبرت
غرضنا الأساسي من الموضوع هو تعليمي لذلك بإذن الله سنحاول المرور على جميع الحالات ومختلف الطرق
وشكرا جدا لردك
- 16-06-2010, 06:02 PM #13
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
دالة إغلاق الصفقات في حال ظهور إشارة عكسيه هذه الدوال سيتم تعريفها خارج الداله ستارت
كود PHP:void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
}
بعكس إذا إستخدمنا الأمر int أو double لعمل هذه الداله فنستخدم هذه الكلمات في حال كان هناك ناتج للعمليه تقوم الداله بحفظه وعند إستدعاء الداله تقوم بإستدعاء هذه القيمه تماما كما فعلنا في دالة حساب عدد الصفقات الحاليه
ثم إستخدمنا أيضا الحلقه for وقمنا للبحث في عدد الصفقات الحاليه ومعرفة هل نوع الصفقه بيع أو شراء
ثم الأمر OrderClose لإغلاق الصفقه
كود PHP:OrderClose(OrderTicket(),OrderLots(),Ask,3);
ثم بداخل الداله start نقوم بوضع شروط غلق الصفقه بيع أو شراء
كود PHP:if (sar1<Open[1]&&sar2<Open[1]&&CloseOppositeSignal==true )
{CloseSellOrders();}
if (sar1>Open[1]&&sar2>Open[1]&&CloseOppositeSignal==true)
{CloseBuyOrders();}
يمكن أيضا كتابة الشروط بهذا الشكل
كود PHP:if (sar1<Open[1]&&sar2<Open[1]&&CloseOppositeSignal )
{CloseSellOrders();}
if (sar1>Open[1]&&sar2>Open[1]&&CloseOppositeSignal)
{CloseBuyOrders();}
أننا كتبنا CloseOppositeSignal وليس CloseOppositeSignal==true
وعند كتابة CloseOppositeSignal بدون وضع مقارنه true أو false فهذا يعني كأنك قارنتها بأنها true
- 16-06-2010, 11:17 PM #14
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
يشرفني مرورك مستر دولار ..فقط احببت محاوله اغناء الموضوع بما لدي ....معكم بأذن الله مع الشكر لكل جهد مبذول
- 17-06-2010, 07:17 PM #15
رد: موضوع تعليمي : تصميم إكسبرت لمؤشر البارابوليك سار
بارك الله فيك
-----------------------------
سنضيف الآن فلتر الوقت
سنضيف أولا متغيرات خارجيه للتحكم بتوقيت بداية ونهاية عمل الإكسبرت
كود PHP:extern bool UseTimeFilter= false;
extern int StartHour = 7;
extern int EndHour = 17;
كود PHP:if (UseTimeFilter){
if(!((StartHour < EndHour && TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < EndHour) || (StartHour > EndHour && TimeHour(TimeCurrent()) >= StartHour ||
TimeHour(TimeCurrent()) < EndHour))){
Comment("Non-Trading Hours!");
return(0);
}
}
كود PHP:return(0);
نقوم بكتابة هذه الداله مباشرة بعد الداله start
إمكانية العمل على بروكر خمس أرقام
بداية سنقوم بتعريف متغيرين في القسم العلوي للإكسبرت
كود PHP:double point;
int digits;
سنقوم بكتابة الكود التالي
كود PHP:if(Digits<4)
{
point=0.01;
digits=2;
}
else
{
point=0.0001;
digits=4;
}
else أي إذا لم يتحقق الشرط السابق أن Digits<4 فهذا يعني أن Digits>=4
فإما أن يكون عدد الفواصل 4 أرقام أو 5 أرقام كمثال زوج اليورو دولار
فسوف نجعل point=0.0001 و digits=4
ثم نقوم بكتابة بدلا من الكلمه المحجوزه Point عند وضع الهدف نكتب بدلا من point وهو المتغير الذي قمنا بتعريفه ونفس الشيء بالنسبه ل Digits نقوم بدلا منه بكتابة digits
دالة التريلينج ستوب
كود PHP:void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
سوف نتكلم عن أهم سطر وهو أمر OrderModify
كود PHP:bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
price سعر فتح الصفقه ولا يمكن تغييره إذا كان الصفقه أمر مباشر وليس أمر معلق
stoploss الأستوب لوز الجديد الذي تريد وضعه
takeprofit الهدف الذي تريد وضعه
expiration وقت إنتهاء الأمر المعلق وهو خاص بالصفقات المعلقه فقط
arrow_color لون السهم الذي سيظهر على الشارت
يمكنك تغيير بعد الأرقام وترك البعض الآخر مثلا تغيير الأستوب لوز وترك الهدف السابق كما هو ولكن إذا لم يكن هناك تغيير في الصفقه فسوف يظهر الإكسبرت خطأ في خانة الجورنال
ودالة البريك إيفين
كود PHP:
void MoveBreakEven()
{
int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(BreakEven>0)
{
if(NormalizeDouble((Bid-OrderOpenPrice()),digits)>BreakEven*point)
{
if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),digits)<0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+movestopto*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
}
else
{
if(BreakEven>0)
{
if(NormalizeDouble((OrderOpenPrice()-Ask),digits)>BreakEven*point)
{
if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),digits)<0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-movestopto*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
}
أخيرا الإكسبرت في المرفقات وسوف نضيف في المره القادمه بعض الأكواد الجديده والمهمه وسنغير في طريقة الدخول لنجعلها أكثر دقة
المواضيع المتشابهه
-
ورشة تصميم إكسبرت لإستراتيجية القاهرة
By Sc@lper in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 138آخر مشاركة: 21-03-2014, 04:36 PM -
إستراتيجية مدهشة جديدة تحتاج لمؤشر أو إكسبرت
By MYounis in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 04-07-2008, 02:42 AM -
موضوع تعليمي: تحت التجربة
By صاحب سمو المشاعر in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 3آخر مشاركة: 07-12-2007, 04:41 PM