موضوع مخصص للأسئلة البرمجية
صفحة 1 من 618 12345671151101501 ... الأخيرةالأخيرة
النتائج 1 إلى 15 من 9268
  1. #1
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سيول - كوريا الجنوبية
    المشاركات
    631

    افتراضي موضوع مخصص للأسئلة البرمجية

    بسم الله الرحمن الرحيم

    الإدارة الكريمة... أعضاء المتداول الكرام: السلام عليكم ورحمة الله وبركاته

    بعد إذن إدارتنا الموقّرة ، وبعد إذن أستاذنا الحبيب وضاح عطار

    ما رأيكم أن يُخصص هذا الموضوع للأسئلة البرمجية التي تواجه المبرمج أحيانًا؟

    فكثيرًا ما تواجهني بعض الأسئلة أثناء قراءتي لبعض الأكواد البرمجية، أو أثناء بحثي عن معلومة معيّنة في الـ MQL4 Documentation ، أو أثناء محاولتي لأداء فكرة معيّنة في مؤشر أو اكسبرت ... إلخ

    وبدلاً من التراسل مع أساتذتنا الكبار على الخاص (مثل أستاذي الدكتور حازم FX5، وأستاذنا وضاح، وأستاذنا وليد)، رأيت أن الفائدة ستكون أكبر إن خصّصنا لذلك موضوعًا يجمع التساؤلات والاستفسارات

    وأكون شاكرًا لو ثُبّت الموضوع

    وجزاكم الله خيرًا

    ==========================
    وضاح عطار ينصحك أيضا بقراءة هذه المواضيع :


    - http://www.arabictrader.com/vb/t37561.html

    - http://www.arabictrader.com/vb/t40966.html

    - http://www.arabictrader.com/vb/t44571.html

    ==========================
    آخر تعديل بواسطة وضاح عطار ، 17-03-2009 الساعة 10:07 AM

  2. #2
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    46
    المشاركات
    6,519

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    أهلا بك أخي العزيز

    الفكرة جميلة ولكنها مرهقة إذا لم يتكاتف الجميع للرد على السؤال الذي يعرفون جوابه على الأقل .

    حتى الشخص الذي يسأل بشكل احترافي فهو مؤكد يستطيع الإجابة عن سؤال آخر .

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

    سأحاول من جهتي قدر الإمكان متابعة الموضوع والإجابة عن كل الأسئلة وخصوصا الصعبة .

    ولكن أحتاج أيضا من يساعدني وخصوصا للأسئلة السهلة والمتوسطة .

    أيضا يجب ان تكون الأسئلة محددة جدا وغير عامة مثل كيف أصنع مؤشر مثلا .

    وأن لا تكون طلبات لصنع مؤشرات أو اكسبيرتات لاستراتيجيات كبيرة .


    بالتوفيق إن شاء الله .
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  3. #3
    تاريخ التسجيل
    Oct 2007
    الإقامة
    canada-كندا
    المشاركات
    891

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    فكرة ممتازة أخي الكريم و انا أؤيدها بشدة و ان شاء نجيب على ما استطعنا و نسأل عما لا نعلم

  4. #4
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سيول - كوريا الجنوبية
    المشاركات
    631

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    نعم يا أخي الكريم، شروط عادلة جدًا ومنظّمة للغاية

    وإن شاء الله نتعاون جميعًا في الإجابة عن الأسئلة التي نعرفها

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

    الفكرة جميلة ولكنها مرهقة إذا لم يتكاتف الجميع للرد على السؤال الذي يعرفون جوابه على الأقل .

    حتى الشخص الذي يسأل بشكل احترافي فهو مؤكد يستطيع الإجابة عن سؤال آخر .

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

    سأحاول من جهتي قدر الإمكان متابعة الموضوع والإجابة عن كل الأسئلة وخصوصا الصعبة .

    ولكن أحتاج أيضا من يساعدني وخصوصا للأسئلة السهلة والمتوسطة .

    أيضا يجب ان تكون الأسئلة محددة جدا وغير عامة مثل كيف أصنع مؤشر مثلا .

    وأن لا تكون طلبات لصنع مؤشرات أو اكسبيرتات لاستراتيجيات كبيرة .


    بالتوفيق إن شاء الله .

  5. #5
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    46
    المشاركات
    6,519

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    شكرا لكم جميعا

    ولإغناء الموضوع من الآن سأورد فيما يلي أسئلة وردتني من قبل والإجابات التي كتبتها ردا على هذه الأسئلة .



    س :

    في دورة Codr's Guru وجدت في درس My First Expert Advisor انه استخدم Static ثم حدد نوع الداتا بالـ Int data type .

    ووضع هذا الأمر خارج الوظيفة start .
    يا تُرى ما هذا الأمر وما هي استخداماته غير المثال المذكور بالكتاب ؟


    ج :

    بالنسبة للمتحولات في معظم اللغات الحديثة ومنها لغة MQL4 فإنها تنقسم إلى ثلاثة أقسام .

    القسم الأول: متحولات محلية Local :

    وهي المتحولات التي تم تعريفها داخل الوظيفة Function نفسها ولهذه المتحولات المحلية الميزات التالية :

    == يمكن فقط التعامل مع هذه المتحولات المحلية ( قراءة قيمة وكتابة قيمة ) من داخل الوظيفة نفسها .

    == لا يمكن التعامل مع هذه المتحولات المحلية من خارج الوظيفة التي تم تعريفهم بها .

    == تفقد هذه المتحولات المحلية القيم المخزنة بها بمجرد الخروج من الوظيفة التي تم تعريفهم بها .

    == إذا تم تنفيذ الوظيفة مرة أخرى فإن هذه المتحولات المحلية يتم تعريفها من جديد مرة خرى وتأخذ القيم الافتراضية لها بغض النظر عن قيمتها الأخيرة التي وصلت إليها .

    الخلاصة :

    المتحولات المحلية لا يمكن التعامل معها قراءة أو كتابة إلا من داخل الوظيفة التي تم تعريفهم داخلها .


    القسم الثاني: متحولات عامة Global :

    وهي المتحولات التي تم تعريفها داخل البرنامج نفسه وليس ضمن أي وظيفة أخرى ولهذه المتحولات العامة الميزات التالية :

    == يمكن التعامل مع هذه المتحولات العامة ( قراءة قيمة وكتابة قيمة ) من أي موضع أو وظيفة في البرنامج .

    == لا تفقد المتحولات العامة قيمتها أبدا إلا إذا تم الخروج من البرنامج نفسه .


    الخلاصة :

    المتحولات العامة يمكن التعامل معها قراءة أو كتابة من أي موقع من برنامجك .


    القسم الثالث: متحولات ساكنة Static :
    وهي مشابهة تماما للمتحولات المحلية ولكن لها ميزة اضافية وفرق أساسي بينها وبين المتحولات المحلية وهذه الميزة هي :

    == لا تفقد المتحولات الساكنة قيمتها عند الخروج من الوظيفة التي تم تعريفهم بها .

    == عند تنفيذ الوظيفة مرة أخرى تأخذ المتحولات الساكنة آخر قيمة وصلت إليها من التنفيذ السابق .

    == لا تفقد المتحولات الساكنة قيمتها بمجرد الخروج من الوظيفة بل تبقى محتفظة بقيمتها دائما .

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

    الخلاصة :

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


    مثال يوضح استخدام وتعريف المتحولات بأنواعها الثلاثة :

    كود PHP:
     
    // تعريف متحول عام
    int GlobalFlag=10;

    int start()
      {
      
    // تعريف متحول ساكن أو ستاتيكي
       
    static int tp=70;

      
    // تعريف متحول محلي
       
    int sl=40;
       ....
       return(
    0);
     } 
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  6. #6
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    46
    المشاركات
    6,519

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    س :

    كيف استخدم الأمر datetime وكيف استفيد منه ؟


    ج :

    بداية فإن datetime لا تعتبر أمرا أي لا يطلق عليها صفة أمر بل هي في الحقيقة تسمى نوع بيانات Data Type

    أي أنها تصف نوع البيانات التي ستخزن في المتحول الفلاني .

    لدينا أنواع بيانات متعددة .. والمقصود بالبيانات هنا هي المعلومات التي تخزن داخل المتحولات .

    فمثلا لدينا بيانات رقمية وبيانات نصية .. والبيانات الرقمية تنقسم إلى بيانات رقمية صحيحة int أو بيانات رقمية بفاصلة double .


    كود PHP:
    // أمثلة على قيم رقمية صحيحة
    int a 10;
    int b 34322;
    int c = -9871;

    // أمثلة على قيم رقمية بفاصلة عشرية
    double a 12.111;
    double b = -956.1007;
    double c 0.0001;
    double d 16



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

    أي أنه لا يتعامل معها كأرقام يمكن إجراء عمليات حسابية عليها مثلا .

    كود PHP:
    // أمثلة على قيم نصية
    string a "بسم الله الرحمن الرحيم" ;
    string b www.google.com ;
    string c "12433" 



    هناك أنواع بيانات أخرى ليست رقمية ولا نصية مثل المتحول الزمني datetime وهو محور السؤال هنا .

    ووظيفة هذا المتحول هي تخزين قيمة زمنية فيه عبارة عن تاريخ ( سنة شهر يوم ساعة دقيقة ثانية ) .

    فمثلا لتعريف متحول زمني نستخدم الكود التالي :

    كود PHP:
    datetime mydate;
    // أمثلة على كتابة قيمة زمنية

    mydate D'2007.01.01 00:00' ;     // تاريخ بداية السنة الجديدة
    mydate D'1980.07.19 12:30:27' // year.month.day hour.minute.second
    mydate D'19.07.1980 12:30:27' // day.month.year hour.minute.second
    mydate D'19.07.1980 12' ;        // تساوي وتكافيء D'1980.07.19 12:00:00'
    mydate D'01.01.2004' ;          // تساوي وتكافيء D'01.01.2004 00:00:00'
    mydate D'12:30:27' ;            // تساوي وتكافيء D'[compilation date] 12:30:27'
    mydate D'' ;                    // تساوي وتكافيء D'[compilation date] 00:00:00' 


    حيث [compilation date] تكافيء تاريخ ترجمة نص البرنامج إلى كود تنفيذي .

    كما لاحظتم فإن القيمة الزمنية ليست نصا من سلسلة أحرف ولا رقما بل هي صيغة محددة لتعيين وتعريف تاريخ وزمن معين .

    لا يقبل المتحول الزمني تخزين تاريخ أو زمن خاطيء منطقيا كما يمكن الاستفادة من المتحولات الزمنية بمقارنة متحولين زمنيين

    ومعرفة من هو صاحب التاريخ الأكبر مثلا أو هل هما متساويان زمنيا .

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

    هناك البيانات المنطقية البوليانية Boolean التي تأخذ قيمتين فقط هما الصفر ( false ) أو الواحد ( true ) .

    كود PHP:
    // أمثلة على قيم منطقية
    bool a true ;
    bool b false ;
    bool c 


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

    ولكن عند تعريف متحول خارجي على أنه من النوع لون فإن لغة MQL4 تتيح لنا إختيار اللون الذي نريد من لوحة ألوان جاهزة

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

    كود PHP:
    // أمثلة على قيم لونية بصيغة RGB
    color a C'128,128,128' ;   // gray
    color a C'0x00,0x00,0xFF' // blue

    // أمثلة على قيم لونية بأسمائها
    color a Red ;
    color a Yellow ;
    color a Black ;

    // أمثلة على قيم لونية بأرقام صحيحة
    color a 0xFFFFFF ;          // white
    color a 16777215 ;         // white
    color a 0x008000 ;         // green
    color a 32768 ;            // green 
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  7. #7
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سيول - كوريا الجنوبية
    المشاركات
    631

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    سبحان الله! توارد أفكار عجيب!

    لن تصدقني يا أخي وضاح لو أخبرتك أني فتحت الموضوع لأسأل عن معنى الـ Static variables ، لكن لما دخلت الـ Documentation فهمت معناه إجمالاً

    وبعدها خطرت لي فكرة الموضوع

  8. #8
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    46
    المشاركات
    6,519

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    س :

    قمت ببرمجة إكسبيرت ولكن لا ينفذ أي صفقات عند تحقق الشروط المبنيه عليه, محرر الأكواد لا يظهر لي أي خطأ برمجي ,فما هي الطرق التي من خلالها نعرف سبب هذا الخطأ الغريب ؟


    ج :

    للأسف فإن لغة MQL4 لا تحتوي مصحح أخطاء Debuger وبالتالي فإننا سنواجه صعوبة في معرفة لماذا لا يقوم المؤشر أو الاكسبيرت بالعمل بالشكل الذي خططناه له .

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

    وذلك لمعرفة قيمة متحول ما عند نقطة معينة أو معرفة ما إذا كان الشرط الفلاني قد تحقق أم لا .

    فمثلا نستطيع استخدام الكود التالي :


    كود PHP:
    Print ( "A= " "   B= " ) ;
    if (
    A==B)
    {
      Print ( 
    " تحقق الشرط" );
      ......



    لأنك تفترض عقلا أن المتحول A يساوي B ولكن الشرط مع ذلك لم يتحقق

    ولكن عند طباعة قيمة المتحولات A و B تجد مثلا أن

    المتحول A يساوي 1.1235

    والمتحول B يساوي 1.123501

    وطبعا فإن قيمة المتحولين ليست متساوية بالنسبة للكمبيوتر .

    لذلك تستخدم مثلا وظائف أخرى برمجية لتقريب القيم والتأكد تماما أن القيمتين متساويتين فعلا .

    هذا أحد الأمثلة على استخدام الوظيفة Print لعمل تصحيح يدوي .

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

    برمجية صحيحة .

    فمثلا الوظيفة التي تقوم بفتح صفقة ما في اكسبيرت OrderSend يجب أن تستخدم بطريقة صحيحة تماما لمعرفة لماذا فشلت

    ولهذا يجب معرفة أن هذه الوظيفة تعود لنا بقيمة تمثل رقم الصفقة في حال نجحت في فتح الصفقة .

    وتعود بقيمة -1 إذا فشلت لأي سبب من الأسباب .

    لذلك فإن الاستخدام الخاطيء والشائع والذي لن نعرف من خلاله لماذا فشلت الوظيفة في فتح الصفقة هو على الشكل التالي :

    كود PHP:
    OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"",16384,0,Green); 


    أما الاستخدام الصحيح للوظيفة فهي على الشكل التالي :

    كود PHP:
    int ticket;
    ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"",16384,0,Green);
         if(
    ticket<0)
           {
            Print(
    "OrderSend failed with error #",GetLastError());
            return(
    0);
           } 


    في الكود السابق قمنا بفحص القيمة العائدة من الوظيفة وفي حال كانت تساوي -1 فهذا يعني وجود خطأ ما .

    ولمعرفة نوع الخطأ قمنا باستخدام الوظيفة GetLastError والتي تعطينا رقم آخر خطأ حدث في البرنامج .

    بعد ذلك قمنا بطباعة رقم الخطأ بواسطة الوظيفة Print .

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

    ولدينا طبعا جدول بأرقام الأخطاء ومعانيها وهو كالتالي :

    كود PHP:
    ERR_NO_ERROR            0        No error returned
    ERR_NO_RESULT             1         No error returnedbut the result is unknown
    ERR_COMMON_ERROR         2         Common error
    ERR_INVALID_TRADE_PARAMETERS     3         Invalid trade parameters
    ERR_SERVER_BUSY         4         Trade server is busy
    ERR_OLD_VERSION         5         Old version of the client terminal
    ERR_NO_CONNECTION         6         No connection with trade server
    ERR_NOT_ENOUGH_RIGHTS     7         Not enough rights
    ERR_TOO_FREQUENT_REQUESTS     8         Too frequent requests
    ERR_MALFUNCTIONAL_TRADE     9         Malfunctional trade operation
    ERR_ACCOUNT_DISABLED         64         Account disabled
    ERR_INVALID_ACCOUNT         65         Invalid account
    ERR_TRADE_TIMEOUT         128         Trade timeout
    ERR_INVALID_PRICE         129         Invalid price
    ERR_INVALID_STOPS         130         Invalid stops
    ERR_INVALID_TRADE_VOLUME     131         Invalid trade volume
    ERR_MARKET_CLOSED         132         Market is closed
    ERR_TRADE_DISABLED         133         Trade is disabled
    ERR_NOT_ENOUGH_MONEY     134         Not enough money
    ERR_PRICE_CHANGED         135         Price changed
    ERR_OFF_QUOTES         136         Off quotes
    ERR_BROKER_BUSY         137         Broker is busy
    ERR_REQUOTE             138         Requote
    ERR_ORDER_LOCKED         139         Order is locked
    ERR_LONG_POSITIONS_ONLY_ALLOWED 140         Long positions only allowed
    ERR_TOO_MANY_REQUESTS     141         Too many requests
    ERR_TRADE_MODIFY_DENIED     145         Modification denied because order too close to 

    market

    ERR_TRADE_CONTEXT_BUSY     146         Trade context is busy
    ERR_TRADE_EXPIRATION_DENIED     147         Expirations are denied by broker
    ERR_TRADE_TOO_MANY_ORDERS     148         The amount of open and pending orders has reached 

    the limit set by the broker



    طبعا هناك أخطاء أخرى ولكن هذه الأرقام هي الشائعة .

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

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

    وغالبا يكون الخطأ نتيجة عدم صحة الأرقام والأسعار المدخلة للوظيفة OrderSend

    ويجب القياس بنفس الطريقة على الاستخدامات الهامة الأخرى للوظائف الحيوية الأخرى كتعديل ستوب أو هدف لصفقة ما .


    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  9. #9
    تاريخ التسجيل
    Dec 2007
    المشاركات
    35

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    موضوع مميز..

    جزاكم الله خيرا..

    عندي سؤال..

    كيف يمكن التعامل مع الربح/الخسارة الكلية لجميع الصفقات؟

    كما في هذه الصورة..



    بحيث لو كانت النتيجة موجبة مثلا يقوم الاكسبرت بإغلاق الصفقات؟

    وهل يتم التعامل معها باعتبار النقاط.. أم الدولار؟

    وجزاكم الله خيرا..
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة اضغط على الصورة لعرض أكبر

الاســـم:	tatalprofit.PNG‏
المشاهدات:	12266
الحجـــم:	4.5 كيلوبايت
الرقم:	102894  
    آخر تعديل بواسطة Leono ، 11-12-2007 الساعة 09:57 AM

  10. #10
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سيول - كوريا الجنوبية
    المشاركات
    631

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    قيمة الربح أو الخسارة المعلّقة لو تلاحظ ستجد أنها الناتج من طرح الـ Equity ناقص الـ Balance

    ويكون ناتج الطرح موجبًا في حالة كونها ربحًا معلّقًا

    وسالبًا في حالة كونها خسارة معلّقة

    يعني مثلاً يمكنك كتابة الكود هكذا:

    كود PHP:
    double floatprofit AccountEquity()-AccountBalance();

    if (
    floatprofit==100Close_All(); 
    أمّا هل تتعامل معها بالنقاط أم الدولار: فأظن والله أعلم بالدولار!!

    وليصوب لي أستاذي وضاح

    اقتباس المشاركة الأصلية كتبت بواسطة Leono مشاهدة المشاركة
    موضوع مميز..

    جزاكم الله خيرا..

    عندي سؤال..

    كيف يمكن التعامل مع الربح/الخسارة الكلية لجميع الصفقات؟

    كما في هذه الصورة..



    بحيث لو كانت النتيجة موجبة مثلا يقوم الاكسبرت بإغلاق الصفقات؟

    وهل يتم التعامل معها باعتبار النقاط.. أم الدولار؟

    وجزاكم الله خيرا..

  11. #11
    تاريخ التسجيل
    Dec 2007
    المشاركات
    35

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    جزيت خيرا يا أبا أيمن المصري..

  12. #12
    تاريخ التسجيل
    Dec 2007
    المشاركات
    35

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    سؤال جديد..

    هل الأصوب عندما نكتب أمر الشراء أن نكتبه بهذا الكود..:

    كود PHP:
    OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Bid-(StopLoss*Point),Bid+(TakeProfit*Point),"Comment",MagicNo,0,Blue); 
    أم بهذا الكود..:

    كود PHP:
    OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-(StopLoss*Point),Ask+(TakeProfit*Point),"Comment",MagicNo,0,Blue); 
    وكذلك نفس السؤال في حالة كتابة أمر البيع، هل نكتبه هكذا..:

    كود PHP:
    OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+(StopLoss*Point),Ask-(TakeProfit*Point),"Comment",MagicNo,0,Red); 
    أم هكذا..:

    كود PHP:
    OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+(StopLoss*Point),Bid-(TakeProfit*Point),"Comment",MagicNo,0,Red); 
    يعني السؤال باختصار عن كيفية كتابة الهدف والوقف بشكل صحيح..
    آخر تعديل بواسطة Leono ، 11-12-2007 الساعة 07:30 PM

  13. #13
    تاريخ التسجيل
    Oct 2007
    الإقامة
    canada-كندا
    المشاركات
    891

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة Leono مشاهدة المشاركة
    كود PHP:
    OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-(StopLoss*Point),Ask+(TakeProfit*Point),"Comment",MagicNo,0,Blue); 







    كود PHP:
    OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+(StopLoss*Point),Bid-(TakeProfit*Point),"Comment",MagicNo,0,Red); 

    الحالة الافضل هي المبينة في الاقتباس
    لأنك لو وضعت استوب 50 مثلا فانك على استعدادا لخسارة 50 نقطة من ضمنها السبريد و في حال وضعت الاوردر بالحالة الاخرى يعني ask مع bid فانك ستخسر 50+السبريد أو 50-السبريد
    و الله اعلم

  14. #14
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    46
    المشاركات
    6,519

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة أبو أيمن المصري مشاهدة المشاركة
    قيمة الربح أو الخسارة المعلّقة لو تلاحظ ستجد أنها الناتج من طرح الـ Equity ناقص الـ Balance


    ويكون ناتج الطرح موجبًا في حالة كونها ربحًا معلّقًا

    وسالبًا في حالة كونها خسارة معلّقة

    يعني مثلاً يمكنك كتابة الكود هكذا:


    كود PHP:
    double floatprofit AccountEquity()-AccountBalance(); 

    كود PHP:
    [center][b][size="5"][font="Traditional Arabic"][/font][/size][/b]
    [
    b][size="5"][font="Traditional Arabic"]if (floatprofit==100Close_All();[/font][/size][/b][/center

    أمّا هل تتعامل معها بالنقاط أم الدولار: فأظن والله أعلم بالدولار!!



    وليصوب لي أستاذي وضاح


    شكرا لك أخي أبو أيمن

    وفيما يلي إضافات بسيطة لجوابك السابق .

    أنت حسبت الربح أو الخسارة من قيمة الرصيد الفعلي ناقص الرصيد النهائي .

    وهذه الحالة هي فقط إذا كان الاكسبيرت يعمل هو فقط على الحساب .

    أما لو كان الاكسبيرت احترافيا أكثر فيجب أن يحسب فقط ربح أو خسارة صفقاته هو فقط وليس كل الصفقات على الحساب.

    فقد يكون هناك صفقات مفتوحة من قبل اكسبيرت آخر أو من قبل صاحب الحساب نفسه .

    لذلك نحن نستخدم وظيفة مشابهة لهذه الوظيفة :

    كود PHP:
    double MyOrdersProfit(int Magic)
    {
      
    double c=0;
      
    int total  OrdersTotal();
      
      for (
    int cnt cnt total cnt++)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
        {
          
    c=c+OrderProfit();
        }
      }
      return(
    c);

    الوظيفة السابقة تقوم بحساب الربح والخسارة فقط لعمليات الاكسبيرت المحددة ولنفس الزوج المستخدم .

    الناتج هو بالدولار وليس بالنقاط .


    تعديل بسيط على الكود الذي أضفته أخي أبو أيمن وهو أن الكود التالي لا يعمل بشكل صحيح :

    كود PHP:
    double floatprofit AccountEquity()-AccountBalance(); 

    if (
    floatprofit==100Close_All(); 
    والصحيح هو

    كود PHP:
    double floatprofit AccountEquity()-AccountBalance(); 

    if (
    floatprofit>=100Close_All(); 
    لأن الربح قد يكون 90 مثلا ثم يصبح 99 ثم يصبح 105 ولن يمر على القيمة 100 وبذلك لن تنفذ عملية الإغلاق .

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

  15. #15
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    46
    المشاركات
    6,519

    افتراضي رد: موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة memouz مشاهدة المشاركة
    الحالة الافضل هي المبينة في الاقتباس
    لأنك لو وضعت استوب 50 مثلا فانك على استعدادا لخسارة 50 نقطة من ضمنها السبريد و في حال وضعت الاوردر بالحالة الاخرى يعني ask مع bid فانك ستخسر 50+السبريد أو 50-السبريد
    و الله اعلم

    شكرا لك أخي العزيز على هذه الإجابة .

    وتوضيح أكثر

    فإن الشراء دائما هو على سعر Ask والبيع يكون على سعر Bid

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

    لأنك طلبت أن تشتري ماركت بسعر مغاير لسعر Ask ولن يقبل تنفيذ الصفقة إلا إذا كان السبريد أقل أو مساوي لقيمة Slipage التي عادة تكون 3 .

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

    يعني تصور لو كان سعر Ask يساوي 1.2220 وأنت طلبت منه أن يشتري لك ماركت بسعر 1.2215 .

    لن يقبل البروكر ذلك وسيرفض لك طلبك أو طلب الاكسبيرت .

    لذلك خذها قاعدة وهي أن الشراء على Ask والبيع على Bid . والإغلاق يكون بالعكس .
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

صفحة 1 من 618 12345671151101501 ... الأخيرةالأخيرة

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

  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

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