بارك الله فيك أستاذي الغالي :eh_s(7):
قمت بتعديل اكسبيرت كاختبار وتجربته بالباكتيست ولازال يفتح صفقات متتالية من نفس النوع
الاكسبيرت بالمرفقات أرجو التصحيح أستاذي الكريم
:00110:
Printable View
المصفوفات تعمل في أي مكان تقوم بتعريفها مثلها مثل المتغيرات لكن الفرق فقط أن المصفوفه تستطيع أن تحمل أكثر من قيمه حسب حجم المصفوفه
مثلا لو قمت بتعريف مصفوفه
فهذا يعني أن المصفوفه تحفظ 10 قيم وتبدأ من 0 إلى 9كود PHP:double array[10];
هذا الموضوع به شرح ممتاز جدا للمصفوفاتكود PHP:array[0]
.
.
.
array[9]
http://book.mql4.com/variables/arrays
الشروط التي وضعتها غير كامله
مثلا بالنسبه للشرط
أنت جعلت سابقاكود PHP:if(Bid>=order[0][1])
فلم تحدد نقاط الأستوب لكن حددت السعر فقط وهذا السعر سيظل يتغير كلما تحرك السعر لأنك لم تضع شرطكود PHP:order[0][1]=Ask;
مثلا إذا كان المصفوفه = 2 فيجب أن ينتظر حتى يتحقق الهدف أو الأستوبكود PHP:if(Lost>=LostNumber)
{
//BuyOrder();
Lost=0;order[0][0]=0;
return(0);
}
else
{
order[0][0]=1;
order[0][1]=Ask;
}
أستاذ مستر دولار قمت بتجربة الاكسبيرت لايف وللأسف فتح صفقة وصفقات لم يفتحها
أظن السبب في الشرط[high[0]==low[0
ألا تظن أنه شرط صارم وصعب التحقق وكأنه slippage=0
أتمنى حل مشكلة التكرار بطريقة أخرى فقط بكود يمنع التكرار
يعني لما الصفقة تضرب الهدف او الستوب ينتظر الشرط المعاكس للدخول مرة أخرى وهكذا
هل ممكن ان نعمل اكسبريت يضع وقف خساره تلقائي لكل صفقه يتم فتحها
طبعا بناء ع عدد معين من النقاط
أنت لم تضع الشروط مع فتح الصفقه كما أخبرتك
الصحيحكود PHP:if(LastOrder!="S")
{
//open sell
LastOrder="S";
}
if (Close[1] < Open[1])
{
IfOrderDoesNotExist2();
}
مرفق الإكسبرتكود PHP:if (Close[1] < Open[1]&&LastOrder!="S")
{
IfOrderDoesNotExist2(); LastOrder="S";
}
شروط الإكسبرت لن تجعله يقوم بالدخول إلى عند تحقق الشروط فقط عند التقاطع سواء صعود أو هبوط
فلا تحتاج هذا الشرط أو أي شرط إضافي بالنسبه للصفقات الرئيسيه
لكن التعديل فقط في شروط المضاعفات ربما هذا هو السبب عند إغلاق الصفقه في نفس الشمعه
أضف نفس الشرط الموجود في الأوامر الرئيسيه
إلى شروط فتح المضاعفات أيضاكود PHP:&&Time0!=Time[0]
وعند فتح الصفقه ستجعل
كود PHP:Time0=Time[0];
أحبك في الله أستاذي وأخي العزيز :icon26:
نجحت الطريقة 100%
لكن واجهتني مشكلة أخرى :doh:
جعلت slippage=2 ولكن بيفتح صفقات مع أن الانزلاق السعري حصل ب 5 نقاط
فكرت وحللت الصفقة استنتجت أن السليبينغ يعمل طبعا لكن بما ان شرط الدخول لازال محققا بنفس الشمعة فسيدخل مرة أخرى (وكأنه تكرار) وهكذا إلى أن تتفعل الصفقة إذن السليباج أساسا ليس له دور مقارنة بشروط الاكسبيرت (test)
سؤالي ماهو الشرط البديل بأن لا تفتح الصفقة إذا تجاوز الاغلاق بعدد من النقاط ؟؟؟
أتمنى فهم قصدي !!!
شكرا جزيلا على سعة صدرك وإن شاء الله في ميزان حسناتك
:eh_s(7)::eh_s(7)::eh_s(7):
المشاركة الأصلية كتبت بواسطة fxsmartsniper
أستاذ مستر دولار قمت بتجربة الاكسبيرت لايف وللأسف فتح صفقة وصفقات لم يفتحها
أظن السبب في الشرط[high[0]==low[0
ألا تظن أنه شرط صارم وصعب التحقق وكأنه slippage=0
أتمنى حل مشكلة التكرار بطريقة أخرى فقط بكود يمنع التكرار
يعني لما الصفقة تضرب الهدف او الستوب ينتظر الشرط المعاكس للدخول مرة أخرى وهك
عندي مشكلله بالمتصفح ما اقدر اعمل اقتباس اعتقد افضل حل لمشكلتك عند تنفيذ الامر تحط
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask ,digits),3*Q,NormalizeDouble(SL,digits),NormalizeD ouble(TP,digits),"MR.dollar EA",MagicNumber,0,Blue);
buy1=false
sell1=true
ويكون الشرط true فما ينفذ العمليه الا عندما تكون اشاره عكسيه
اخواني واجهتني مشكله في بعض المنصات عند الامر يصدر خلل 130 اكتشفت بعد البحث انه البروكر لايقبل ستوب لوز مع الامر سيند اوردير فقمت بوضع الامر التالي والحمد لله تنفذ الامر
int ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDou ble(Ask,digits),slippage*Q,0,0," EA",MagicNumber,0,Blue);
OrderModify(ticket,OrderOpenPrice(),NormalizeDoubl e(Ask-StopLoss*point,digits),OrderTakeProfit(),0,Blue);
بعد تنفي الامر اضع اوردير مودي فاي مباشر ووضع الاستوب على طول