موضوع مخصص للأسئلة البرمجية - الصفحة 653
صفحة 653 من 653 الأولىالأولى ... 153553603643647648649650651652653
النتائج 9,781 إلى 9,784 من 9784
  1. #9781
    تاريخ التسجيل
    Apr 2018
    الإقامة
    فرنسا
    المشاركات
    8

    افتراضي

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

    Order1 win
    Order2 loss
    Order3 loss
    Order 4 win
    Order 5 loss
    Order 6 win
    Order 7 loss
    Order 8 loss
    Order 9 win
    Order 10 loss
    Order 11 loss
    Order 12 loss
    Order 13 loss
    Order 14 win

    مثلا في هدا السناريو الكود يجب أن يحسب مجموع الخسارة لكل صفقتين خاسرتين بصفة متتالية :
    (Order2+Order3) + (order7+Order8)+(Order10+Order11)+(Order12+Order13 )

    هل هدا ممكن ؟
    شكرا مسبقا

  2. #9782
    تاريخ التسجيل
    Apr 2011
    الإقامة
    فلسطين
    المشاركات
    451

    افتراضي

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

    win_usd_all

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

  3. #9783
    تاريخ التسجيل
    Jan 2011
    المشاركات
    59

    افتراضي

    السلام عليكم
    استاذ اسامة حاولت جاهدا احول كود ناسخ الصفقات انو ينسخ من mt5 لكن دون جدوى ما بكتب اشي في الماستر وهذا هو الكود
    //+------------------------------------------------------------------+
    //| testmas.mq5 |
    //| Copyright 2020, MetaQuotes Software Corp. |
    //| https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2020, MetaQuotes Software Corp."
    #property link "https://www.mql5.com"
    #property version "1.00"
    //+------------------------------------------------------------------+
    //| Expert initialization function |
    //+------------------------------------------------------------------+
    #import "kernel32.dll"
    int CreateFileW(string Filename, uint AccessMode, int ShareMode, int PassAsZero, int CreationMode, int FlagsAndAttributes, int AlsoPassAsZero);
    int ReadFile(int FileHandle, uchar & Buffer[], int BufferLength, int & BytesRead[], int PassAsZero);
    int SetFilePointer(int FileHandle, int Distance, int PassAsZero, int FromPosition);
    int GetFileSize(int FileHandle, int PassAsZero);
    int CloseHandle(int FileHandle);
    #import

    #define GENERIC_READ 0x80000000
    #define WIN32_FILE_SHARE_READ 1
    #define WIN32_FILE_SHARE_WRITE 2
    #define OPEN_EXISTING 3
    #define SEEK_FILE_BEGIN 0
    #define SEEK_FILE_CURRENT 1
    #define INVALID_HANDLE_VALUE -1
    #define READ_BUFFER_SIZE 1024


    input int LoopTime = 500;
    input bool ReverseTrades = false;
    input bool Reverse_SL_TP_InReverseMode=true;
    input string info1=" Copy Orders Settings ";
    input bool CopyBuyOrders=true;
    input bool CopySellOrders=true;
    input bool CopyPendingOrders=true;

    input bool MagicNumberFilter=false;
    input int MagicNumber=0;
    input bool CommentFilter=false;
    input string Comments="";
    int handle;
    double OrderInfo[1][5];
    datetime StartTime;
    string name;

    int OnInit()
    {
    //---
    StartTime=TimeCurrent();
    name="ATCopierMaster.txt";
    handle=FileOpen(name,FILE_TXT|FILE_WRITE|FILE_SHAR E_READ|FILE_SHARE_WRITE);
    return (INIT_SUCCEEDED);
    //---
    }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    //---
    FileClose(handle);
    FileDelete("ATCopierMaster.txt");
    Comment("");
    }
    //+------------------------------------------------------------------+
    //| Expert tick function |
    //+------------------------------------------------------------------+
    void OnTick()
    {
    //---
    static int size;
    static int LastTotalOrders;
    while (IsStopped() == false)
    {

    if(OrdersTotal()==LastTotalOrders)continue;
    LastTotalOrders=OrdersTotal();

    for(int i=0;i<OrdersTotal();i++)
    {

    double price=PositionGetDouble(POSITION_PRICE_OPEN);
    double sl=PositionGetDouble(POSITION_SL);
    double tp=PositionGetDouble(POSITION_TP);
    int ticket=PositionGetInteger(POSITION_TICKET);
    int type=PositionGetInteger(POSITION_TYPE);
    string symbol=PositionGetString(POSITION_SYMBOL);
    double expir=0;
    double Lots=PositionGetDouble(POSITION_VOLUME);
    datetime OpenTime=PositionGetInteger(POSITION_TIME);
    int PosMagicNo=PositionGetInteger(POSITION_MAGIC);
    if(OpenTime<StartTime||(PosMagicNo!=MagicNumber&&M agicNumberFilter))continue;
    if((type==ORDER_TYPE_SELL&&!CopySellOrders)||(type ==ORDER_TYPE_BUY&&!CopyBuyOrders)||(type>ORDER_TYP E_SELL&&!CopyPendingOrders))continue;
    if(OrderRecorded(ticket)==false)
    {
    if(ArrayRange(OrderInfo,0)<=size)ArrayResize(Order Info,size+1);
    OrderInfo[size][0]=price;
    OrderInfo[size][1]=sl;
    OrderInfo[size][2]=tp;
    OrderInfo[size][3]=expir;
    OrderInfo[size][4]=ticket;
    size++;
    double Set_SL=sl,Set_TP=tp;
    if(ReverseTrades)
    {
    if(Reverse_SL_TP_InReverseMode){Set_SL=tp;Set_TP=s l;}
    else{Set_SL=sl;Set_TP=tp;}

    if(type==0){type=1;}
    else if(type==1){type=0;}
    }
    int write=FileWriteString(handle,ticket+"|"+StringSubs tr(symbol,0,6)+"|"+type+"|"+Lots+"|"+DoubleToStrin g(price,_Digits)+"|"+DoubleToString(Set_SL,_Digits )+"|"+DoubleToString(Set_TP,_Digits)+"|"+"\n");
    FileFlush(handle);
    }
    }

    DeleteOldData();

    }
    }
    //+------------------------------------------------------------------+

    bool OrderRecorded(int ticket)
    {
    for(int i=0;i<=ArrayRange(OrderInfo,0);i++){
    if(ticket==OrderInfo[i][4])return(true);
    }
    return(false);
    }
    int Array_Index(int ticket){
    for(int i=0;i<ArrayRange(OrderInfo,0);i++){
    if(OrderInfo[i][4]==ticket)return(i);
    }
    return(-1);
    }

    void DeleteOldData()
    {
    string Data_Info[];
    int NewSize;
    int handlee=OpenExistingFileForReading(TerminalInfoStr ing(TERMINAL_DATA_PATH)+"\MQL4\Files\ATCopierMaste r.txt",true,true);
    if(IsValidFileHandle(handlee))
    {
    while(!IsFileAtEnd(handlee))
    {
    string line=ReadLineFromFile(handlee,"\n");
    NewSize++;
    ArrayResize(Data_Info,NewSize);
    Data_Info[NewSize-1]=line;
    }
    }
    CloseFile(handlee);
    FileClose(handle);
    handle=FileOpen(name,FILE_TXT|FILE_WRITE|FILE_SHAR E_READ|FILE_SHARE_WRITE);
    // delete order info if order is not exist
    string ticket;
    for(int i=0;i<NewSize;i++)
    {
    for(int j=0;j<StringLen(Data_Info[i]);j++)
    {
    if(StringSubstr(Data_Info[i],j,1)=="|")
    {
    ticket=StringSubstr(Data_Info[i],0,j);
    break;
    }
    }
    if(!IsOrderExist(StringToInteger(ticket)))continue ;
    int write=FileWriteString(handle,Data_Info[i]+"\n");
    FileFlush(handle);
    }
    }

    bool IsOrderExist(int ticket)
    {
    int total= PositionsTotal();
    for(int i=0;i<total;i++)
    {
    if(PositionGetSymbol(i)==_Symbol)
    {
    if(PositionGetInteger(POSITION_TYPE)==POSITION_TYP E_BUY)
    {
    if(PositionGetInteger(POSITION_TICKET)==ticket)
    {
    return(true); //is exist
    }
    }

    }
    }
    return(false);
    /*else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYP E_SELL)
    {
    Sell_opened=true; // It is a Sell
    }*/
    }

    int OpenExistingFileForReading(string FileName, bool ShareForReading = true, bool ShareForWriting = false)
    {
    int ShareMode = 0;
    if (ShareForReading) ShareMode += WIN32_FILE_SHARE_READ;
    if (ShareForWriting) ShareMode += WIN32_FILE_SHARE_WRITE;
    return (CreateFileW(FileName, GENERIC_READ, ShareMode, 0, OPEN_EXISTING, 0, 0));
    }


    string ReadLineFromFile(int FileHandle, string Terminator = "\r\n")
    {
    // Holds the line which is eventually returned to the caller
    string Line = "";

    // Keep track of the file pointer before we start doing any reading
    int InitialFilePointer = SetFilePointer(FileHandle, 0, 0, SEEK_FILE_CURRENT);

    // Keep reading from the file until we get the end of the line, or the end of the file
    bool bContinueRead = true;
    while (bContinueRead)
    {
    // Receives the number of bytes read from the file. Note that MQL can only pass
    // arrays as by-reference parameters to DLLs
    int BytesRead[1] = {0};

    // Allocate a buffer
    uchar ReadBuffer[];
    ArrayResize(ReadBuffer, READ_BUFFER_SIZE + 1);

    // Do a read of up to READ_BUFFER_SIZE bytes
    ReadFile(FileHandle, ReadBuffer, READ_BUFFER_SIZE, BytesRead, 0);

    // Check whether any data has been read...
    if (BytesRead[0] != 0)
    {
    // Add the new data to the line we've built so far

    Line = StringConcatenate(Line,0, CharArrayToString(ReadBuffer, 0, BytesRead[0]));

    // Does the line now contain the specified terminator?
    int pFindTerminator = StringFind(Line, Terminator);
    if (pFindTerminator != -1)
    {
    // The line does contain the specified terminator. Remove it from the data we're
    // going to pass back to the caller
    Line = StringSubstr(Line, 0, pFindTerminator);

    // We've almost certainly read too much data - i.e. the latest 200 byte block
    // intrudes into the next line. Need to adjust the file pointer to the start
    // of the next line. This must be the file pointer before we started reading, plus
    // the length of the line we've read, plus the length of the terminator
    SetFilePointer(FileHandle, InitialFilePointer + StringLen(Line) + StringLen(Terminator), 0, SEEK_FILE_BEGIN);

    // Stop reading
    bContinueRead = false;
    } else {
    // The line read so far does not yet contain the specified terminator
    bContinueRead = true;
    }

    } else {
    // Either at the end of the file, or the file handle is not valid for reading
    bContinueRead = false;
    }
    }

    return (Line);
    }

    bool IsFileAtEnd(int FileHandle)
    {
    int CurrentFilePointer = SetFilePointer(FileHandle, 0, 0, SEEK_FILE_CURRENT);
    return (CurrentFilePointer >= GetFileSize(FileHandle, 0));
    }

    bool IsValidFileHandle(int FileHandle)
    {
    return (FileHandle != INVALID_HANDLE_VALUE);
    }

    void CloseFile(int FileHandle)
    {
    CloseHandle(FileHandle);
    }

  4. #9784
    تاريخ التسجيل
    Jan 2011
    المشاركات
    59

    افتراضي

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

صفحة 653 من 653 الأولىالأولى ... 153553603643647648649650651652653

المواضيع المتشابهه

  1. موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
    By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 10
    آخر مشاركة: 03-08-2012, 06:54 PM
  2. عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
    By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملات
    مشاركات: 280
    آخر مشاركة: 27-08-2009, 10:30 PM

الاوسمة لهذا الموضوع