السلام عليكم ورحمة الله وبركاته
أخي مستر دولار
كيف أجعل اي مؤشر من مؤشر الشمعه الحاليه الى مؤشر تاريخي
وجزاك الله خيراً
Printable View
السلام عليكم ورحمة الله وبركاته
أخي مستر دولار
كيف أجعل اي مؤشر من مؤشر الشمعه الحاليه الى مؤشر تاريخي
وجزاك الله خيراً
هل الاكسبيرت عندما يقراء الاوامر يبداء من السطر الاعلى ثم الذي يليه ثم الذي يليه يعني من الاعلى الى الاسفل فهل عند تقديم امر على امر يعمل على تغيير عمل الاكسبيرت؟
وما هو الحل عندما يكون اللوت مثلا 0.16 لانه يطلع عندي خطاء 131؟
هل الميتا 4 مثل ميتا 5 في البرمجه
يمكنك تغيير عدد الأيام التي مرت في الكود الآتي
فبدلا من جعلها 10 يمكنك تغييرها لأي رقم آخر أيضا يمكنك مثلا تحديد يوم محدد مثلا يوم الإثنين مع إفتتاح السوقكود PHP:if((TimeCurrent()-T)/86400>=10)
بالتالي بعد مرور 10 أيام على إفتتاح الصفقه ويصبح اليوم هو الإثنين يتم حذف الأوامر المعلقه وإغلاق الصفقاتكود PHP:if((TimeCurrent()-T)/86400>=10&&DayOfWeek()==1)
نعم الإكسبرت يقرأ الأسطر من الأعلى ثم الذي يليه يمكنك ملاحظة ذلك قم مثلا بوضع أمرين بيع وشراء أسفل بعضهم سوف تجد أن الأمر في الأعلى سوف يتفعل أولا وهذا يؤثر على عمل الإكسبرت فعلا في أحيان كثيره
حسب شروط الإكسبرت
إذا كان البروكر لا يسمح بوضع حجم لوت ميكرو
يمكنك إستخدام الأمر
بالتالي سوف تقوم الداله بأخذ أول رقم عشري فقط بعد الفاصله فيصبح 0.1 بدلا من 0.16كود PHP:NormalizeDouble(Lots,1);
طبعا يمكن تغيير الرقم 1 في الداله بعدد الأرقام التي تريدها بعد الفاصله العشريه
ليست نفسها طبعا هي تقريبا متشابهة كثيرا لكن هناك بعض التحديثات التي دخلت على اللغه لكن إذا كنت
تعلم ميتا 4 فسهل أن تراجع التطورات والتغييرات الحادثه في ميتا 5 وتتعلمها
تمام جزاك الله خيراً أخي العزيز
وشكراً لردك
مشكور اخ اسامه........لكن مازال الخطاء قائم 131 رغم محاوله تصليحه التجربه كانت على منصه التريدر
,وبالنسبه للاغلاق في يوم محدد حاولت اعمل كما قلت ولكن الشرط بهذا الشكل لم يودي الغرض المطلوب لانه عند يصل الى اليوم المحدد وdayofweek dيبقى يكرر نفسه اسبوعيا لانه اصبح اكبر او يساوي اليوم المحدد.
بااختصار اريد الكود يغلق ويحذف جميع الصفقات في يوم واحد احدده انا مثلا انا افتح صفقبين معلقتين يوميا ما ان يكون قد مر اربعين يوم مثلا من فتح اول امر معلق يقوم بحذفها و غلق جميع الصفقات في هذا اليوم. يعني صفقه سيكون قد مر عليها يوم وصفقه عشرين يوم وصفقه عشره ايام وهكذا . اتمنى ان تكون الفكره وصلت.
السلام عليكم ورحمة الله وبركاته
ما معنى الخطأ 138 Requote
أنت جعلته بهذا الشكل
وبما أنك تقول أن الإكسبرت لا يسمح بلوت ميكرو فلماذا جعلت الرقم 2 هذا يعني سيأخذ رقمين عشريين بعد الفاصله فسوف يصبح حجم اللوت 0.16 كما هو راجع المشاركه السابقهكود PHP:NormalizeDouble(Lots,2);
أيضا تأكد من أن حجم اللوت يسمح به البروكر مثلا يمكنك إستخدام هذا الكود
فإذا كان حجم اللوت أقل من أو أكبر من أقصى حجم يسمح به البروكر سوف يجعل الإكسبرت حجم اللوت هو اللوت المسموحكود PHP:if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
بالنسبة للجزء الثاني فأنت ذكرت المشكله جرب الحل بنفسك ما هو الحل في رأيك ؟
إستخدم الشرطين معا وليس شرط واحد وبما أنك تريد إغلاق جميع الصفقات عند مرور وقت محدد على أي صفقه
كمثال :
فعندما يجد الإكسبرت صفقه قد مر عليها عدد الأيام المطلوبه يكون قد تحقق الشرط فيقوم الإكسبرت بالبحث عن جميع الصفقات المفتوحه وحذفها أو إغلاقهاكود PHP:for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
t=OrderTicket();int type=OrderType();datetime T=OrderOpenTime();double lots=OrderLots();
if((TimeCurrent()-T)/86400>=10)
{
for( i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
t=OrderTicket(); type=OrderType(); T=OrderOpenTime(); lots=OrderLots();
if(type>OP_SELL)OrderDelete(t);
if(type==OP_BUY) OrderClose(OrderTicket(),lots,Bid,3);
if(type==OP_SELL) OrderClose(OrderTicket(),lots,Ask,3);
}
}
}
الله يجزيك كل خير ........صراحه اتعبتك معايا لكن تعبك خير ان شاء الله.
اذا كان البروكر يسمح ب 0.1 لوت هل معنى هذا انه يمكن ان اجعل الاكسبيرت يفتح لوت هكذا 0.16 لانه على ما اعتقد ان البروكر لايسمح ب 0.16 ولكن يسمح 0.1؟
طبعا بالنسبه لفكره كود غلق وحذف الصفقات عند وقت محدد ارى انها اتعبتنا كثيرا فا لافضل تركها.........لاني اتعبتك كثيرا؟
هل هذه الترجمه صحيحه . اريد الاكسبيرت ا ن يقوم بفتح عقدين معاكسين للعقد الاول في حاله كان العقد الاول قد اصبح خسران بمقدار 100 نقطه مثلا.
مثلا قمت بفتح عقدين معلقين بيع وشراء من نوع ستوب فتفعل البيع ولكن السوق كان ضدي فما ان يصل الى خساره 100نقطه يقوم الاكسبيرت بفتح عقدين شراء .
ملاحظه ان اي صفقه تحقق الشرط اذا يتحقق الجواب وليس اجمالي الصفقات تحقق الشرط ولكن كل على حده.كود PHP:if(Profit==-100) { افتح عقدين عكس العقد السابق}
بس كيف تكون الترجمه الدقيقه لتلك الجمله؟
ليس شرط أن يسمح البروكر بعد 0.16 إذا كان يسمح بعقد 0.1
الآن أنت حددت Profit لكن هذا الربح وليس عدد النقاط الخاسره لذلك سوف تحتاج إلى معرفة سعر فتح الصفقه الأولى ثم تحديد السعر الحالي وحساب عدد النقاط الخاسره
وهي طريقة نستخدمها في أغلب إكسبرتات المضاعفات راجع الإكسبرت المرفق خصوصا هذا الجزء
وهو الخاص بفتح صفقة مضاعفات كلما عكس السعركود PHP:if(UseMultiplier){
for(s=OrdersTotal()-2;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==OP_BUY){
openprice=OrderOpenPrice();lots=OrderLots();
}
}{
if(X_Multiplier){
newLot=Multiplier*lots;
}
else{newLot=lots+Lots;}
if(Ask<=openprice-Step*point&&orderscnt(OP_BUY)>=1){
//if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,newLot,NormalizeDouble(Ask,Digits),3*Q,0,0,"MR.dollar EA",MagicNumber,0,Blue);
l++;
}
}
for(s=OrdersTotal()-2;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==OP_SELL){
openprice=OrderOpenPrice(); lots=OrderLots();
}
}{
if(X_Multiplier){
newLot=Multiplier*lots;
}
else{newLot=lots+Lots;}
if(Bid>=openprice+Step*point&&orderscnt(OP_SELL)>=1){
// if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,newLot,NormalizeDouble(Bid,Digits),3*Q,0,0,"MR.dollar EA",MagicNumber,0,Red);
ll++;
}
}
}
السلام عليكم و رحمة الله و بركاته
كيف يمكن تعديل هذا المؤشر لكي يظهر فقط اول تقاطع شرائي فوق السحابة و العكس
وجزاك الله خير