Quran 24/7 للمبرمجين يا جماعة برجاء المساعدة فى كتابة هذا الكود





صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 10 من 13

الموضوع: للمبرمجين يا جماعة برجاء المساعدة فى كتابة هذا الكود

  1. #1
    عضو جديد
    تاريخ التسجيل
    Jan 2018
    المشاركات
    9

    افتراضي للمبرمجين يا جماعة برجاء المساعدة فى كتابة هذا الكود

    السلام عليكم ورحمة الله وبركاتة
    خبراء البرمجة برجاء المساعدة
    الكود دا فى حالة البيع
    كود PHP:
       if ((High[0] > Bid) && ((High[0] - Bid) > 7*PipValue*Point )) 
    بمجرد ان السعر ينزل سبع نقط فى الشمعة تتم عملية بيع
    وبستخدم الكود دا فى حالة الشراء
    كود PHP:
       if ((Low[0] < Ask) && ((Low[0] - Ask) > 7*PipValue*Point )) 
    نفس الفكرة السعر طلع سبع نقط تتم عملية الشراء
    او ينتقل للشرط او الدالة اللى بعدة
    السؤال هنا
    اولا كود الشراء لا يعمل نهائيا
    ثانيا عاوز ادخل شرط فى الكود وهو ان الحركة دى تتم فى عدد معين من الثوانى
    يعنى اذا السعر تحرك سبع نقط لاسفل فى اقل من 5 ثوانى مثلا تتم عملية بيع

    اية الاضافات اللى اضيفها للكود بخصوص الوقت
    وهل فية طريقة افضل فى كتابة الكود والتنفيذ يكون ادق
    وشكرا

  2. #2

    افتراضي

    وعليكم السلام
    ارفق الكود كاملا للمراجعة

  3. #3
    عضو جديد
    تاريخ التسجيل
    Jan 2018
    المشاركات
    9

    افتراضي

    كود PHP:

    #property copyright "Copyright  2018"


    #include <stdlib.mqh>
    #include <WinUser32.mqh>

    // exported variables

    input string mm="Money management" ;
    extern double Risk 0.5;
    extern int Stoploss 4;
    extern int Takeprofit 0;
    input  string Trailing "Trailing settings";
    extern int TrailingStop 1;
    extern int TrailingGap 2;
    input string spread="Max spread";
    extern double MaxSpread 2;
    input string time "Hours filter";
    extern int HoursFrom 8;
    extern int HoursTo 18;





    // local variables
    double PipValue=1;    // this variable is here to support 5-digit brokers
    bool Terminated false;
    string LF "\n";  // use this in custom or utility blocks where you need line feeds
    int NDigits 4;   // used mostly for NormalizeDouble in Flex type blocks
    int ObjCount 0;  // count of all objects created on the chart, allows creation of objects with unique names
    int current 0;

    int Count8 0;


    int init()
    {
        
    NDigits Digits;
        
        if (
    falseObjectsDeleteAll();      // clear the chart
        
        
        
    Comment("");    // clear the chart
    }

    // Expert start
    int start()
    {
        if (
    Bars 10)
        {
            
    Comment("Not enough bars");
            return (
    0);
        }
        if (
    Terminated == true)
        {
            
    Comment("EA Terminated.");
            return (
    0);
        }
        
        
    OnEveryTick1();
        
    }

    void OnEveryTick1()
    {
        
    PipValue 1;
        if (
    NDigits == || NDigits == 5PipValue 10;
        
        
    TrailingStop();
        
    PrintInfoToChart8();
        
    SpreadFilter9();
        
    }

    void TrailingStop()
    {
        for (
    int i=OrdersTotal()-1>= 0i--)
        if (
    OrderSelect(iSELECT_BY_POSMODE_TRADES))
        {
            if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
            {
                
    double takeprofit OrderTakeProfit();
                
                if (
    OrderType() == OP_BUY && Ask OrderOpenPrice() > TrailingStop*PipValue*Point)
                {
                    if (
    OrderStopLoss() < Ask-(TrailingStop+TrailingGap)*PipValue*Point)
                    {
                        if (
    != 0takeprofit Ask+(TrailingStop)*PipValue*Point;
                        
    bool ret1 OrderModify(OrderTicket(), OrderOpenPrice(), Ask-TrailingStop*PipValue*PointtakeprofitOrderExpiration(), White);
                        if (
    ret1 == false)
                        Print(
    "OrderModify() error - "ErrorDescription(GetLastError()));
                    }
                }
                if (
    OrderType() == OP_SELL && OrderOpenPrice() - Bid TrailingStop*PipValue*Point)
                {
                    if (
    OrderStopLoss() > Bid+(TrailingStop+TrailingGap)*PipValue*Point)
                    {
                        if (
    != 0takeprofit Bid-(TrailingStop)*PipValue*Point;
                        
    bool ret2 OrderModify(OrderTicket(), OrderOpenPrice(), Bid+TrailingStop*PipValue*PointtakeprofitOrderExpiration(), White);
                        if (
    ret2 == false)
                        Print(
    "OrderModify() error - "ErrorDescription(GetLastError()));
                    }
                }
            }
        }
        else
        Print(
    "OrderSelect() error - "ErrorDescription(GetLastError()));
        
    }

    void PrintInfoToChart8()
    {
        
    string temp "Best scalper v.2\nExecuted : " Count8 "\n"
        
    "Spread: " DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD)/PipValue2)+ "\n"
        
    "------------------------------------------------\n"
        
    "ACCOUNT INFORMATION:\n"
        
    "\n"
        
    "Account Name:     " AccountName()+ "\n"
        
    "Account Leverage:     " DoubleToStr(AccountLeverage(), 0)+ "\n"
        
    "Account Balance:     " DoubleToStr(AccountBalance(), 2)+ "\n"
        
    "Account Equity:     " DoubleToStr(AccountEquity(), 2)+ "\n"
        
    "Free Margin:     " DoubleToStr(AccountFreeMargin(), 2)+ "\n"
        
    "Used Margin:     " DoubleToStr(AccountMargin(), 2)+ "\n"
        
    "------------------------------------------------\n";
        
    Comment(temp);
        
    Count8++;
        
    }

    void SpreadFilter9()
    {
        if ((
    Ask-Bid) / Point PipValue MaxSpread)
        {
            
    HoursFilter23();
            
        }
    }

    void HoursFilter23()
    {
        
    int datetime800 TimeLocal();
        
    int hour0 TimeHour(datetime800);
        
        if ((
    HoursFrom HoursTo && hour0 >= HoursFrom && hour0 HoursTo) ||
        (
    HoursFrom HoursTo && (hour0 HoursTo || hour0 >= HoursFrom)))
        {
            
    TechnicalAnalysis26();
            
    TechnicalAnalysis27();
            
        }
    }

    void TechnicalAnalysis26()
    {
        if ((
    High[0] > Bid) && ((High[0] - Bid) > 7*PipValue*Point ))
        {
            
    IfOrderDoesNotExist13();
            
        }
    }



    void IfOrderDoesNotExist13()
    {
        
    bool exists false;
        for (
    int i=OrdersTotal()-1>= 0i--)
        if (
    OrderSelect(iSELECT_BY_POSMODE_TRADES))
        {
            if (
    OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
            {
                
    exists true;
            }
        }
        else
        {
            Print(
    "OrderSelect() error - "ErrorDescription(GetLastError()));
        }
        
        if (
    exists == false)
        {
            
    SellOrderRiskFixed12();
            
        }
    }

    void SellOrderRiskFixed12()
    {
        
    double lotsize MarketInfo(Symbol(),MODE_LOTSIZE) / AccountLeverage();
        
    double pipsize 10;
        
    double maxlots AccountBalance() / 100 Risk lotsize pipsize;
        if (
    Stoploss == 0) Print("OrderSend() error - stoploss can not be zero");
        
    double lots maxlots Stoploss 10;
        
        
    // calculate lot size based on current risk
        
    double lotvalue 0.001;
        
    double minilot MarketInfo(Symbol(), MODE_MINLOT);
        
    int powerscount 0;
        while (
    minilot 1)
        {
            
    minilot minilot MathPow(10powerscount);
            
    powerscount++;
        }
        
    lotvalue NormalizeDouble(lotspowerscount 1);
        
        if (
    lotvalue MarketInfo(Symbol(), MODE_MINLOT))    // make sure lot is not smaller than allowed value
        
    {
            
    lotvalue MarketInfo(Symbol(), MODE_MINLOT);
        }
        if (
    lotvalue MarketInfo(Symbol(), MODE_MAXLOT))    // make sure lot is not greater than allowed value
        
    {
            
    lotvalue MarketInfo(Symbol(), MODE_MAXLOT);
        }
        
    double SL Bid Stoploss*PipValue*Point;
        if (
    Stoploss == 0SL 0;
        
    double TP Bid Takeprofit*PipValue*Point;
        if (
    Takeprofit == 0TP 0;
        
        
    int ticket = -1;
        if (
    true)
        
    ticket OrderSend(Symbol(), OP_SELLlotvalueBid300"My Expert"10Red);
        else
        
    ticket OrderSend(Symbol(), OP_SELLlotvalueBid3SLTP"My Expert"10Red);
        if (
    ticket > -1)
        {
            if (
    true)
            {
                
    bool sel OrderSelect(ticketSELECT_BY_TICKET);
                
    bool ret OrderModify(OrderTicket(), OrderOpenPrice(), SLTP0Red);
                if (
    ret == false)
                Print(
    "OrderModify() error - "ErrorDescription(GetLastError()));
            }
                
        }
        else
        {
            Print(
    "OrderSend() error - "ErrorDescription(GetLastError()));
        }
    }

    void TechnicalAnalysis27()

    {
        if ((
    Low[0] < Ask) && ((Low[0] - Ask) > 7*PipValue*Point ))
        {
           
    IfOrderDoesNotExist16();
            
        }
    }



    void IfOrderDoesNotExist16()
    {
        
    bool exists false;
        for (
    int i=OrdersTotal()-1>= 0i--)
        if (
    OrderSelect(iSELECT_BY_POSMODE_TRADES))
        {
            if (
    OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
            {
                
    exists true;
            }
        }
        else
        {
            Print(
    "OrderSelect() error - "ErrorDescription(GetLastError()));
        }
        
        if (
    exists == false)
        {
            
    BuyOrderRiskFixed15();
            
        }
    }

    void BuyOrderRiskFixed15()
    {
        
    double lotsize MarketInfo(Symbol(),MODE_LOTSIZE) / AccountLeverage();
        
    double pipsize 10;
        
    double maxlots AccountBalance() / 100 Risk lotsize pipsize;
        if (
    Stoploss == 0) Print("OrderSend() error - stoploss can not be zero");
        
    double lots maxlots Stoploss 10;
        
        
    // calculate lot size based on current risk
        
    double lotvalue 0.001;
        
    double minilot MarketInfo(Symbol(), MODE_MINLOT);
        
    int powerscount 0;
        while (
    minilot 1)
        {
            
    minilot minilot MathPow(10powerscount);
            
    powerscount++;
        }
        
    lotvalue NormalizeDouble(lotspowerscount 1);
        
        if (
    lotvalue MarketInfo(Symbol(), MODE_MINLOT))    // make sure lot is not smaller than allowed value
        
    {
            
    lotvalue MarketInfo(Symbol(), MODE_MINLOT);
        }
        if (
    lotvalue MarketInfo(Symbol(), MODE_MAXLOT))    // make sure lot is not greater than allowed value
        
    {
            
    lotvalue MarketInfo(Symbol(), MODE_MAXLOT);
        }
        
    double SL Ask Stoploss*PipValue*Point;
        if (
    Stoploss == 0SL 0;
        
    double TP Ask Takeprofit*PipValue*Point;
        if (
    Takeprofit == 0TP 0;
        
        
    int ticket = -1;
        if (
    true)
        
    ticket OrderSend(Symbol(), OP_BUYlotvalueAsk300"My Expert"10Blue);
        else
        
    ticket OrderSend(Symbol(), OP_BUYlotvalueAsk3SLTP"My Expert"10Blue);
        if (
    ticket > -1)
        {
            if (
    true)
            {
                
    bool sel OrderSelect(ticketSELECT_BY_TICKET);
                
    bool ret OrderModify(OrderTicket(), OrderOpenPrice(), SLTP0Blue);
                if (
    ret == false)
                Print(
    "OrderModify() error - "ErrorDescription(GetLastError()));
            }
                
        }
        else
        {
            Print(
    "OrderSend() error - "ErrorDescription(GetLastError()));
        }
    }



    int deinit()
    {
        if (
    falseObjectsDeleteAll();
        
        



    تمام حضرتك
    حضرتك كل اللى انا عاوزة
    اذا اتحرك السعر سبع نقط لاعلى فى خمس ثوانى يفتح شراء
    واذا تحرك السعر سبع نقط لاسفل فى خمس ثوانى يفتح بيع

    زى ما حضرتك شايف انا مش قادر اجيب الكود بالظبط
    فارتجلت واشتغلت على الشموع وطبعا طريقة الكود مش سليمة
    لانها غير جامعة
    اتمنى حضرتك تساعدنى ولك منى كل التقدير استاذى الكريم

  4. #4

    افتراضي

    جرب النسخة المرفقة
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 test.mq4‏ (19.4 كيلوبايت, المشاهدات 6)

  5. #5
    عضو جديد
    تاريخ التسجيل
    Jan 2018
    المشاركات
    9

    افتراضي

    الله يبارك فيك ويجعل ذلك فى ميزان حسناتك الف شكر

  6. #6
    عضو جديد
    تاريخ التسجيل
    Jan 2018
    المشاركات
    9

    افتراضي

    السلام عليكم
    اية رأى حضرتك اغير متغير الBid
    الى Ask فى حالة الشراء
    ولكم جزيل الشكر

  7. #7
    عضو جديد
    تاريخ التسجيل
    Jan 2018
    المشاركات
    9

    افتراضي

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

  8. #8
    عضو جديد
    تاريخ التسجيل
    Jan 2018
    المشاركات
    9

    افتراضي

    سبحان الله وبحمدة سبحان الله العظيم
    التعديل الأخير تم بواسطة Wal3a123 ; 11-10-2018 الساعة 08:24 PM

  9. #9
    عضو جديد
    تاريخ التسجيل
    Jan 2018
    المشاركات
    9

    افتراضي

    اعذرنى ممكن رأىء حضرتك فى التعديل
    فقط عدلت متغير ال Bid
    الى Ask فى حالة الشراء
    طبعا الكود سليم مليون فى المية فى حالة الشراء والبيع ومش انا اللى هقول حضرتك بجد استاذ
    لكن اعتقد نتائج الباك تيست غير سليمة لانة اكسيبرت متعلق بوقت مع حركة النقط فى نطاق ضيق
    مرفق التعديل
    كمان دخلت عدد الثوانى وعدد النقاط كمدخلات للمستخدم
    بارك الله فيك
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 test.mq4‏ (20.6 كيلوبايت, المشاهدات 5)

  10. #10

    افتراضي

    جرب النسخة المرفقة
    الملفات المرفقة الملفات المرفقة

صفحة 1 من 2 12 الأخيرةالأخيرة

العلامات المرجعية

العلامات المرجعية

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •