النتائج 1 إلى 3 من 3
  1. #1
    الصورة الرمزية forex_man_55
    forex_man_55 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2019
    الإقامة
    العراق
    المشاركات
    479

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

    السلام عليكم
    الكود التالي ينفذ كل ثانية ويكتب معلومات من السوق كل ثانية والمفروض يفتح صفقة كل 15 ثانية لكن لا اعرف ما الذي يحصل في الكود بحيث يفتح اكثر من صفقة مرة واحدة يعني المفروض يفتح صفقة في الثانية الاولى والثانية 15 والثانية 30 والثانية 45 من كل دقيقة وهو شغال بصورة جيدة لكن مرات ( وتحصل كثيرا) يفتح في الثنية 1 و2و3 او 15,16,17 وهكذا وهذا يسبب حمل على السيرفر وبالتالي تم غلق حساباتي الديمو في اثنين من الشركات بداعي ارهاق السيرفر هل ممكن المساعدة في هذا الكود مع الشكر الجزيل


    كود:
    //+------------------------------------------------------------------+
    //|                                                            4.mq4 |
    //|                                  Copyright 2024, MetaQuotes Ltd. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2024, MetaQuotes Ltd."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    #property strict
    double a[900];
    bool old_b=true;
    bool _buy=false;
    double old_v;
    double new_v;
    int ticket;
    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
    {
        //--- create timer
        EventSetTimer(1);
    
    
        //---
        return(INIT_SUCCEEDED);
    }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
        //--- destroy timer
        EventKillTimer();
    }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    {
        //---
        
    
    }
    //+------------------------------------------------------------------+
    //| Timer function                                                   |
    //+------------------------------------------------------------------+
    void OnTimer()
    {
        //---
            
        if ((Seconds()==0 || Seconds()==15 || Seconds()==30 || Seconds()==45)){_buy=true;}
        
        
        if (_buy==true)
        {
        
     ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-50*Point,Ask+65*Point,"My order",16384,0,clrGreen);
       _buy=false;
       }
                     
        int handle;
        handle = FileOpen("data.csv", FILE_CSV | FILE_READ | FILE_WRITE, ',');
        if (handle != INVALID_HANDLE)
        {
            // Create a string to hold the entire array separated by semicolons
            
            
    
            // Move the file pointer to the end of the file
            FileSeek(handle, 0, SEEK_END);
    
            // Write the entire CSV line
            FileWrite(handle, Ask,TimeCurrent(),ticket,MarketInfo(Symbol(),MODE_SPREAD));
    
            // Close the file
            FileClose(handle);
        }
        
        else
        {
            Print("Failed to open the file.");
        }
    
    }
    //+------------------------------------------------------------------+

  2. #2
    الصورة الرمزية وضاح عطار
    وضاح عطار غير متواجد حالياً عضو مميز ومشرف سابق
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    52
    المشاركات
    7,043

    افتراضي

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

    قد لا يتحرك زمن البروكر كل ثانية وذلك حسب عدد الأزواج الموجودة ضمن نافذة مراقبة السوق .

    وكذلك فإن زمن البروكر يتوقف أيضا تماما في العطل الرسمية أو إذا حدث عطل في سيرفر البروكر نفسه .

    وستبقى قيمة seconds نفسها لا تتغير كل ثانية .

    لذلك الأفضل حسب حالتك استبدال Seconds()

    بالوظيفة التالية :

    TimeSeconds(TimeLocal())

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

  3. #3
    الصورة الرمزية forex_man_55
    forex_man_55 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2019
    الإقامة
    العراق
    المشاركات
    479

    افتراضي

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

    قد لا يتحرك زمن البروكر كل ثانية وذلك حسب عدد الأزواج الموجودة ضمن نافذة مراقبة السوق .

    وكذلك فإن زمن البروكر يتوقف أيضا تماما في العطل الرسمية أو إذا حدث عطل في سيرفر البروكر نفسه .

    وستبقى قيمة seconds نفسها لا تتغير كل ثانية .

    لذلك الأفضل حسب حالتك استبدال Seconds()

    بالوظيفة التالية :

    TimeSeconds(TimeLocal())

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


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