ممكن مساعدة في كتابة الأمر OrderSend
السلام عليكم جميـــــــــع
أساتذتي الأفاضل هذا الكود
كود:
extern double BuyPrice=1.3837;
extern double SellPrice=1.3427;
extern double Fibo=0.618;
==============================
double PIP,BTZD;
PIP=(BuyPrice-SellPrice)*Fibo;
BTZD=BuyPrice+PIP;
if ((MyBuyRealOrdersTotal(MagicNumber)==0) && (MyBuyPendingOrdersTotal(MagicNumber)==0) && AccountBalance()<Equity)
OrderSend(Symbol(),OP_BUYSTOP ,Lots,SellPrice,3,0,BTZD,Name,MagicNumber,0,Green);// (1)
لمن أستخدمت المتغير BTZD في الأمر OrderSend في خانة StopLoss & TakeProfit تم التعرف على المتغير BTZD ,و تم وضع الأمر .
و لكن لمن وضعت المتغير BTZD في خانة Price لم يستطيع الإكسبيرت من وضع الأمر .
كود:
OrderSend(Symbol(),OP_BUYSTOP ,Lots,BTZD,3,0,0,Name,MagicNumber,0,Green); // (2)
ماهو السبب ؟؟ و ما هو الخطأ ؟؟
يوفقكم ربي
رد: ممكن مساعدة في كتابة الأمر OrderSend
وعليكم السلام ورحمة الله وبركاته
عند حدوث أي خطأ غير متوقع في الإكسبرت إذهب إلى خانة Journal سوف يظهر لك رقم الخطأ ثم إذهب إلى الرابط
http://docs.mql4.com/constants/errors
سوف تجد به قائمة برقم الخطأ وما يعنيه عندها يمكن معرفة المشكله وحلها بسهوله
غالبا المشكله عندك هي في نوع الأمر فتأكد إذا كان سعر الدخول أقل من أمر الشراء فسوف يصبح من النوع BuyStop لكن إذا كان سعر الدخول اقل من أمرالشراء فيجب أن يكون من نوع BuyLimit
رد: ممكن مساعدة في كتابة الأمر OrderSend
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
وعليكم السلام ورحمة الله وبركاته
عند حدوث أي خطأ غير متوقع في الإكسبرت إذهب إلى خانة Journal سوف يظهر لك رقم الخطأ ثم إذهب إلى الرابط
http://docs.mql4.com/constants/errors
سوف تجد به قائمة برقم الخطأ وما يعنيه عندها يمكن معرفة المشكله وحلها بسهوله
غالبا المشكله عندك هي في نوع الأمر فتأكد إذا كان سعر الدخول أقل من أمر الشراء فسوف يصبح من النوع BuyStop لكن إذا كان سعر الدخول اقل من أمرالشراء فيجب أن يكون من نوع BuyLimit
شكرا مشرفنا الغالي على المرور و الإفادة ...... شوف السطر هذا
كود:
OrderSend(Symbol(),OP_BUYSTOP ,Lots,BuyPrice,3,0,BTZD,Name,MagicNumber,0,Green);
هنا تم التعرف على المتغير BTZD عل أنه TakeProfit و تم وضع الأمر
كود:
3 2010.11.22 00:00 buy stop 3 0.10 1.38370 0.00000 1.42140 0.00 5000.00
وتم تعريف BTZD=1.4214
أما هنا لم يتم قبول BTZD على أنه OrderOpenPrice
كود:
OrderSend(Symbol(),OP_BUYSTOP ,Lots,BTZD,3,0,0,Name,MagicNumber,0,Green);
و طلع الخطأ بأن السعر غير ممقبول ..... invalid price 1.42139800 for OrderSend functio
لماذا السعر هذا 1.421398 غير مقبول مع إنه نفس السعر السابق 1.4214 تقريبا
و للعلم بالنسبة لسعر السوق هو طبعا أقل من سعر BuyPrice و الا لما تم فتح الصفقة الأولى
هل ممكن توضيح أكثر لسبب الخطأ
رد: ممكن مساعدة في كتابة الأمر OrderSend
اقتباس:
المشاركة الأصلية كتبت بواسطة alshakatan
شكرا مشرفنا الغالي على المرور و الإفادة ...... شوف السطر هذا
كود:
OrderSend(Symbol(),OP_BUYSTOP ,Lots,BuyPrice,3,0,BTZD,Name,MagicNumber,0,Green);
هنا تم التعرف على المتغير
BTZD عل أنه
TakeProfit و تم وضع الأمر
كود:
3 2010.11.22 00:00 buy stop 3 0.10 1.38370 0.00000 1.42140 0.00 5000.00
وتم تعريف
BTZD=1.4214
أما هنا لم يتم قبول
BTZD على أنه
OrderOpenPrice كود:
OrderSend(Symbol(),OP_BUYSTOP ,Lots,BTZD,3,0,0,Name,MagicNumber,0,Green);
و طلع الخطأ بأن السعر غير ممقبول ..... invalid price 1.42139800 for OrderSend functio
لماذا السعر هذا 1.421398 غير مقبول مع إنه نفس السعر السابق 1.4214 تقريبا
و للعلم بالنسبة لسعر السوق هو طبعا أقل من سعر BuyPrice و الا لما تم فتح الصفقة الأولى
هل ممكن توضيح أكثر لسبب الخطأ
كما ترى السعر 1.421398 له 6 فواصل عشريه لذلك هذا سبب الخطأ إستخدم الأمر NormalizeDouble لتحديد الأرقام بعض الفاصله فيصبح بهذا الشكل
كود PHP:
NormalizeDouble(BTZD,Digits)
رد: ممكن مساعدة في كتابة الأمر OrderSend
شكرا باش مهندس بالفعل أتحلت المشكلة .... لكن ........ !!!!!!!!!
السؤال بصيغة أخرى ( و هو اللذي حصل بالفعل ) ؟؟ لماذا تم تعديل السعر BTZD في خانة TakeProfit&StopLoss ليتم قبوله و لم يتم بالمثل في خانة OrderOpenPrice ??
شوف ايش سويت ..... حطيت القيمة 1.42139800 مباشرة في خانة TakeProfit&StopLoss فتم تعديل السعر أوتوماتيكيا إلى 1.4214 و تم قبول الأمر
كود:
OrderSend(Symbol(),OP_BUYSTOP ,Lots,BuyPrice,3,0,1.42139800,Name,MagicNumber,0,Green);
و حطيته في خانة OrderOpenPrice فلم يحصل المثل
كود:
OrderSend(Symbol(),OP_BUYSTOP ,Lots,1.42139800,3,0,0,Name,MagicNumber,0,Green);
و تم رفض الأمر بخطأ رقم 4107 Invalid price.
فأستنتجت بأن الرقم يتم تعديله أوتوماتيكيا في خانتي TakeProfit&StopLoss و لا يتم ذلك في خانة OrderOpenPrice
فهل إستنتاجي صحيح أم هناك خلل آخر