صفحة 653 من 686 الأولىالأولى ... 153553603643647648649650651652653654655656657658659663 ... الأخيرةالأخيرة
النتائج 9,781 إلى 9,795 من 10278
  1. #9781
    الصورة الرمزية chAmine
    chAmine غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    فرنسا
    المشاركات
    14

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة 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
    الصورة الرمزية _fady_
    _fady_ غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2011
    الإقامة
    فلسطين
    المشاركات
    598

    افتراضي

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

    win_usd_all

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

  3. #9783
    الصورة الرمزية ahmadwalwil
    ahmadwalwil غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2011
    المشاركات
    114

    افتراضي

    السلام عليكم
    استاذ اسامة حاولت جاهدا احول كود ناسخ الصفقات انو ينسخ من 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
    الصورة الرمزية ahmadwalwil
    ahmadwalwil غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2011
    المشاركات
    114

    افتراضي

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

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

    افتراضي

    اي لغة اقوى ال ASP ولا PHP

  6. #9786
    الصورة الرمزية _fady_
    _fady_ غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2011
    الإقامة
    فلسطين
    المشاركات
    598

    افتراضي

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

  7. #9787
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة hayaahmad مشاهدة المشاركة
    اي لغة اقوى ال ASP ولا PHP
    كل لغة برمجة ولها وظائفها ونقاط قوتها حسب الهدف الذي تريده منها
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  8. #9788
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

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

  9. #9789
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

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

    win_usd_all

    هل ممكن تضيفى هذا الخيار فى الاكسبرت
    اغلاق جميع الصفقات على ربح بالدولار
    وشكرا
    هذه دالة لحساب مجموع الربح بالدولار
    كود PHP:
    double TotalProfit()
      {
       
    double profit=0;
       for(
    int i=OrdersTotal()-1i>=0i--)
         {
          
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderSymbol()==Symbol()&&OrderType()<=OP_SELL && OrderMagicNumber()==MagicNumber)
            {
             
    profit+=OrderProfit();
            }
         }
       return(
    profit);
      } 
    وهذه دالة إغلاق جميع الصفقات
    كود PHP:
    void CloseOrders()
      {
       for(
    int i=OrdersTotal()-1i>=0i--)
         {
          
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber )
            {
             if(
    OrderType()==OP_BUY)
               {
                
    bool close=OrderClose(OrderTicket(),OrderLots(),Bid,3*P);
               }
             else
                if(
    OrderType()==OP_SELL)
                  {
                   
    close=OrderClose(OrderTicket(),OrderLots(),Ask,3*P);
                  }
                else
                  {
                   
    bool del=OrderDelete(OrderTicket());
                  }
            }
         }
      } 
    ثم ستضع شرط الإغلاق سيكون
    كود PHP:
     if(TotalProfit()>=ProfitUSD && ProfitUSD!=0)
               {
                
    CloseOrders();
               } 
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  10. #9790
    الصورة الرمزية chAmine
    chAmine غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    فرنسا
    المشاركات
    14

    افتراضي

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

    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 )

    هل هدا ممكن ؟
    شكرا مسبقا
    ممكن جواب من فضلكم ؟

  11. #9791
    الصورة الرمزية rain_man
    rain_man غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2011
    الإقامة
    مصر
    المشاركات
    199

    افتراضي

    لو سمحت مستر دولار هذا الكود من تصميمك وهو تريلينج ستوب مخفي وتريلينج بالانس مخفي ولكن لايوجد به سوي هذه الاعدادات
    كود PHP:
    input bool Use_Hidden_Trailing_Stop=true;
    input int HiddenTrailingStopPips=20;

    input bool Use_Hidden_Trailing_Percent=true;
    input double TrailingPercent=1
    وكنت اريد اضافة هذه خيارات داخل الدالة وايضا يتم التحكم فيها من الاعدادات
    HiddenTrailingStep
    TrailingPercentStep
    كود PHP:
    void HiddenTrailingStop()//حساب التريلينج استوب المخفي
      
    {
       for(
    int i=OrdersTotal()-1;i>=0;i--)
         {
          
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderSymbol()==Symbol() && OrderType()<=OP_SELL && HiddenTrailingStopPips>0)
            {
             if(
    OrderType()==OP_BUY)
               {
                if(
    Bid>=OrderOpenPrice()+HiddenTrailingStopPips*point && (GlobalVariableGet("TS"+OrderTicket())<Bid-HiddenTrailingStopPips*point || GlobalVariableGet("TS"+OrderTicket())==0))
                  {
                   
    GlobalVariableSet("TS"+OrderTicket(),Bid-HiddenTrailingStopPips*point);
                  }
               }
             else
               {
                if(
    Ask<=OrderOpenPrice()-HiddenTrailingStopPips*point && (GlobalVariableGet("TS"+OrderTicket())>Ask+HiddenTrailingStopPips*point || GlobalVariableGet("TS"+OrderTicket())==0))
                  {
                   
    GlobalVariableSet("TS"+OrderTicket(),Ask+HiddenTrailingStopPips*point);
                  }
               }

            }
         }
      }
      
    //------------------------------------------------------------------------------
    void CloseHiddenTrailingStop()//اغلاق التريلينج ستوب المخقس
    {
      
    HiddenTrailingStop();//استدعاء دالة التريلينج استوب المخفي
      
      
    for(int i=OrdersTotal()-1;i>=0;i--)
      {
       
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       if(
    OrderSymbol()==Symbol())
       {
        if(
    OrderType()==OP_BUY&&GlobalVariableGet("TS"+OrderTicket())!=0)
        {
         if(
    Bid<=GlobalVariableGet("TS"+OrderTicket()))
         {
          
    bool closeB=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*P);
          
    GlobalVariableDel("TS"+OrderTicket());
         }
        }
        if(
    OrderType()==OP_SELL&&GlobalVariableGet("TS"+OrderTicket())!=0)
        {
         if(
    Ask>=GlobalVariableGet("TS"+OrderTicket()))
         {
          
    bool closeS=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*P);
          
    GlobalVariableDel("TS"+OrderTicket());
         }
        }
       }
      }
    }  
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    void HiddenTrailingBalancePercent()//تريلينج استوب مخفى بناء علي نسبة مئوية للربح
      
    {
       
    double ProfitPercent=AccountProfit()/AccountBalance()*100;

       if(
    ProfitPercent>=TrailingPercent && (GlobalVariableGet("TS Percent")<ProfitPercent-TrailingPercent || GlobalVariableGet("TS Percent")==0))
         {
          
    GlobalVariableSet("TS Percent",ProfitPercent-TrailingPercent);
         }

       if(
    ProfitPercent<=GlobalVariableGet("TS Percent") && GlobalVariableGet("TS Percent")!=0)
         {
          for(
    int i=OrdersTotal()-1;i>=0;i--)
            {
             
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
             if(
    OrderSymbol()==Symbol())
               {
                if(
    OrderType()==OP_BUY)
                  {
                   
    bool closeB=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*P);
                  }
                if(
    OrderType()==OP_SELL)
                  {
                   
    bool closeS=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*P);
                  }
               }
            }
          
    GlobalVariableDel("TS Percent");
         }
      }
    //+------------------------------------------------------------------+ 
    سؤال اخر هل هذا السطر صحيح
    int i=OrdersTotal()-1;
    ام يجب ازالة الـ -1
    وما هو الفرق لاني اراها مختلفة في بعض الاكسبرتات
    آخر تعديل بواسطة rain_man ، 28-01-2020 الساعة 10:38 PM

  12. #9792
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة chAmine مشاهدة المشاركة
    ممكن جواب من فضلكم ؟
    تفضل هذا مثال
    كود PHP:
    double TotalLoss()
    {
     
    double prevOrderProfit;
     
    double totalLoss;
     for(
    int i=0;i<OrdersHistoryTotal();i++)
     {
      
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(
    OrderSymbol()==Symbol())
      {
       if(
    OrderProfit()<0&&prevOrderProfit<0)
       {
        
    totalLoss+=(OrderProfit()+prevOrderProfit);
        
    prevOrderProfit=0;
       }
       else 
          
    prevOrderProfit=OrderProfit();
      }
     }

    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  13. #9793
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة rain_man مشاهدة المشاركة
    لو سمحت مستر دولار هذا الكود من تصميمك وهو تريلينج ستوب مخفي وتريلينج بالانس مخفي ولكن لايوجد به سوي هذه الاعدادات
    كود PHP:
    input bool Use_Hidden_Trailing_Stop=true;
    input int HiddenTrailingStopPips=20;
     
    input bool Use_Hidden_Trailing_Percent=true;
    input double TrailingPercent=1
    وكنت اريد اضافة هذه خيارات داخل الدالة وايضا يتم التحكم فيها من الاعدادات
    HiddenTrailingStep
    TrailingPercentStep
    كود PHP:
    void HiddenTrailingStop()//حساب التريلينج استوب المخفي
      
    {
       for(
    int i=OrdersTotal()-1;i>=0;i--)
         {
          
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderSymbol()==Symbol() && OrderType()<=OP_SELL && HiddenTrailingStopPips>0)
            {
             if(
    OrderType()==OP_BUY)
               {
                if(
    Bid>=OrderOpenPrice()+HiddenTrailingStopPips*point && (GlobalVariableGet("TS"+OrderTicket())<Bid-HiddenTrailingStopPips*point || GlobalVariableGet("TS"+OrderTicket())==0))
                  {
                   
    GlobalVariableSet("TS"+OrderTicket(),Bid-HiddenTrailingStopPips*point);
                  }
               }
             else
               {
                if(
    Ask<=OrderOpenPrice()-HiddenTrailingStopPips*point && (GlobalVariableGet("TS"+OrderTicket())>Ask+HiddenTrailingStopPips*point || GlobalVariableGet("TS"+OrderTicket())==0))
                  {
                   
    GlobalVariableSet("TS"+OrderTicket(),Ask+HiddenTrailingStopPips*point);
                  }
               }
     
            }
         }
      }
      
    //------------------------------------------------------------------------------
    void CloseHiddenTrailingStop()//اغلاق التريلينج ستوب المخقس
    {
      
    HiddenTrailingStop();//استدعاء دالة التريلينج استوب المخفي
      
      
    for(int i=OrdersTotal()-1;i>=0;i--)
      {
       
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
       if(
    OrderSymbol()==Symbol())
       {
        if(
    OrderType()==OP_BUY&&GlobalVariableGet("TS"+OrderTicket())!=0)
        {
         if(
    Bid<=GlobalVariableGet("TS"+OrderTicket()))
         {
          
    bool closeB=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*P);
          
    GlobalVariableDel("TS"+OrderTicket());
         }
        }
        if(
    OrderType()==OP_SELL&&GlobalVariableGet("TS"+OrderTicket())!=0)
        {
         if(
    Ask>=GlobalVariableGet("TS"+OrderTicket()))
         {
          
    bool closeS=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*P);
          
    GlobalVariableDel("TS"+OrderTicket());
         }
        }
       }
      }
    }  
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    void HiddenTrailingBalancePercent()//تريلينج استوب مخفى بناء علي نسبة مئوية للربح
      
    {
       
    double ProfitPercent=AccountProfit()/AccountBalance()*100;
     
       if(
    ProfitPercent>=TrailingPercent && (GlobalVariableGet("TS Percent")<ProfitPercent-TrailingPercent || GlobalVariableGet("TS Percent")==0))
         {
          
    GlobalVariableSet("TS Percent",ProfitPercent-TrailingPercent);
         }
     
       if(
    ProfitPercent<=GlobalVariableGet("TS Percent") && GlobalVariableGet("TS Percent")!=0)
         {
          for(
    int i=OrdersTotal()-1;i>=0;i--)
            {
             
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
             if(
    OrderSymbol()==Symbol())
               {
                if(
    OrderType()==OP_BUY)
                  {
                   
    bool closeB=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*P);
                  }
                if(
    OrderType()==OP_SELL)
                  {
                   
    bool closeS=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*P);
                  }
               }
            }
          
    GlobalVariableDel("TS Percent");
         }
      }
    //+------------------------------------------------------------------+ 
    سؤال اخر هل هذا السطر صحيح
    int i=OrdersTotal()-1;
    ام يجب ازالة الـ -1
    وما هو الفرق لاني اراها مختلفة في بعض الاكسبرتات

    عدد الصفقات يبدأ من 0 حتى مجموع الصفقات -1
    فمثلا لو كان عدد الصفقات المفتوحه 5 صفقات فرقم الإندكس لها سيكون 0, 1, 2, 3, 4 لذلك نستخدم مجموع الصفقات -1
    هذه الدالة نفس فكرة الtrailing step يمكنك مراجعتها
    كود PHP:
    void MoveTrailingStop()
      {
       for(
    int cnt=0;cnt<OrdersTotal();cnt++)
         {
          
    bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
            {
             if(
    OrderType()==OP_BUY)
               {
                if(
    TrailingStop>&& NormalizeDouble(Ask-TrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))
                  {
                   if((
    NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits)) || (OrderStopLoss()==0))
                     {
                      
    bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
                     }
                  }
               }
             else
               {
                if(
    TrailingStop>&& NormalizeDouble(Bid+TrailingStep*point,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))
                  {
                   if((
    NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits))) || (OrderStopLoss()==0))
                     {
                      
    modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
                     }
                  }
               }
            }
         }
      } 
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  14. #9794
    الصورة الرمزية rain_man
    rain_man غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2011
    الإقامة
    مصر
    المشاركات
    199

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    عدد الصفقات يبدأ من 0 حتى مجموع الصفقات -1
    فمثلا لو كان عدد الصفقات المفتوحه 5 صفقات فرقم الإندكس لها سيكون 0, 1, 2, 3, 4 لذلك نستخدم مجموع الصفقات -1
    هذه الدالة نفس فكرة الtrailing step يمكنك مراجعتها
    كود PHP:
    void MoveTrailingStop()
      {
       for(
    int cnt=0;cnt<OrdersTotal();cnt++)
         {
          
    bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
            {
             if(
    OrderType()==OP_BUY)
               {
                if(
    TrailingStop>&& NormalizeDouble(Ask-TrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))
                  {
                   if((
    NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits)) || (OrderStopLoss()==0))
                     {
                      
    bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
                     }
                  }
               }
             else
               {
                if(
    TrailingStop>&& NormalizeDouble(Bid+TrailingStep*point,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))
                  {
                   if((
    NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits))) || (OrderStopLoss()==0))
                     {
                      
    modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
                     }
                  }
               }
            }
         }
      } 
    هذا هو الكود بعد التعديل ياريت تراجعه لو فيه اخطاء
    كود PHP:
    void HiddenTrailingStop()//حساب التريلينج استوب المخفي
    {
       for(
    int i=OrdersTotal()-1;i>=0;i--)
       {
          
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderSymbol()==Symbol() && OrderType()<=OP_SELL && HiddenTrailingStopPips>0)
          {
             if(
    OrderType()==OP_BUY)
             {
                if(
    HiddenTrailingStopPips>0&&NormalizeDouble(Bid-HiddenTrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+HiddenTrailingStopPips*point,Digits) && (GlobalVariableGet("TS"+OrderTicket())<Bid-HiddenTrailingStopPips*point || GlobalVariableGet("TS"+OrderTicket())==0))
                {
                   if((
    NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-HiddenTrailingStopPips*point,Digits))||(OrderStopLoss()==0))
                   {
                      
    GlobalVariableSet("TS"+OrderTicket(),Bid-HiddenTrailingStopPips*point);
                   }
                }
             }
             else
             {
                if(
    HiddenTrailingStopPips>0&&NormalizeDouble(Ask+HiddenTrailingStep*point,Digits)< NormalizeDouble(OrderOpenPrice()-HiddenTrailingStopPips*point,Digits) && (GlobalVariableGet("TS"+OrderTicket())>Ask+HiddenTrailingStopPips*point || GlobalVariableGet("TS"+OrderTicket())==0))
                {
                   if((
    NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+HiddenTrailingStopPips*point,Digits)))||(OrderStopLoss()==0))
                   {
                      
    GlobalVariableSet("TS"+OrderTicket(),Ask+HiddenTrailingStopPips*point);
                   }
                }
             }
          }
       }

    آخر تعديل بواسطة rain_man ، 29-01-2020 الساعة 09:09 PM

  15. #9795
    الصورة الرمزية chAmine
    chAmine غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    فرنسا
    المشاركات
    14

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    تفضل هذا مثال
    كود PHP:
    double TotalLoss()
    {
     
    double prevOrderProfit;
     
    double totalLoss;
     for(
    int i=0;i<OrdersHistoryTotal();i++)
     {
      
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(
    OrderSymbol()==Symbol())
      {
       if(
    OrderProfit()<0&&prevOrderProfit<0)
       {
        
    totalLoss+=(OrderProfit()+prevOrderProfit);
        
    prevOrderProfit=0;
       }
       else 
          
    prevOrderProfit=OrderProfit();
      }
     }


    السلام عليكم
    بارك الله فيك أستاذ أسامة
    لم أستوعب دور bool select قبل Orderselect
    يعني من البداية :
    1-الدالة تعمل كلما زادت صفقة في الهستري
    2- تختار أخر صفقة أغلقت
    3-تراقب الزوج
    4-تدحدد الشرط إذا كانت أخر صفقة خاسرة وقيمة المتغير prevOrderProfit خسرة أيضا
    5-إذا تحقق الشرط 4 يتم حساب مجموع القيمة لأخر صفقة + قيمة المتغير prevOrderProfit
    6-إذا لم يتحقق الشرط 5 يأخذ المتغير prevOrderProfit قيمة أخر صفقة أغلقت

    هذا هو فهمي للدالة لاكن لم أفهم دور bool ممكن تشرح لي من فصلك ؟

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

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

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


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