النتائج 1 إلى 9 من 9
  1. #1
    الصورة الرمزية SuccessTeam
    SuccessTeam غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2009
    الإقامة
    مسقط
    المشاركات
    205

    افتراضي مساعدة في كود برمجة

    السلام عليكم و رحمة الله

    اطلب من أخواني في هذا المنتدى أن يساعدوني في كيفية صياغة كود للتالي:

    1. اريد ان يظهر لي ناتج القسمة بخانتين عشريتين فقط مثال:

    1 تقسيم 3 تساوي 0.33333333333333
    انا اريد كود برمجي يخلي الناتج 0.33 فقط.

    2. اريد كود لمضاعفات بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى كل اكسبيرت يشتغل على الشارت تبعه.

    انا عندي خبرة قليلة بالبرمجة و اتمنى من الاخوان ذوي الخبرة و الدراية ان يساعدوني


    و شكرا

  2. #2
    الصورة الرمزية batttot
    batttot غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    الإقامة
    مصر
    المشاركات
    921

    افتراضي

    السلام عليكم ورحمة الله وبركاته

    المشكله الاولي حلها بسيط ........ استخدم دالة
    كود:
    double A =1/3 ;
      Print(NormalizeDouble(A,2));
    هذه الداله اخي الكريم ..... تختصر الارقام بعد العلامه العشريه للرقم الذي تريده ...... وكما تلاحظ انا هنا كتبت في القوس اولا المتغير A وبعده 2 وهو عدد الارقام الذي اريده بعد الفاصله العشريه وهو من 0 الي 8

    اما بالنسبه للسؤال الثاني .......

    انت يمكن ان تستخدم اي كود تريده وليس خصيصا كود معين و لكن عند وضع الاكسبيرت علي الشارت ضع له magic number مختلف وبهذا لن يتعامل هذا الاكسبيرت سوي مع الصفقات التي يفتحها هو ولها تفس الماجيك نمبر بدون ان يتدخل معي اي شارت اخر او اي اكسبيرت اخر .

    ارجو اخي الكريم اكود قد وفقت في الرد

    والسلام عليكم ورحمة الله وبركاته

  3. #3
    الصورة الرمزية SuccessTeam
    SuccessTeam غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2009
    الإقامة
    مسقط
    المشاركات
    205

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة batttot مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته

    المشكله الاولي حلها بسيط ........ استخدم دالة
    كود:
    double A =1/3 ;
      Print(NormalizeDouble(A,2));
    هذه الداله اخي الكريم ..... تختصر الارقام بعد العلامه العشريه للرقم الذي تريده ...... وكما تلاحظ انا هنا كتبت في القوس اولا المتغير A وبعده 2 وهو عدد الارقام الذي اريده بعد الفاصله العشريه وهو من 0 الي 8

    اما بالنسبه للسؤال الثاني .......

    انت يمكن ان تستخدم اي كود تريده وليس خصيصا كود معين و لكن عند وضع الاكسبيرت علي الشارت ضع له magic number مختلف وبهذا لن يتعامل هذا الاكسبيرت سوي مع الصفقات التي يفتحها هو ولها تفس الماجيك نمبر بدون ان يتدخل معي اي شارت اخر او اي اكسبيرت اخر .

    ارجو اخي الكريم اكود قد وفقت في الرد

    والسلام عليكم ورحمة الله وبركاته
    شكرا أخي على المساعده

    بالنسبة للسؤال الأول كل شئ تمام.

    و لكن بالنسبة للسؤال الثاني:
    ممكن تزودني بكود للمضاعفات بحيث اذا كانت الصفقة خاسرة يضاعف قيمة اللوت بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى و كل اكسبيرت يشتغل على الشارت تبعه فقط.

    و شكرا

  4. #4
    الصورة الرمزية batttot
    batttot غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    الإقامة
    مصر
    المشاركات
    921

    افتراضي

    اخي الكريم

    اكسبرتات المضاعفات تملاء المنتدي ........ وكلها مفتوحة المصدر وكلا بها اكواد كثيره اذا كاانت الصفقه خاسره يفتح مضاعفه و بصور وطرق كثيره ايضا ........ لكن انت مشكلتك ليست في الكود انت مشكلتك في magic number وهو رقم يكون كمتغير خارجي ........ تغيره كلما وضعت الاكسبيرت علي شارت مختلف وكل اكسبيرت له ماجيك نمبر خاص به تضعه انت له وبذلك لا يتدخلفي عمل اي اكسبيرت علي اي شارت اخر ........... هل فهمتني اخي الفاضل انت يمكنك انت تستخدم ما يحلو لك من الاكواد كلها موجوده في اي اكسبيرت مضاعفات وتغيير الماجيك نمبر للاكسبيرت كل مره تضعه علي شارت جديد وهكذا لن يتداخل في عمل اي شارت اخر ........... هذا من مبادئ البرمجه بلغة الميتا ترايدر ارجو الرجوع للدروس التعليميه عن الماجيك نمبر magic number .....

  5. #5
    الصورة الرمزية SuccessTeam
    SuccessTeam غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2009
    الإقامة
    مسقط
    المشاركات
    205

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة batttot مشاهدة المشاركة
    اخي الكريم

    اكسبرتات المضاعفات تملاء المنتدي ........ وكلها مفتوحة المصدر وكلا بها اكواد كثيره اذا كاانت الصفقه خاسره يفتح مضاعفه و بصور وطرق كثيره ايضا ........ لكن انت مشكلتك ليست في الكود انت مشكلتك في magic number وهو رقم يكون كمتغير خارجي ........ تغيره كلما وضعت الاكسبيرت علي شارت مختلف وكل اكسبيرت له ماجيك نمبر خاص به تضعه انت له وبذلك لا يتدخلفي عمل اي اكسبيرت علي اي شارت اخر ........... هل فهمتني اخي الفاضل انت يمكنك انت تستخدم ما يحلو لك من الاكواد كلها موجوده في اي اكسبيرت مضاعفات وتغيير الماجيك نمبر للاكسبيرت كل مره تضعه علي شارت جديد وهكذا لن يتداخل في عمل اي شارت اخر ........... هذا من مبادئ البرمجه بلغة الميتا ترايدر ارجو الرجوع للدروس التعليميه عن الماجيك نمبر magic number .....
    شكرا لأخي للتوضيح، أنا فاهم قصدك لكن انا بحثت عن كود المضاعفات في اكثر من اكسبيرت و لكن ما تعرفت عليه. ممكن تتكرم علي و تعطيني مثال او اكثر على كود للمضاعفات و هل هناك فرق بين كود و أخر؟

    و ألف شكرا لك أخي العزيز و جزاك الله خيرا

  6. #6
    الصورة الرمزية batttot
    batttot غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    الإقامة
    مصر
    المشاركات
    921

    افتراضي

    اخي الكريم ........ لا يوجد كود محدد اسمه كود مضاعفات وانما ه يكون الاكسبيرت قادر علي ان يغلق ويفتح صفقات مضاعفه ...... بمعني اخر ...... المضااعفات مثلها مثل غيرها هي طريقه من طرق المتاجره وكل طريقه ولها اكثر من اسلوب لبرمجتها لانه البرمجه في الاساس تحتاج الي عقل قادر علي توليد الافكار ....... ولتسيط الامور عليك اخي الكريم اعطيك مثال

    لو فرضنا انك تريد ان تفتح بيع مع افتتاح شمعة اليوم ..... فتضع في الاكسبيرت امر للبيع مع افتتاح اليوم و وتجعل الاكسبيرت يراقب الصفقه المفتوحه عن طريق حلقة تقوم بعد الاوامر المفنوحه واذا امر منهم وصل الي الهدف الموضوع في الاكسبيرت يقوم بأغلاقه واذا وصل الي الاستوب يقوم باغلاقه وفتح عكسه بضعف اللوت ...... ههذه اوامر عاديه جدا ولكن الفيصل في طريقه المضاعفات التي تريدها انت ........ فمثلا هل تريد ان يفتح بيع بيع بيع ........ ام شراء بيع شراء بيع وهكذا

    كلها اساليب لوضع الاوامر ولا يوجد ما يسمي كود مضاعفات ,,,,,, انت فقط اذا اردت ان تنفذ امر برمجي معين
    امامك خيارين فقط
    اولا اما ان تقوم انت ببرمجته من الاساس كما تريد ويحلو لك وهذا ما افضله
    او
    ثانيا ان تقرأ الاكسبيرتات الموجوده علي الانترنت وتبحث فيها عن المعادلات التي تؤدي اسلوب المتاجره الذي تريده
    وطبعا الامرين يحتاجون ان تكون تجيد لغة البرمجه علي الميتا ترايدر ......... اما ان تقول اريد كود مضاعفات ...... وكود هيدج وخلافه فهذا لا يوجد وانما انت الذي تقوم بكتابة الاوامر حتي تكون في النهاية كما تريد ........... يبدو من كلامك اخي انك مبتديء جدا في اللغه حتي انك يبدو لم تتعلمها وتظنها انها اكواد قص ولزق ....... ارجوك اخي حاول اولا انت تتقن البرمجه باللغه وبعدها سوف لن تحتاج اي اكواد جااهزه ان شااء الله
    اما بالنسبه لطلبك مثال فسوف اعطيك مثال علي اكيفيه اكواد المضااعفات
    كود:
     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); 
    }
    وهنا انا قمت بكتابة حلقه ترااجع الاوامر المفتوحه وتختار منها امر الشراء بناء علي قيمة اللوت والماجيك نمبر ونوع العمليه والعمله واذا كان الاستوب 30 نقطه يقوم باغلاقه ويفتح عكسه بعقد مضاعف

    طبعا هذه السطور البرميجه لا تصلح مطلقا ان توضع هكذا في الاكسبيرت لانه ينقصها الكثير من الاضافات التي تتختلف حسب الاكسبيرت الذي تريد تصميمه ولكن هذه هي الفكره العامه

    اتمني اكون وفقت في الشرح
    واي استفسار انا تحت امرك

  7. #7
    الصورة الرمزية SuccessTeam
    SuccessTeam غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2009
    الإقامة
    مسقط
    المشاركات
    205

    افتراضي رد:مساعدة في كود برمجة

    أخي الكريم لقد عملت كود للمضاعفات بحيث اذا كانت الصفقة خاسرة يضاعف قيمة اللوت بحيث ممكن اخليه على اكثر من عملة و ما يتدخل او يعدل على العملة الاخرى و لكن اكسبيرت لا يحسب قيمة اللوت بشكل صحيح و خاصة اذا وضعته على اكثر من عمله.

    ممكن أخي ان تراجع الكود و تعدل عليه بحيث يعمل المطلوب:

    و شكرا


    كود 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

  8. #8
    الصورة الرمزية batttot
    batttot غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    الإقامة
    مصر
    المشاركات
    921

    افتراضي

    السلام عليكم ورحمة الله وبركاته

    في الكود التالي قمت بالتعديل علي ما طتبته انت بنفس الشروط ففي حالة وجود امر شراء وله ماجيك نمبر محدد واذا كان سعر الفتح للصفقه اكبر من سعر راغلاق الصفقه فهو سوف يقوم بفتح صفقه اخري بلوت مضاعف ونفس الشروط في حالة البيع .....

    ملاحظات هامة جدا

    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 );
           }
        }

  9. #9
    الصورة الرمزية SuccessTeam
    SuccessTeam غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2009
    الإقامة
    مسقط
    المشاركات
    205

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة batttot مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته

    في الكود التالي قمت بالتعديل علي ما طتبته انت بنفس الشروط ففي حالة وجود امر شراء وله ماجيك نمبر محدد واذا كان سعر الفتح للصفقه اكبر من سعر راغلاق الصفقه فهو سوف يقوم بفتح صفقه اخري بلوت مضاعف ونفس الشروط في حالة البيع .....

    ملاحظات هامة جدا

    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 );
           }
        }
    شكرا أخي للرد عندي بعض الملاحظات و الاستفسارات و بعض التعديلات:

    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


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17