النتائج 1 إلى 14 من 14
  1. #1
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي ابو محمد(أسامة) -- كيف انزل سطر اكسل csv ؟؟

    بسم الله الرحمن الرحيم
    ارجو المساعدة في حل المشكلة اسفل لاهنت
    يطبع التكات ملف اكسل باللملي سكند للزوج اللي طبقنا على تشارته,
    وكل مرة لازم استخدم for loop ويثقل كلما زاد عدد التكات
    هل يوجد حل بحيث مع كل تكة ينزل فقط سطر ويطبع بيانات التكة الجديدة؟ دون الحاجة لاعادة طباعة كل ماسبق مرة ثانية!
    كود:
    struct prices 
    { 
        string      time;
        string      bid;
        string      ask;
    };
    
    prices arr[];
    int    count=-1;
    
    void OnTick() 
    { 
        count++;
        ArrayResize(arr,count+1);
        arr[count].time=TimeToString(GetTickCount()/1000,TIME_MINUTES|TIME_SECONDS)+"."+formatMilliSecond(MathMod(GetTickCount(),1000));
        arr[count].bid=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 
        arr[count].ask=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_ASK),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 
        int filehandle=FileOpen("myTicks.csv",FILE_WRITE|FILE_CSV,";"); 
        Print(count+"-----"+GetTickCount()+"   "+filehandle);
        if(filehandle!=INVALID_HANDLE) 
        {
            for(int i=count-1;i>=0;i--)
            FileWrite(filehandle,i,arr[i].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[i].bid,arr[i].ask); 
            FileClose(filehandle);
        } 
    }
    string formatMilliSecond(int t)
    {
        string str=t;
        if(t<10) str="00"+t;
        else if(t<100) str="0"+t;
        return str;
    }

    اضغط على الصورة لعرض أكبر

الاســـم:	_9997.png
المشاهدات:	13
الحجـــم:	62.4 كيلوبايت
الرقم:	521703

    اضغط على الصورة لعرض أكبر

الاســـم:	_9998.png
المشاهدات:	8
الحجـــم:	72.3 كيلوبايت
الرقم:	521704

    ودمتم
    - ملحوظة: ممكن متابعة التغير وملف الاكسل مفتوح من خلال محرر الميتا مثل الصورة الاخيرة
    آخر تعديل بواسطة سلمان_العتيبي ، 20-03-2020 الساعة 06:03 PM

  2. #2
    الصورة الرمزية elassari
    elassari غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    المغرب
    العمر
    34
    المشاركات
    143

    افتراضي

    جرب هذا الكود
    كود PHP:
    [LEFT]void OnTick() 

        
    count++;
        
    ArrayResize(arr,count+1);
        
    arr[count].time=TimeToString(GetTickCount()/1000,TIME_MINUTES|TIME_SECONDS)+"."+formatMilliSecond(MathMod(GetTickCount(),1000));
        
    arr[count].bid=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 
        
    arr[count].ask=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_ASK),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 
        
    int filehandle=FileOpen("myTicks.csv",FILE_WRITE|FILE_CSV,";"); 
        Print(
    count+"-----"+GetTickCount()+"   "+filehandle);
        if(
    filehandle!=INVALID_HANDLE
        {
       
    FileSeek(filehandle,0,SEEK_END);
            
    FileWrite(filehandle,0,arr[0].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[0].bid,arr[0].ask); 
            
    FileClose(filehandle);
        } 
    }
    [/
    LEFT
    قمت باضافةFileSeek(filehandle,0,SEEK_END); مكان "for loop"

  3. #3
    الصورة الرمزية elassari
    elassari غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    المغرب
    العمر
    34
    المشاركات
    143

    افتراضي

    الكود اللذي سبق لا يعمل
    انا اسف على هذا الغلط
    هذا هو الكود الصحيح
    كود PHP:
    struct prices 

        
    string      time;
        
    string      bid;
        
    string      ask;
    };

    prices arr[];
    int    count=-1;
    void OnTick()
      {
    //---
         
    int fileHandle      ;
        
    count++;
        
    ArrayResize(arr,count+1);
        
    arr[count].time=TimeToString(GetTickCount()/1000,TIME_MINUTES|TIME_SECONDS)+"."+formatMilliSecond(MathMod(GetTickCount(),1000));
        
    arr[count].bid=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 
        
    arr[count].ask=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_ASK),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 

         
    string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
         
    string filename     "myTicks.csv";

         if(
    FileIsExist(filename,0))
           {
              
    fileHandle     =    FileOpen(filename FILE_CSV|FILE_WRITE|FILE_READ" , ");
              
    FileSeek(fileHandle,0,SEEK_END); 
              
    FileWrite(fileHandle,0,arr[0].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[0].bid,arr[0].ask); 
              
    FileClose(fileHandle); 
              Print(
    count+"-----"+GetTickCount()+"   "+fileHandle);

           }else
              {
                   
    fileHandle     =    FileOpen(filename FILE_CSV|FILE_WRITE|FILE_READ" , ");
                   
    FileWrite(fileHandle,0,arr[0].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[0].bid,arr[0].ask); 
                   
    FileClose(fileHandle); 
              }
              
      }
    //+------------------------------------------------------------------+
    string formatMilliSecond(int t)
    {
        
    string str=t;
        if(
    t<10str="00"+t;
        else if(
    t<100str="0"+t;
        return 
    str;


  4. #4
    الصورة الرمزية saleh.najm
    saleh.najm غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    البرازيل
    المشاركات
    174

    افتراضي

    في هذا الموضوع إحتمال تجد فيه ضالتك أخي سلمان

    https://forum.arabictrader.com/t170877.html

  5. #5
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة elassari مشاهدة المشاركة
    جرب هذا الكود
    كود PHP:
    [LEFT]void OnTick() 

        
    count++;
        
    ArrayResize(arr,count+1);
        
    arr[count].time=TimeToString(GetTickCount()/1000,TIME_MINUTES|TIME_SECONDS)+"."+formatMilliSecond(MathMod(GetTickCount(),1000));
        
    arr[count].bid=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 
        
    arr[count].ask=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_ASK),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); 
        
    int filehandle=FileOpen("myTicks.csv",FILE_WRITE|FILE_CSV,";"); 
        Print(
    count+"-----"+GetTickCount()+"   "+filehandle);
        if(
    filehandle!=INVALID_HANDLE
        {
       
    FileSeek(filehandle,0,SEEK_END);
            
    FileWrite(filehandle,0,arr[0].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[0].bid,arr[0].ask); 
            
    FileClose(filehandle);
        } 
    }
    [/
    LEFT
    قمت باضافةFileSeek(filehandle,0,SEEK_END); مكان "for loop"
    من الأعماق تسلم يا غالي
    سيتم التجربة مع افتتاح السوق(كود الرقم #3)
    كثر الله من أمثالك

    saleh.najm
    اعرف هذا الموضوع اخي, احد افضل الموضيع التي قرأتها
    واعتقد فيه رد لاسامة بناء على طلب مني لزيادة فعاليته اكثر
    آخر تعديل بواسطة سلمان_العتيبي ، 21-03-2020 الساعة 02:39 PM

  6. #6
    الصورة الرمزية saleh.najm
    saleh.najm غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    البرازيل
    المشاركات
    174

    افتراضي

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

  7. #7
    الصورة الرمزية elassari
    elassari غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    المغرب
    العمر
    34
    المشاركات
    143

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة سلمان_العتيبي مشاهدة المشاركة
    من الأعماق تسلم يا غالي
    سيتم التجربة مع افتتاح السوق(كود الرقم #3)
    كثر الله من أمثالك
    بارك الله فيك
    يمكنك التجربة على tester ستجد الملف على امتداد
    tester\files
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة Untitled.png‏  

  8. #8
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    صالح؟ منين جايبه؟؟ من الصين؟؟ بي كيرفل

    elassari : لاحظت انك وضعت 0 كاندكس لكل تكة جديدة--افترض اردت التكة رقم 17 مثلا؟
    قبل التجارب حسب ردك السر في دالة FileSeek ؟

    بالتأكيد ستتم التجربة الان تستر--هذه فائدة أخرى منك اخي.

  9. #9
    الصورة الرمزية elassari
    elassari غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    المغرب
    العمر
    34
    المشاركات
    143

    افتراضي

    اهم دالتين

    كود PHP:
              FileOpen(filename FILE_CSV|FILE_WRITE|FILE_READ';');
              
    //فتح و قراءة الملف
              
    FileSeek(fileHandle,0,SEEK_END);
              
    // انشاء سطر جديد 
    آخر تعديل بواسطة elassari ، 21-03-2020 الساعة 08:12 PM

  10. #10
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    SEEK_END
    SEEK_CUR
    SEEK_SET
    ؟؟
    انتظر افتتاح السوق لتجربة الثلاث,
    ولكن اذا عندك شرح لها--فإننا بحاجته

    مثلا لو شلت SEEK_END في الردود أعلاه ووضعت SEEK_SET --- ايش اللي يتغير على فرض انه ممكن-----واذا غير ممكن ليش؟
    من قراءة في المانوال اليوم دالة FileSeek تأخذ 3 ثوابت, SEEK_SET-----SEEK_CUR----SEEK_END
    آخر تعديل بواسطة سلمان_العتيبي ، 22-03-2020 الساعة 05:27 PM

  11. #11
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    ممتاز اخي-خفيف جدا وفوري
    فقط لديك غير الاندكس من 0 الةى count لكي لايعيد كل مرة طباعة قيم اول تكة--اندكس0

    FileWrite(fileHandle,count,arr[count].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[count].bid,arr[count].ask);

  12. #12
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة سلمان_العتيبي مشاهدة المشاركة
    ممتاز اخي-خفيف جدا وفوري
    فقط لديك غير الاندكس من 0 الىى count لكي لايعيد كل مرة طباعة قيم اول تكة--اندكس0
    السطر المصحح:
    كود:
              FileWrite(fileHandle,count,arr[count].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[count].bid,arr[count].ask);

  13. #13
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    طبقته على عملتين في نفس الوقت--يطبعهم في نفس الفايل مع حفظ ترتيب زمن التكة ورقمها لكل زوج: -الأهم مرتب زمنيا و خفيف جداً--ريشة!
    اضغط على الصورة لعرض أكبر

الاســـم:	_9998.png
المشاهدات:	2
الحجـــم:	55.3 كيلوبايت
الرقم:	521740

  14. #14
    الصورة الرمزية elassari
    elassari غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    المغرب
    العمر
    34
    المشاركات
    143

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة سلمان_العتيبي مشاهدة المشاركة
    SEEK_END
    SEEK_CUR
    SEEK_SET
    ؟؟
    SEEK_CUR
    SEEK_SET
    للاسف لم يسبق لي استعمالهم من قبل


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