رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
لم أجرب الإكسبرتات على منصة fxdd ويمكنك زيادة عدد المحاولات فكما قلت لك حسب رؤيتك وعدد المحاولات التي تريد وضعها
لا يوجد حل آخر لإعادة التسعير إلا أنك تحاول وضع الأمر كأمر معلق في هذه الحاله سيكون بعيد عن السعر الحالي لكن ستضمن أن يوضع الأمر ويتفعل بدون ظهور أخطاء
جربت زيادة أو تقليل عدد المحاولات ومازالت المشكلة كما هى ، وانا سألت أحد الأساتذة المبرمجين عن سبب ظهور الخطـأ وذكر لى التالى ..
الخطأ أنك تستخدم normalizedouble مع سعر الشراء
الوظيفة ordersend يجب أن يكون السعر هو Ask أو Bid مباشرة بدون تغيير
وذلك عند الدخول فوري وليس أمر معلق
ضع السعر Ask أو Bid مباشرة دون تعديل وسوف تحل المشكلة إن شاء الله
هل normalizedouble قد تكون سبب المشكلة !! ، واذا كان ذلك صحيح لماذا لم تظهر المشكلة مع منصـات أخرى .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
هناك حل آخر إجعل الداله تقوم بعمل مودفاي لجميع الأوامر المفتوحه لجعل هدف جميع الصفقات هو هدف الصفقه الأخيره المفتوحه
بالتالي لن تحتاج إلى إغلاقها بعد تحقق الهدف
شكرا أخي أسامه و جزاك الله خيرا .. لو ممكن أخي توضيح للداله و الشرط لو تكرمت ..
هذه الداله تقوم بعمل modify
وداله تحسب سعر إفتتاح الصفقه
كود PHP:
void ModifyNewTP(int type)
{
for (int cnt = OrdersTotal() ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() &&OrderType()==type)
{
if(OrderTakeProfit()!=GetFirstOrderPrice(type))
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetFirstOrderPrice(type),0);
}
}
}
double GetFirstOrderPrice(int type)
{
for (int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
{
return(OrderOpenPrice());
}
}
return(0);
}
وهذا الشرط الذي إستخدمته في الإكسبيرت وهو يعدل هدف أول صفقه فقط :
كود PHP:
if(orderstotal()>1){
ModifyNewTP(OP_BUY);ModifyNewTP(OP_SELL);
}
فهل هنا أحتاج إلى تعديل في الشرط أم الداله نفسها و ياريت لو شرح بسيط للداله لو يلزم تعديلها ..
وبارك الله فيك .
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة فـ الاكسيبرت المرفق ، أريد حذف الكود الخاص بفترة إنتهاء عمل الاكسيبرت
هل أحذف هذا الجزء من الاكسيبرت فقط !!
كود PHP:
if (!gi_560) {
l_var_name_8 = "eswtc" + StringSubstr(Release, StringLen(Release) - 1) + StringSubstr(gs_476, StringLen(gs_476) - 1);
if (GlobalVariableGet(l_var_name_8) > 0.0) {
if (TimeCurrent() - GlobalVariableGet(l_var_name_8) > 604800.0) {
gi_556 = TRUE;
ShowState("The product has expired", 1, 1);
return;
}
} else GlobalVariableSet(l_var_name_8, TimeCurrent());
}
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
قم بتعريف متغيرات ضع بها رقم التيكيت والهدف وسعر الإفتتاح للصفقه وإستخدمها في دالة OrderModify
كود PHP:
void ModifyNewTP(int type)
{
for (int cnt = OrdersTotal() ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();double sl=OrderStopLoss();double openprice=OrderOpenPrice();double tp=OrderTakeProfit();
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() &&OrderType()==type)
{
if(tp!=GetFirstOrderPrice(type))
OrderModify(ticket,openprice,sl,GetFirstOrderPrice(type),0);
}
}
}
تمام أخي أسامه و بارك الله فيك ..
الآن بعد التعديل يقوم الإكسبيرت بعمل موديفاي و يجعل هدف أي تبريد نقطة دخول الصفقه الأول ويغلق الصفقه الأولى على زيرو أي على نقطة دخولها ...
و كنت أريد جعل الإكسبيرت يقوم بعمل موديفاي ليغلق كل الصفقات على هدف آخر صفقه .. يعني إذا كان هناك 3 تبريدات مفتوحه يكون هدفها جميعا و حتى الصفقه الأولى يساوي هدف التبريد الأخير ..
و بارك الله فيك أخي أسامه
2 مرفق
رد:موضوع مخصص للأسئلة البرمجية
أخي أسامه هذا الإكسبيرت لا يستطيع إستدعاء المؤشر ويعطيني في خانة الجورنال أنه لا يستطيع فتح المؤشر رغم أني متأكد من صحة تسميته ... و بالتالي يعطي في الباكتيست دخول خاطئ ...
رجاء الإطلاع
وبارك الله فيك .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
أخي أسامه هذا الإكسبيرت لا يستطيع إستدعاء المؤشر ويعطيني في خانة الجورنال أنه لا يستطيع فتح المؤشر رغم أني متأكد من صحة تسميته ... و بالتالي يعطي في الباكتيست دخول خاطئ ...
رجاء الإطلاع
وبارك الله فيك .
أخى dentist_hussein المشكلة لديك فـ مسافة زائدة بين أخر " وحرف s
كود PHP:
double B=iCustom(Symbol(),0,"Auto Recommendations ",2,1);
يجب ان لايوجد مسافات بين اسم المؤشر وعلامة التنصيص بالشكل التالى ..
كود PHP:
,"Auto Recommendations",
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
استاذ اسامة فـ الاكسيبرت المرفق ، أريد حذف الكود الخاص بفترة إنتهاء عمل الاكسيبرت
هل أحذف هذا الجزء من الاكسيبرت فقط !!
كود PHP:
if (!gi_560) {
l_var_name_8 = "eswtc" + StringSubstr(Release, StringLen(Release) - 1) + StringSubstr(gs_476, StringLen(gs_476) - 1);
if (GlobalVariableGet(l_var_name_8) > 0.0) {
if (TimeCurrent() - GlobalVariableGet(l_var_name_8) > 604800.0) {
gi_556 = TRUE;
ShowState("The product has expired", 1, 1);
return;
}
} else GlobalVariableSet(l_var_name_8, TimeCurrent());
}
أم أحذف جزء فقط من الكود ويصبح كالتالى ..
كود PHP:
if (!gi_560) {
l_var_name_8 = "eswtc" + StringSubstr(Release, StringLen(Release) - 1) + StringSubstr(gs_476, StringLen(gs_476) - 1);
}
else GlobalVariableSet(l_var_name_8, TimeCurrent());
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
أخى dentist_hussein المشكلة لديك فـ مسافة زائدة بين أخر " وحرف s
كود PHP:
double B=iCustom(Symbol(),0,"Auto Recommendations ",2,1);
يجب ان لايوجد مسافات بين اسم المؤشر وعلامة التنصيص بالشكل التالى ..
كود PHP:
,"Auto Recommendations",
تمام أخي سبايدر و شكرا جزيلا و بارك الله فيك .
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
هناك مشكله صغيره بالإكسبيرت و هي أن الإكسبيرت من المفترض إذا أغلقت الصفقه على خساره يتم مضاعفة العقود في الصفقه التاليه مباشرة و لكن المشكله أن الإكسبيرت إذا أغلق صفقة بيع مثلا على خساره والصفقه التاليه مباشرة شراء لا يقوم بمضاعفة العقود و يضاعفها فقط إذا كانت الصفقه نفس نوع الصفقه الخاسره .. فما حل هذه المشكله أخي أسامه بارك الله فيك ..
الإكسبيرت