النتائج 1 إلى 9 من 9
الموضوع: مساعدة في كود برمجة
- 15-08-2013, 09:11 PM #1
مساعدة في كود برمجة
السلام عليكم و رحمة الله
اطلب من أخواني في هذا المنتدى أن يساعدوني في كيفية صياغة كود للتالي:
1. اريد ان يظهر لي ناتج القسمة بخانتين عشريتين فقط مثال:
1 تقسيم 3 تساوي 0.33333333333333
انا اريد كود برمجي يخلي الناتج 0.33 فقط.
2. اريد كود لمضاعفات بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى كل اكسبيرت يشتغل على الشارت تبعه.
انا عندي خبرة قليلة بالبرمجة و اتمنى من الاخوان ذوي الخبرة و الدراية ان يساعدوني
و شكرا
- 15-08-2013, 09:45 PM #2
السلام عليكم ورحمة الله وبركاته
المشكله الاولي حلها بسيط ........ استخدم دالة
كود:double A =1/3 ; Print(NormalizeDouble(A,2));
اما بالنسبه للسؤال الثاني .......
انت يمكن ان تستخدم اي كود تريده وليس خصيصا كود معين و لكن عند وضع الاكسبيرت علي الشارت ضع له magic number مختلف وبهذا لن يتعامل هذا الاكسبيرت سوي مع الصفقات التي يفتحها هو ولها تفس الماجيك نمبر بدون ان يتدخل معي اي شارت اخر او اي اكسبيرت اخر .
ارجو اخي الكريم اكود قد وفقت في الرد
والسلام عليكم ورحمة الله وبركاته
- 16-08-2013, 02:07 AM #3
شكرا أخي على المساعده
بالنسبة للسؤال الأول كل شئ تمام.
و لكن بالنسبة للسؤال الثاني:
ممكن تزودني بكود للمضاعفات بحيث اذا كانت الصفقة خاسرة يضاعف قيمة اللوت بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى و كل اكسبيرت يشتغل على الشارت تبعه فقط.
و شكرا
- 16-08-2013, 08:52 AM #4
اخي الكريم
اكسبرتات المضاعفات تملاء المنتدي ........ وكلها مفتوحة المصدر وكلا بها اكواد كثيره اذا كاانت الصفقه خاسره يفتح مضاعفه و بصور وطرق كثيره ايضا ........ لكن انت مشكلتك ليست في الكود انت مشكلتك في magic number وهو رقم يكون كمتغير خارجي ........ تغيره كلما وضعت الاكسبيرت علي شارت مختلف وكل اكسبيرت له ماجيك نمبر خاص به تضعه انت له وبذلك لا يتدخلفي عمل اي اكسبيرت علي اي شارت اخر ........... هل فهمتني اخي الفاضل انت يمكنك انت تستخدم ما يحلو لك من الاكواد كلها موجوده في اي اكسبيرت مضاعفات وتغيير الماجيك نمبر للاكسبيرت كل مره تضعه علي شارت جديد وهكذا لن يتداخل في عمل اي شارت اخر ........... هذا من مبادئ البرمجه بلغة الميتا ترايدر ارجو الرجوع للدروس التعليميه عن الماجيك نمبر magic number .....
- 16-08-2013, 11:40 AM #5
- 16-08-2013, 04:30 PM #6
اخي الكريم ........ لا يوجد كود محدد اسمه كود مضاعفات وانما ه يكون الاكسبيرت قادر علي ان يغلق ويفتح صفقات مضاعفه ...... بمعني اخر ...... المضااعفات مثلها مثل غيرها هي طريقه من طرق المتاجره وكل طريقه ولها اكثر من اسلوب لبرمجتها لانه البرمجه في الاساس تحتاج الي عقل قادر علي توليد الافكار ....... ولتسيط الامور عليك اخي الكريم اعطيك مثال
لو فرضنا انك تريد ان تفتح بيع مع افتتاح شمعة اليوم ..... فتضع في الاكسبيرت امر للبيع مع افتتاح اليوم و وتجعل الاكسبيرت يراقب الصفقه المفتوحه عن طريق حلقة تقوم بعد الاوامر المفنوحه واذا امر منهم وصل الي الهدف الموضوع في الاكسبيرت يقوم بأغلاقه واذا وصل الي الاستوب يقوم باغلاقه وفتح عكسه بضعف اللوت ...... ههذه اوامر عاديه جدا ولكن الفيصل في طريقه المضاعفات التي تريدها انت ........ فمثلا هل تريد ان يفتح بيع بيع بيع ........ ام شراء بيع شراء بيع وهكذا
كلها اساليب لوضع الاوامر ولا يوجد ما يسمي كود مضاعفات ,,,,,, انت فقط اذا اردت ان تنفذ امر برمجي معين
امامك خيارين فقط
اولا اما ان تقوم انت ببرمجته من الاساس كما تريد ويحلو لك وهذا ما افضله
او
ثانيا ان تقرأ الاكسبيرتات الموجوده علي الانترنت وتبحث فيها عن المعادلات التي تؤدي اسلوب المتاجره الذي تريده
وطبعا الامرين يحتاجون ان تكون تجيد لغة البرمجه علي الميتا ترايدر ......... اما ان تقول اريد كود مضاعفات ...... وكود هيدج وخلافه فهذا لا يوجد وانما انت الذي تقوم بكتابة الاوامر حتي تكون في النهاية كما تريد ........... يبدو من كلامك اخي انك مبتديء جدا في اللغه حتي انك يبدو لم تتعلمها وتظنها انها اكواد قص ولزق ....... ارجوك اخي حاول اولا انت تتقن البرمجه باللغه وبعدها سوف لن تحتاج اي اكواد جااهزه ان شااء الله
اما بالنسبه لطلبك مثال فسوف اعطيك مثال علي اكيفيه اكواد المضااعفاتكود:OrderSend(Symbol(),OP_BUY,lotsize,Ask,3,sl,tp,"",magic,0,Green);
فتقوم بعمل الحلقه الاتيه للبحث عن هذا الامر واغلاقه اذا كان الاستوب مثلا 30نقطه وفتح امر مضاعف
كود:for (i=0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY&&OrderMagicNumber()==magicn&&OrdersTotal()<2) if ( OrderStopLoss()==30*Point) { OrderSend(Symbol(),OP_SELL,lotsize*2,BID,3,sl,tp,"",magic,0,Green); OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3); }
طبعا هذه السطور البرميجه لا تصلح مطلقا ان توضع هكذا في الاكسبيرت لانه ينقصها الكثير من الاضافات التي تتختلف حسب الاكسبيرت الذي تريد تصميمه ولكن هذه هي الفكره العامه
اتمني اكون وفقت في الشرح
واي استفسار انا تحت امرك
- 25-08-2013, 11:28 PM #7
رد:مساعدة في كود برمجة
أخي الكريم لقد عملت كود للمضاعفات بحيث اذا كانت الصفقة خاسرة يضاعف قيمة اللوت بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى و لكن اكسبيرت لا يحسب قيمة اللوت بشكل صحيح و خاصة اذا وضعته على اكثر من عمله.
ممكن أخي ان تراجع الكود و تعدل عليه بحيث يعمل المطلوب:
و شكرا
كود PHP:
if(OrderType()==OP_BUY)
{
if (OrderOpenPrice() > OrderClosePrice()) Lots = OrderLots()*2;
}
if (OrderType()==OP_SELL)
{
if (OrderOpenPrice() < OrderClosePrice()) Lots = OrderLots()*2;
}
آخر تعديل بواسطة SuccessTeam ، 25-08-2013 الساعة 11:39 PM
- 25-08-2013, 11:51 PM #8السلام عليكم ورحمة الله وبركاته
في الكود التالي قمت بالتعديل علي ما طتبته انت بنفس الشروط ففي حالة وجود امر شراء وله ماجيك نمبر محدد واذا كان سعر الفتح للصفقه اكبر من سعر راغلاق الصفقه فهو سوف يقوم بفتح صفقه اخري بلوت مضاعف ونفس الشروط في حالة البيع .....
ملاحظات هامة جدا
1- المتغير lots اجعله double وليس int
2- هذا الكود لا يحتوي علي امر لاغلاق الصفقات ولا اي اوامر لتحديد عدد الصفقات التي تريد ان تفتحها وبذلك سوف يقوم بفتح صفقات الي مالا نهاية ما لم تحدد انت الاكواد التي تريدها لتقنين الامور اكثر من هذا
3 - هذا الكود يحتاج دوال اخري تساعده ولا يقوم بالعمل بمفرده مثل دالة orderselect
علي كل حال راجع الاكواد وانا تحتامرك في اي مساعده اقدر عليها ان شاء الله
كود:if(OrderType()==OP_BUY&& OrderMagicNumber()==magic&&OrderLots()==lots) { if (OrderOpenPrice() > OrderClosePrice()) { OrderSend(Symbol(), OP_BUY, Lots*2,Ask, 0, 0, 0, 0, MagicNumber, 0, Green ); } } if(OrderType()==OP_SELL&& OrderMagicNumber()==magic&&OrderLots()==lots) { if (OrderOpenPrice() > OrderClosePrice()) { OrderSend(Symbol(), OP_SELL, Lots*2,Bid, 0, 0, 0, 0, MagicNumber, 0,Red ); } }
- 27-08-2013, 06:24 PM #9
شكرا أخي للرد عندي بعض الملاحظات و الاستفسارات و بعض التعديلات:
1. انا لا اريد ان افتح صفقة في هذا الكود فقط أريده ان يقوم بتعديل (مضاعفة) اللوت عند تحقق الشروط.
2. ما فائدة شرط &&OrderLots()==lots في الكود؟
3. كيف استفيد من دالة orderselect و ممكن تعطيني مثال يفيدني في الكود يلي طالبه؟
كود PHP:
if(OrderType()==OP_BUY && OrderMagicNumber()==magic && OrderLots()==lots)
{
if (OrderOpenPrice() > OrderClosePrice()) Lots = OrderLots()*2;
}
if (OrderType()==OP_SELL && OrderMagicNumber()==magic && OrderLots()==lots)
{
if (OrderOpenPrice() < OrderClosePrice()) Lots = OrderLots()*2;
}
آخر تعديل بواسطة SuccessTeam ، 27-08-2013 الساعة 06:41 PM