النتائج 1 إلى 15 من 21
الموضوع: كود اغلاق الصفقات
- 26-11-2015, 07:25 PM #1
كود اغلاق الصفقات
السلام عليكم
اريد كود يغلق جميع الصفقات لنفس العملة اذا وصل اجمالي الربح لجميع الصفقات لنفس العملة الى المبلغ المحدد في الربح بالدولار usd_win , حيث أن كل اكواد الاغلاق التي وجدتها تغلق جميع الصفقات متى وصل ربح صفقة واحدة فقط الى الربح بالدولار و يغلق جميع الصفقات الخاسرة و الرابحه و يكون في الاغلب الاغلاق على اجمالي خسارة كبيرة
وايضا اذا كان التيك بروفت اكبر من 0 فاذا حققت صفقة من الصفقات التيك بروفت لا يغلق باقي الصفقات الاخرى , حيث ان الاكواد التي وجدتها عندما تصل صفقة الى التيك بروفت يغلق جميع الصفقات الخاسرة و الرابحة و يكون في الاغلب الاغلاق على اجمالي خسارة كبيرة
- 26-11-2015, 08:27 PM #2
وعليكم السلام ورحمة الله وبركاته
سوف تقوم بعمل دالة لمعرفة الربح بالدولار لجميع الصفقات المفتوحه لنفس العمله
مثال
كود PHP:double TotalProfitUSD()
{
double profit;
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
profit+=OrderProfit();
}
}
return(profit);
}
كود PHP:void CloseOrders()
{
for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();
double lots=OrderLots();
int Otype=OrderType();
if (OrderSymbol()==Symbol())
{
if (Otype==OP_BUY)
{
bool close= OrderClose(ticket,lots,NormalizeDouble(Bid,Digits),3*P);
}
if (Otype==OP_SELL)
{
close=OrderClose(ticket,lots,NormalizeDouble(Ask,Digits),3*P);
}
if(Otype>OP_SELL)
{
close=OrderDelete(ticket);
}
}
}
}
كود PHP:if(TotalProfitUSD()>=USD_Profit)
{
CloseOrders();
}
- 27-11-2015, 12:30 AM #3
شكرا لك مستر دولار لكن لما نسخت الكود وعرفت المتغيرات طلعلي اخطاء , ممكن لو سمحت لو عندك اكسبرت صغير مثال ترفقه واكون شاكر لك
- 27-11-2015, 03:45 PM #4
- 27-11-2015, 06:42 PM #5
مرفق الاكسبرت و على فكرة انا لسه بتعلم عشان لو في اخطاء متضحكش عليا
و بالمرة ياريت لو تشغلي مؤشر Grail Indic لاني معرفتش اعداداته و عملت Comment زي ما انت شارح في الدروس بس طلعتي الارقام كلها اصفار معرفتش اعدادات
- 28-11-2015, 06:39 AM #6
- 02-12-2015, 04:45 PM #7
- 02-12-2015, 05:02 PM #8
بالنسبه لإستدعاء المؤشر فإشارته تظهر متأخره جدا بعد عدد شموع
بالتالي لمعرفة آخر قيمه فسوف تستخدم الحلقه
كود PHP:double GrailSignal()
{
for(int i=1;i<Bars;i++)
{
double indi=iCustom(Symbol(),0,"Grail Indic",1,i);
if(indi!=0)return(indi);
}
return(0);
}
- 04-12-2015, 04:33 AM #9
بارك الله فيك يا مستر دولار , فعلا مستر و فعلا صدق من قال لا يجتمع العلم الا مع حسن الخلق , ربنا يزيدك
بس انا معرفتش بردو استخدم المؤشر لما كتبت الحلقة و بعدها عملت
Comment(GrailSignal الارقام اللي طلعتلي على الشارت زي بعض سواء اشارة صعود او هبوط كانت تقريبا 1.217 في الاشارتين كانت بتدي قيم قريبة من دي
ومعلش عندي تعديل بسيط على الارباح كنت عاوز يكون الربح بالدولار في خانتين خانة لربح جميع الصفقات و خانة تانية تكون ربح لكل صفقة , بمعنى اننا هنحدد ربح الصفقة الواحدة 20 دولار واجمالي الربح لجميع الصفقات 10 دولار فلو في صفقة وصلت لربح الصفقة المفردة هتقفل لوحدها وتخلي باقي الصفقات يا اما يحققو اهدافهم يا اما كل صفقة تحدد هدفها لوحدها .
وكان في عندي سؤال فرصة بقى طالما مستر دولار هو اللي بيرد على موضوعي , دلوقتي انا استخدمت اكسبرتات مضاعفات كتير و طبعا كلها مهما بلغت ارباحها بتفشل , ولاحظت انها مش بتفشل عشان الخسارة هي بتفشل أولا لانها بتوصل لمرحلة ان مش قادرين نفتح لوتات جديدة و بيكون اللوت الاخير حجمه كبير و بيكون عكس الاتجاة فبتيجي من هنا الخسارة اللي بتدمر الحساب , السؤال بقى هل في طريقة نقدر نعرف بيها ان ده اخر لوت هنقدر نفتحه و ان وصلنا لمرحلة مش هنقدر نفتح صفقات بعد كده , لو قدرنا نعرف المعلومه دي نقدر نقوله في اللحظة دي اقفل على الخسارة الحالية مهما كانت وفي الغالب مش هتكون زي ما اخر حجم لوت هيمشي في الاتجاه العكسي .
- 04-12-2015, 01:49 PM #10
الرجاء الغاء فكرة انه يقفل الصفقة اللي توصل لهدفها دي فكرة فاشله لانه لما هيقفل الصفقات الرابحه اللي وصلت للهدف في الاغلب الصفقات الخاسرة هتكون عكس الاتجاه وهيتدمر الحساب , اعتذر عن الفكرة الخاطئة
- 04-12-2015, 04:38 PM #11
نفس فكرة إغلاق جميع الصفقات على ربح بالدولار ونفس الداله لكن بدلا من حساب مجموع الربح الكلي وتغلق كل الصفقات سوف تقارن فقط ربح كل صفقه منفصله وتقوم بإغلاقها
يمكن إستخدام الداله AccountFreeMarginCheck
مثال
كود PHP:if(AccountFreeMarginCheck(Symbol(),OP_BUY,lots)<=0)
{
Print("not enough margin to open buy order");
}
- 04-12-2015, 09:36 PM #12
بارك الله فيك يا مستر , معلش اخر طلب بس مهم لاني لما ركبت الاكسبرت على اكثر من زوج فتحلي صفقات على اكتر من زوج في وقت واحد و طبعا لانه شغال مضاعفات مش هينفع انه يدخل في اكثر من زوج , فرجاء تديني الكود انه لما يلاقي في صفقة مفتوحه لاي زوج ميدخلش صفقات لزوج تاني , و شكرا ليك يا مستر
- 05-12-2015, 05:34 PM #13
دالة عدد الصفقات المفتوحه التي تستخدمها
كود PHP:int ordestotal1()
{
int total_2=0;
for(int b=0;b<OrdersTotal();b++){
if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()){
total_2++;
}
}
return(total_2);
}
كود PHP:OrderSymbol()==Symbol()
ثم ستستخدم هذه الداله من ضمن شروط فتح الصفقات
- 06-12-2015, 01:40 PM #14
ربنا يباركلك في صحتك , تشكر يا مستر
- 06-12-2015, 02:30 PM #15
انا محتار مش عارف اسئلك عن الاكواد هنا و لا اكتبها في الموضوع المخصص للاسئلة البرمجية
معلش منفعتش فكرة ان لما المبلغ غير كافي لفتح صفقات جديدة يقفل كل الصفقات بيدي خسائر كتيرة , ممكن كود اغلاق اخر صفقة فتحها الاكسبرت , واكون لك شاكر