-
1 مرفق
السلام عليكم
اخ حسن لديه اكسبيرت يعمل بصورة طبيعيه فيه دوال لغلق جميع اوامر الشراء او البيع المشكلة عند تجربته على اكثر من عمله يغلق الصفقات لجميع العملات والمطلوب ان يكون لكل عمله غلق اوامر الخاصة بعملة معينه مع الشكرللجهد الرائع المبذول وارفق لك الاكسبيرت
ملف مرفق 15997
-
وعليكم السلام
راجع المشاركة التالية Global Variables
-
السلام عليكم
لو سمحت استاذي الفاضل
ممكن طريقة كتابة الدالة
انه تم فتح صفقة بهدف 50 نقطة وستوب 20 نقطة وتريلنج ستوب 10 نقاط
انه في حالة تحقيق 20 نقطة ربح من 50 نقطة هدف يكون ترينج ستوب 5 نقاط فقط
وشكرا
-
وعليكم السلام
راجع الموضوع التالي:
-
السلام عليكم استاذي الفاضل
المقصود انه في بداية الصفقة يكون الهدف 50 نقطة والتريلنج ستوب 15 نقطة
وعند الوصول لربح 20 نقطة يتحول التريلنج من 15 نقطة الي 5 نقاط فقط
حاولت ولكن في الكود خطا ممكن حل هذا الخطا
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)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
{
}
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyP oint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
//
//
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*Trailingprofit)
{
if(OrderStopLoss()<Bid-MyPoint*Trailingprofit)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
//
else
if(OrderType()==OP_SELL)
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*Trailingprofit))
{
if((OrderStopLoss()>(Ask+MyPoint*Trailingprofit)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyP oint*Trailing,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
-
وعليكم السلام
جرب الكود التالي:
-
الف شكر استاذي
جاري التجريب
-
-
1 مرفق
السلام عليكم
وضعت الكود في مكانه ولكن لم يتغير الترينج ستوب
ارفقت لك الاكسبيرت لتري الامر كي تستطيع اصلاح الامر
بارك الله فيك
-
1 مرفق
وعليكم السلام
جرب النسخة المرفقة
-
الف شكر أستاذي
لكنها نفس المشكلة
للعلم انا أضع الهدف 50 نقطة
ترينج ستوب 15 نقطة
والترينج الثاني 5 نقاط
محدد الربح 20 نقطة
-
السلام عليكم
سؤالى للاخ حسن او من لديه معلومه هل هناك طريقة او برنامج لتجربة اكسبيرت على عدة ازوج في وقت واحد والتجربة على حساب ديمو يعني انتظار شهر او شهرين
بمعنى اخر ماذا لو كان هناك اكسبيرت وتريد تجربته وهذ الاكسبيرت يعتمد على فتح الصفقات على عدة عملات في وقت واحد لكي يعمل الاكسبيرت بصورة صحيحة ولا ينفع زوج واحد كما هو الحال في الباك تيست في المنصة مع الشكر الجزيل
-
جربته يعمل وفق المطلوب
تأكد من تحقق الشروط على الشارت
-
السلام عليكم ورحمة الله وبركاته
أخي حسن بارك الله فيك أنا استخدم الدالة التالية لرسم التريند
void Draw_Trend(string name,double Price1,datetime Time1,double Price2,datetime Time2,color Color)
{
if(ObjectFind(name)==-1)
{
ObjectCreate(name,OBJ_TREND,0,Time1 ,Price1,Time2 ,Price2);
ObjectSet(name,OBJPROP_WIDTH,1);
ObjectSet(name,OBJPROP_COLOR, Color);
ObjectSet(name,OBJPROP_RAY,false);
}
else if(ObjectGet(name,OBJPROP_PRICE1)!=Price1)
{
ObjectDelete(name);
Draw_Trend(name,Price1,Time1,Price2,Time2,Color);
}
}
والدالة تعمل والتريند مرسوم وأحاول الحصول على زاوية التريند ولم أستطع حيت أستخدمت المكود التالي ولكن النتيجه التي تضهر صفر
void OnTick()
{
T0=iTime(NULL,0,0);
T1=iTime(NULL,0,7);
C0=iClose(NULL,0,0);
C1=iClose(NULL,0,7);
Draw_Trend("Trend",C1,T1,C0,T0,Blue);
DT=ObjectGet("Trend",OBJPROP_ANGLE);
Comment(DT);
}
فما هي الطريقة الصحيحة للحصول على الزاوية أو درجة ميول التريند
مع الشكر الجزيل
-
-
1 مرفق
السلام عليكم أستاذ حسن
المؤشر المرفق تتغير إشاراته بطريقة خبيثة (مفتوح الكود ) لوسمحت ممكن نظرة للكود وبيان هل يمكن تثبيت الإشارة مع الشكر الجزيل
-
وعليكم السلام
هذا الموضوع مخصص فقط للأسئلة البرمجية
-
وضعته هنا لأني لم أفهم الكود - أو إشارة السهم لا علاقة لها بالكود .....سأنقل الطلب للموضوع المناسب مع الشكر
-
هل هناك طريقة لمشاهدة تنفيذ كود برمجي لمؤشر أو إكسبرت Step by step مثل لغات البرمجة الأخرى ؟
-
يوجد موضوع أهم الدوال البرمجية وتطبيقات لغة mql4
وكذلك ستجد شروحات باليوتيوب يمكنك البحث عنها
-
ممكن كود يفتح صفقة buy بمجرد تخطى السعر لرأس شمعة محددة طبقا لمؤشر خارجي
أو أن يفتح سيل بمجرد تخطي السعر لذيل نفس الشمعة
علما بأن الشمعة المراد فتح الباي على رأسها أو السيل على ذيلها غير معروف مكانها بالنسبة للسعر الحالى
ربما يتخطى السعر بعدها بشمعة أو اثنين أو أكثر
أرجو الافادة
-
السلام عليكم
المرجو التوضيح أكثر بصور من الشارت
-
2 مرفق
الشمعة المشار إليها بالسهم الأزرق والتى لها بار أزرق غامق الموجود في المؤشر الخارجي هي التى أريد فتح الصفقة على رأسها أو على ذيلها
المطوب
كود يفتح صفقة buy بمجرد تخطى السعر لرأس الشمعة المحددة
أو أن يفتح sell بمجرد تخطي السعر لذيل نفس الشمعة
علما بأن السعر ربما يتخطى الرأس أو الذيل بعد شمعة أو اثنين أو أكثر
------
عذرا الصورة الثانية أرفقت بالخطأ وليس لها داعي
-
ارفق المؤشر والكود الذي قمت بعمله لتصحيحه أو على الاقل المؤشر حتى اضع لك قيمة البار الأزرق
بالنسبة لفتح الصفقة عند سعر مختلف عن السعر الحالي (مثل حالتك عند الهاي او اللو) معناه ستكون الصفقة عبارة عن امر معلق من نوع ستوب (باي ستوب أو سيل ستوب)
-
2 مرفق
شكرا لردك أخي
بالفعل استطعت عمل أمرين معلقين على الهاي واللو كما بالملف 1 المرفق
ولكن وجدت عند التجربة على الحساب الديمو كثيرا لا يستطيع الاكسيبرت وضع الأمرين المعلقين وذلك لأن السعر أحيانا يكون قريب من الهاي أو من اللو ... وبالتالى لا يستطيع الاكسيبرت تعليق الأمرين أو يعلقهما ويحذفهما مباشرة
فكان لا بد من تغيير الاستراتيجية
بأن يفتح مباشرة buy أو sell بمجرد تخطي السعر للهاي أو اللو للشمعة المحددة
أرفقت لحضرتك
كود رقم 1
وهو الذي يعمل بالأمرين المعلقين
كود 2
وهو المؤشر
-
1 مرفق
-
جزاك الله خيرا اخي الكريم
بعد الفحص وجدت أنه يفتح الباي مثلا واذا انعكس فانه بفتح السيل على نفس الشمعة
وأنا أرجو
1- ألا يفتح على نفس الشمعة أمرين ....إذا فتح باي على شمعة فلا يفتح علي نفس الشمعة أى أمر آخر
2- إذا تحقق الشرط على شمعة أخرى يفتح صفقة جديدة حتى ولو لم تغلق الصفقة السابقة .. حتى أستطيع أن أغلق الجميع على WIN_USD
ــــــــــــــــــــــــــــــــــــــــــــــــــ ـ
واعذرنى أخي فأنا مازلت أتعلم البرمجة (مبتدأ)
ولهذا
أريد أن أخبرك أنني استطعت أن أضيف إلى الاكسيبرت والحمد لله ...
TrailingStop=6
TrailingStep=4
BreakEven=3
movestopto=1
ولكن لى سؤال عنه
كيف يمكنني أن أجعل البريك ايفن يحسب الاسبريد قبل أن يحرك السعر إلى الدخول لأنني وجدت مع التجربة أنه يغلق الصفقة على قيمة الاسبريد بالسالب
ــــــــــــــــــــــــــــــــــــــــــــــــــ ـ
ولك جزيل الشكر والامتنان
وجزاك الله الجنة عن كل من تعلم منك علما أستفاد منه أو أفاد منه غيره.
-
1 مرفق
وإياك اخي الكريم، بارك الله فيك
مرفق الاكسبيرت
اما السبريد المتغير لا يمكن التحكم به، مثلا بعد وضع الستوب ممكن ان يكبر السبريد وبالتالي يتم الاغلاق على خسارة... وهذا من طبيعة حركة السعر
-
السلام عليكم اخي حسن
اريد شرط لرسم خط عمودي على الشمعة بهذا الشكل...
اذا كانت الساعة الواحدة ارسم خط عمودي عليها ويكون هذا الخط العمودي منتهيا عند هاي الشمعة ويبداء من لو الشمعة من جديد بمعنى اخر لا يتواجد على جسم الشمعة وتكون الشمعة ظاهرة كما يمكن تغير لون وسمك الخط العمودي..
-
مشكور أخي الكريم
لى سؤال آخر
الآن هذا الكود يفتح الصفقة بمجرد تخطي السعر للهاي أو اللو
هل نستطيع أن نجعله يفتح بعد تخطى السعر للهاي بنقطة أو أكثر (تحدد عدد النقاط بمتغير خارجي)
وكذلك في حالة البيع بعد تخطى السعر اللو بنقطة أو أكثر (تحدد عدد النقاط بمتغير خارجي)
وجزاك الله خيرا
-
-
مشكور أخي الكريم
لكن +5 هذه نقاط .. فهل يمكن أن تكون 5 بيب مثلا ؟؟
عن طريق
بدلا من 5 ضرب pt
إلى 5 فقط وحذف pt*
------------------
أيضا لى سؤال آخر
نفس الكود السابق
هو يفتح الصفقة في الشمعة التالية لشمعة الفوليوم إذا تخطى السعر رأس الشمعة أو ذيلها .وهذا جيد
لكن إذا كانت الشمعة التالية لشمعة الفوليوم لم تتخطى الرأس أو الذيل فإن الصفقة لن تفتح نهائيا ... وسؤالى هو كيف نجعل الكود يفتح الصفقة إذا تخطى السعر لرأس شمعة الفوليوم أو ذيلها سواء في الشمعة التالية أو التى بعدها أوبعدها أوبعدها ....
وخاصة أن السعر من الممكن ألا يتخطى الرأس أو الذيل إلا بعد شمعتين أو أكثر ؟؟
-----------------------
سؤال أخير
حاولت أن أضع مصفوفة الأزواج على الأكسيبرت ولم يفلح .. رغم أنني حصلت عليها من مشاركة لحضرتك في الصفحات السابقة
فأرجو وضع الكود الصحيح لها ولك جزيل الشكر
-
العفو أخي
pt هي قيمة النقطة يعني بدونها ستصبح 5 عبارة عن سعر وليس عدد النقاط، يعني مثلا على اليورو دولار لن تكون المسافة بـ 0.0005 بل ستصبح بمسافة سعرية 5 وليس نقطية
ستضع شروط اخرى لكل حالة وتفصل بين الحالات بعلامة || يعني "أو"
بالنسبة لمصفوفة الازواج واضح بالشرح، ارفق كود محاولتك للتصحيح
-
لو سمحت استاذي العزيز سؤال من مبتدأ ما الفرق بين الكود المفتوح والكود المغلق وكيف استطيع احدد نوعه
وشكرا
-
السلام عليكم
الكود المفتوح الخاص بمنصة المتاتردر4 يكون بصيغة mq4، والمغلق يكون بصيغة ex4
الكود المفتوح الخاص بمنصة المتاتردر5 يكون بصيغة mq5، والمغلق يكون بصيغة ex5
-
السلام عليكم
لو مثلا انا عندى قيمه ثابته وليكن اغلاق اخر شمعه على فريم الساعه
وعايز اضيف على الاغلاق 30 نقطه -- وانقص من الاغلاق 30 نقطه بخطوات
كأني بعمل مستويات مقاومه ودعم والمركز بالنسبالي النقطه الثابتة
مثلا يعنى الاغلاق 134.00
فى حاله الاضافه (مستويات المقاومه )هتكون النقاط .... 134.30 --- 134.60 --- 134.90 الخ
وفى حاله الانقاص (مستويات الدعم )هتكون النقاط كالتالى --- 133.70 --- 133.40 --- 133.10
يعنى هضيف او هخصم 30 نقطه ع الاغلاق الى ما لا نهايه (او نستخرج 10 نقاط اعلى و 10 نقاط اسفل )
وعايز اوصل لقيمه كل نقطه واخزنها فى متغير مثلا هيبقى h
وهل يمكن تخزين كل هذه المتغيرات في متغير واحد ام لا كاننا مثلا نعمل لوب ؟
وأريد كتابه شرط الشراء والبيع لو لمس من الاعلي شراء ولو لمس من اسفل بيع
فضلا احتاج الكود وشكرا
-
وعليكم السلام
لم افهم شيء! المرجو التوضيح أكثر بمثال على الشارت ورسم المستويات كخطوط مع فرصة بيع او شراء
-
السلام عليكم
ارجو تصحيح الكود التالي ما خو الخطأ فيه طبعا المطلوب واضح جعل قيمة اللوت حسب الرصيد الكتوفر
if(AccountEquity()>=1000 && AccountEquity()<=2000)
lot = 0.1;
-
وعليكم السلام
الشرط سليم منطقيا
طيب التالي:
-
صحيح الشرط شغال لكن المشكلة يعمل في منطقة فقط OnTick() ولا يعمل في منطقة OnInit() لكي يعطي قيمة عند تشغيل الاكسبيرت فقط