الحلقة الخامسة عشر من سلسلة تعلم البرمجة باسهل طريقة

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الحلقة الخامسة عشر من سلسلة تعلم البرمجة باسهل طريقة

    حساب وقف الخسارة وجني الأرباح

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



    حساب بالنقاط

    الطريقة الأكثر شيوعًا لحساب التوقفات ، سنستخدم متغيرًا خارجيًا يكون فيه
    يحدد المستخدم عدد النقاط لإيقاف الخسارة وجني الأرباح. ثم نحسب نقاط التوقف
    بالنسبة لسعر فتح الأمر.
    بالنسبة لأوامر الشراء في السوق ، سيكون سعر الافتتاح هو الطلب Ask ، أما بالنسبة لأوامر البيع في السوق ، فسيكون الافتتاح
    السعر سيكون العطاء Bid. بالنسبة لأوامر الإيقاف والحد المعلقة ، نقوم بتعيين سعر افتتاح صالح وهو
    شيء آخر غير سعر السوق الحالي. سنقوم بتعيين السعر المناسب للمتغير OpenPrice.

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

    كود:
    extern int StopLoss = 50;
    extern int TakeProfit = 100;

    في هذا المثال ، قمنا بإدخال أمر إيقاف الخسارة بمقدار 50 نقطة ، وجني الأرباح بمقدار 100 نقطة. من المحتمل أنك رأيت
    إعدادات مشابهة لتلك الموجودة في EAs التي استخدمتها.
    لحساب وقف الخسارة ، نحتاج إلى إضافة أو طرح 50 نقطة من سعر فتح الأمر. اولا نحن
    نحتاج إلى تحويل القيمة الصحيحة 50 إلى القيمة الكسرية التي سنستخدمها للجمع أو الطرح من
    سعر الافتتاح. لأزواج الين ، 50 نقطة تساوي 0.50. بالنسبة لجميع الأزواج الأخرى ، يكون 0.0050.
    لتحويل عدد صحيح إلى قيمة كسرية مناسبة ، نحتاج إلى مضاعفة StopLoss الخارجية متغير Point



    النقطة

    النقطة هي متغير محدد مسبقًا في MQL يُرجع أصغر وحدة سعر للعملة ، اعتمادًا على
    عدد المنازل العشرية. بالنسبة لزوج عملات بأربعة منازل عشرية ، فإن النقطة هي 0.0001. لزوج الين ،
    إنه 0.01.
    دعنا نحسب وقف الخسارة لأمر شراء في السوق. سنقوم بتعيين سعر الطلب الحالي لـ OpenPrice ،
    واستخدم ذلك كسعر فتح الأمر. سوف نتحقق لمعرفة ما إذا كان إعداد StopLoss الخاص بنا أكبر من
    صفر. إذا كان الأمر كذلك ، فسنضرب StopLoss بالنقطة. ثم سنطرح ذلك من OpenPrice.
    سيتم تخزين النتيجة في المتغير BuyStopLoss.


    كود:
    double OpenPrice = Ask;
    if(StopLoss > 0) double BuyStopLoss = OpenPrice – (StopLoss * Point);
    // 1.4600 - (50 * 0.0001) = 1.4550

    إذا لم يكن StopLoss أكبر من الصفر ، فسيتم تهيئة BuyStopLoss بقيمة 0 ، ولا يوجد توقف
    سيتم وضع الخسارة مع الطلب. بافتراض أن النقطة تساوي 0.0001 ، إذا كان سعر فتح الأمر
    1.4600 ، ووقف الخسارة 50 نقطة ، ثم سعر وقف الخسارة لأمر الشراء سيكون 1.4600 -
    (0.0050) = 1.4550.
    في الآونة الأخيرة ، كان العديد من الوسطاء يتجهون نحو عروض أسعار النقطة الجزئية ، مع 3 منازل عشرية
    لأزواج الين و 5 منازل عشرية لجميع الأزواج الأخرى. إذا كان الوسيط يستخدم أسعار النقطة الكسرية ، فعندئذٍ في
    مثالنا أعلاه ، ستكون النقطة تساوي 0.00001.

    إذا استخدمنا قيمة نقطة 0.00001 في مثال حساب وقف الخسارة أعلاه ، فسيكون وقف الخسارة
    محسوبة على أنها 5 نقاط من سعر الافتتاح ، بدلاً من 50 نقطة. هذا يطرح مشكلة. للحصول على
    القيمة الصحيحة ، سيتعين علينا إضافة صفر إضافي إلى إعداد وقف الخسارة - أي StopLoss = 500.
    بدلاً من مطالبة المستخدم بإضافة صفر إضافي إلى إعدادات وقف الخسارة وجني الأرباح كل مرة
    في الوقت الذي يتداولون فيه على وسيط من نقطة الكسر ، سننشئ وظيفة تعيد دائمًا 0.01 أو 0.0001 ،


    بغض النظر عما إذا كان الوسيط يستخدم كسور النقاط أم لا. سنسمي هذه الوظيفة PipPoint ،
    لأنها ستعيد دائمًا قيمة النقطة التي تساوي نقطة واحدة.


    كود:
    double PipPoint(string Currency)
    {
    int CalcDigits = MarketInfo(Currency,MODE_DIGITS);
    if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01;
    else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001;
    return(CalcPoint);
    }


    Currency هي رمز زوج العملات الذي نريد استرداد النقطة له.
    ترجع الدالة MarketInfo () مع المعلمة MODE_DIGITS عدد الفاصلة العشرية
    أماكن (أرقام) لهذا الزوج. تقوم عبارة if-else بتعيين قيمة النقطة المناسبة لملف
    متغير CalcPoint ، اعتمادًا على عدد الأرقام.

    فيما يلي مثال على استخدام هذه الوظيفة. ستستخدم زوج الرسم البياني الحالي
    معظم الوقت ، لذلك سنقوم بتمرير الدالة Symbol () كوسيطة. هذا سيعيد النقطة للرسم البياني الحالي.


    كود:
    double UsePoint = PipPoint(Symbol());

    إليك مجموعة من الأمثلة باستخدام أزواج محددة:


    كود:
    double UsePoint = PipPoint(EURUSD);
    // Result is 0.0001
    double UsePoint = PipPoint(USDJPY);
    // Result is 0.01

    سنستخدم هذه الوظيفة لإيجاد قيمة نقطة واحدة لبقية هذه الدروس
    كما أوضحنا أن متغير النقطة Point لن يعمل بشكل صحيح على وسطاء البيب الكسري عندما
    حساب قيمة النقطة الواحدة. لا يمكنك أبدًا افتراض أن EA سيتم استخدامه فقط على 2 و 4
    وسيط رقم ، لذلك من الضروري تحديد قيمة النقطة تلقائيًا باستخدام وظيفة
    PipPoint ().​



يعمل...
X