أسراري حول أوتولوت (Autolot). اللوت الديناميكي (Dynamic Lot) أو أوتولوت. المخاطرة من الرصيد.

تنبيه في المؤشر. كيف تُدرج التنبيهات والأسهم في مؤشرك؟
سوق MQL5. مشكلات وأخطاء في تثبيت المستشار الخبير (Expert Advisor) والحلول
تنبيه في المؤشر. كيف تُدرج التنبيهات والأسهم في مؤشرك؟
سوق MQL5. مشكلات وأخطاء في تثبيت المستشار الخبير (Expert Advisor) والحلول

الوصف

في هذه المقالة، سأشرح أساليبي في حساب حجم اللوت بناءً على نسبة مئوية (المخاطرة بنسبة %) من الهامش الحر (Free Margin) عبر أزواج العملات المختلفة وأنواع الودائع المتنوعة. أوتولوت (Autolot) أو اللوت الديناميكي (Dynamic Lot) من الرصيد. RiskManager. سأعرض لك كود أوتولوت (Autolot) الخاص بي.

هيا بنا نبدأ:

المفاهيم الأساسية:

أولاً، دعونا نسلط الضوء على بعض المفاهيم المستخدمة في هذا الحساب:

الهامش الحر (Free Margin) (AccountFreeMargin()) – الأموال التي لم تُستخدم كضمان في الصفقات المفتوحة. يتم حساب الهامش الحر باستخدام الصيغة: الهامش الحر = رصيد الإيداع الحالي – الهامش المطلوب للصفقات المفتوحة. يُحدد هذا المؤشر عدد الصفقات التي يمكن فتحها في الوقت الحالي.

سعر الطلب (Ask) هو السعر الذي تشتري به كمية معينة من الأداة المالية من الوسيط. يبيعك الوسيط بهذا السعر. عند التداول في سوق الفوركس (Forex)، ستواجه هذا النوع من الأسعار في كل مكان: من منصة التداول إلى تقارير الأسهم والمقالات التحليلية عن الأسواق المالية.

سعر العرض (Bid) هو السعر الذي تبيع به كمية معينة من الأداة المالية للوسيط. يشتريك الوسيط بهذا السعر. عند التداول في سوق الفوركس (Forex)، ستواجه هذا النوع من الأسعار في كل من منصة التداول وتقارير الأسعار والمقالات التحليلية عن الأسواق المالية.

الرافعة المالية (Leverage) هي نسبة مقدار الضمان إلى المبلغ المقترض. عند اختيار الرافعة المالية مبدئياً، تختار حجم الرافعة التي تُشير إلى المضاعف الذي سيتم به زيادة وديعة العميل لتنفيذ عمليات التداول في سوق الفوركس (Forex). يمكن للعميل اختيار الرافعة من 1:1 إلى 1:500، مما يعني أن العميل يمكنه التداول بأمواله الخاصة أو طلب زيادة وديعته حتى 500 مرة للدخول إلى السوق بهذا المبلغ. تلعب الرافعة المالية (Leverage) دوراً حاسماً في عملية التداول لأنها تتيح للمتداول زيادة رأس ماله بشكل كبير.

زوج العملات (Currency Pair) هو تعيين لعملتين تشكلان معاً سعر الصرف. يخدم زوج العملات ككائن للمعاملات المالية. يُكتب زوج العملات إما معاً أو مفصولاً بشرطة مائلة بالشكل التالي: العملة الأساسية (Base Currency) / عملة الاقتباس (Quote Currency). العملة الأساسية هي العملة التي تُشترى وتُباع أولاً، وتُستخدم عملة الاقتباس للتعبير عن سعر العملة الأساسية. يُعد زوج العملات المفهوم الأساسي لسوق الفوركس (Forex) ويظهر في كل مكان يتعلق بهذا السوق.

حجم اللوت (Lot Size) – هو حجم العملة الأساسية أو السلعة أو عدد الأسهم المحددة في مواصفات العقد. يعتمد حجم اللوت على كمية العملة المذكورة في العقد ويعد وحدة قياس لتحديد حجم العقد. لتنفيد صفقة، يحدد العميل حجم الصفقة الذي يُعبر عنه بعدد اللوتات. يشير حجم الصفقة إلى كمية العملة التي ستُشكل الصفقة. اللوت هو حجم العقد، أي كمية ثابتة من العملة تُستخدم في تداول الفوركس (Forex).

يُحدد سعر الصرف بين عملتين من خلال تفاعل العرض والطلب في لحظة معينة.
تُعرف هذه العملية بتسعير العملات، ويمكن أن تكون الأسعار إما مباشرة أو معكوسة.

يعكس التسعير المباشر (Direct Quote) سعر العملة الأجنبية بوحدات العملة الوطنية (National Currency).
يُعبر معظم أسعار الصرف عن نفسها على شكل أسعار مباشرة للدولار الأمريكي (US Dollar) مقابل عملات البلدان المختلفة.

على سبيل المثال، USD/UAH—30.70 يعني أن دولارًا أمريكيًا واحدًا يُساوي 30.70 هريفنيا أوكرانية،
وUSD/CHF—1.0850 يشير إلى أن دولارًا أمريكيًا واحدًا يُعادل 1.0850 فرنك سويسري.

يعبر التسعير العكسي (Reverse Quote) عن قيمة العملة الوطنية بوحدة عملة أجنبية.
تاريخياً، تم تسعير عملات مثل الجنيه الإسترليني (British Pound)، اليورو (Euro)، الدولار الأسترالي (Australian Dollar)، والدولار النيوزيلندي (New Zealand Dollar) بهذه الطريقة.

على سبيل المثال، EUR/USD—1.3374 يعني أن يورو واحد يُساوي 1.3374 دولار أمريكي،
بينما GBP/USD—1.5970 يعني أن جنيهًا إسترلينيًا واحدًا يُساوي 1.5970 دولار أمريكي.

كما يوجد مفهوم سعر الصرف المتقاطع (Cross Exchange Rate)، حيث لا يكون الدولار الأمريكي هو العملة الأساسية ولا عملة الاقتباس.
من الأمثلة: EUR/JPY, GBP/CHF, وEUR/GBP.

الجانب الفني

  1. NormalizeDouble – يقوم بتقريب رقم عشري إلى الدقة المحددة.
  2. MODE_LOTSIZE – حجم العقد بعملة الأداة الأساسية.
  3. MODE_LOTSTEP – خطوة تغيير حجم اللوت.
  4. AccountCurrency – تُعيد اسم العملة للحساب الحالي.
  5. MathFloor – تُعيد أكبر عدد صحيح أقل من أو يساوي x.


أساسي: لضمان دقة جميع الحسابات، قم بتفعيل جميع الرموز في لوحة “مراقبة السوق”:

عرض جميع الرموز في مراقبة السوق للفوركس

صيغة حسابي لعملة الحساب

صيغة حسابي تبدو كالتالي:

إيداع بالدولار الأمريكي (USD)

إيداع بالدولار الأمريكي – التسعير المباشر (Direct Quote)

اللوت = الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / 100 / حجم العقد (Contract Size)

إيداع بالدولار الأمريكي – التسعير العكسي (Back Quote)

اللوت = الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / سعر الطلب (Ask) / 100 / حجم العقد (Contract Size)

إيداع بالدولار الأمريكي – سعر الصرف المتقاطع (Cross Rate):

الخيار 1: إذا كان هناك سعر حالي للعملة الأساسية (Base Currency) + دولار أمريكي (USD) (على سبيل المثال، إذا كان زوج التسوية هو AUDCAD، فإن السعر الحالي للعملة الأساسية = AUDUSD)

اللوت = الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / (السعر الحالي للعملة الأساسية (Base Currency) + USD) / 100 / حجم العقد (Contract Size)

الخيار 2: إذا لم يكن هناك سعر حالي للعملة الأساسية (Base Currency) + دولار أمريكي (USD) (على سبيل المثال، CADJPY)

اللوت = الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / 100 / حجم العقد (Contract Size)

إيداع باليورو (EUR)

إيداع باليورو – التسعير المباشر (Direct Quote)

اللوت = الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / 100 / حجم العقد (Contract Size)

إيداع باليورو – سعر الصرف المتقاطع (Cross Rate):

السعر الحالي = اليورو (EUR) + عملة الاقتباس (Quote Currency) (على سبيل المثال، إذا كان زوج التسوية هو AUDCAD، فإن السعر الحالي هو عملة الاقتباس = EURAUD)

اللوت = الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / (السعر الحالي (EUR) + عملة الاقتباس (Quote Currency)) / 100 / حجم العقد (Contract Size)

إيداع بالهريفنيا الأوكرانية (UAH) وغيرها

إيداع بالهريفنيا – التسعير العكسي (Back Quote) (على سبيل المثال، USDUAH)

اللوت = MathFloor(الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / 100 / السعر الحالي / حجم العقد (Contract Size) / خطوة اللوت (Lot Step) / 20) * خطوة اللوت (Lot Step)

إيداع بالهريفنيا – سعر الصرف المتقاطع (Cross) (على سبيل المثال، EURGBP)

السعر الحالي = MarketInfo(StringSubstr(Symbol(), 0, 3) + “UAH” + StringSubstr(Symbol(), 6), MODE_BID);

if(pr != 0) Lot2 = MathFloor(الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / السعر الحالي / 100 / حجم العقد (Contract Size) / خطوة اللوت (Lot Step)) * خطوة اللوت (Lot Step);
else Lot = MathFloor(الهامش الحر (Free Margin) * المخاطرة * الرافعة المالية (Leverage) / 100 / حجم العقد (Contract Size) / خطوة اللوت (Lot Step)) * خطوة اللوت (Lot Step);

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

إذا كان لديك اقتراحات لهذه الحسابات، يرجى مشاركة دوال أوتولوت (Autolot) الخاصة بك عند طلب البرمجة.

أو فريلانس: برمجة مخصصة على MetaTrader وMQL! إنتهى؟

المتغيرات الخارجية دالة حساب أوتولوت (Autolot):

اللوتات (Lots)لوت ثابت لفتح صفقة.
RiskLotType
TypeAutolot
نوع حساب أوتولوت (Autolot):
BALANCE (المخاطرة من الرصيد) – يتم حساب أوتولوت (Autolot) من الرصيد الحالي. يتم حساب اللوت بناءً على رصيد الحساب. إذا كانت هناك صفقات مفتوحة، سيكون اللوت التالي تقريباً نفسه لأن الرصيد لا ينقص من عدد الصفقات المفتوحة!
FREEMARGIN (المخاطرة من الهامش الحر) – يُحسب اللوت القياسي من الهامش الحر الحالي بحيث يكون اللوت أصغر مع زيادة عدد الصفقات المفتوحة، نظراً لانخفاض الهامش الحر عند فتح صفقة.

نوع حساب المخاطرة لخيار RiskLot:

الأوضاع المتاحة:
RiskLotType = 0, // المخاطرة من الهامش الحر
RiskLotType = 1, // المخاطرة من الرصيد
اللوت الديناميكي (Dynamic Lot)لوت ديناميكي (أوتولوت) لصفقة مفتوحة.
يمكنك تفعيل حساب اللوت الديناميكي كنسبة مئوية من الهامش الحر وعوامل أخرى.
حساب أوتولوت الخاص بنا:
الصيغة والكود: https://expforex.com/ar/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-4
اللوت الديناميكي عند وقف الخسارة (DynamicLotStopLoss)المخاطرة من وقف الخسارة (SL) – يحسب اللوت الآلي مع مراعاة وقف الخسارة.
أقصى خسارة كنسبة مئوية من الرصيد عند إغلاق صفقة عند وقف الخسارة.
عند حساب اللوت، يأخذ المستشار الخبير (Expert Advisor) وقف الخسارة في لحظة فتح الصفقة في الاعتبار.
إذا أغلقت الصفقة عند وقف الخسارة، فإن الخسارة ستكون نسبة من الرصيد عند فتح الصفقة.
هام! إذا تم تغيير وقف الخسارة بعد فتح الصفقة، لا يمكن تغيير حجم اللوت.
هام! إذا استخدمت وقف متحرك، يتغير وقف الخسارة مع كل تكة، لكن لا يمكن تغيير حجم اللوت.
الصيغة والكود: https://expforex.com/ar/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-5
LotBalancePcnt
RiskLot
LotBalancePercent
النسبة المئوية لأوتولوت (Autolot).
النسبة لحساب اللوت الديناميكي (أوتولوت).

إذا كان RiskLot = 0، يتم حساب حجم الصفقة وفقاً للمعامل Lots.

إذا كان RiskLot ≠ 0، تُفتح الصفقة بحجم لوت كنسبة مئوية من الهامش الحر للعميل (أوتولوت).
RiskRateسعر عملتك مقابل الدولار (أو عملة الحساب).

افتراضياً، RiskRate = 0، مما يعني أن المستشار الخبير سيحاول إيجاد السعر الصحيح في مراجعة السوق.
لكي يعمل أوتولوت (Autolot) بشكل جيد مع جميع أزواج العملات، يجب تفعيل خيار “عرض جميع أزواج العملات” في لوحة مراقبة السوق.
عرض جميع الرموز في مراقبة السوق للفوركس
MaxLotالحد الأقصى للوت الذي يمكن للمستشار الخبير (Expert Advisor) فتحه عند حساب أوتولوت (Autolot) والمارتينجال (Martingale) لأول صفقة رئيسية.
Martinالمارتينجال (Martingale). هو التضاعف القياسي للوت من آخر صفقة أغلقت بخسارة.

إذا كان Martin = 1، لا يعمل المارتينجال (لوت ثابت).
إذا كان Martin = 0، لا يستطيع المستشار الخبير فتح الصفقة التالية.
إذا كان Martin = 2، يكون اللوت الأول = 0.1، والثاني = 0.2، وهكذا: 0.4 – 0.8 – 1.6 – 3.2 – 6.4…..
إذا كان Martin = 0.5، يكون اللوت الأول = 1، والثاني = 0.5، وهكذا: 0.25 – 0.125.

هل تحتاج إلى كود؟

كود دالة حساب أوتولوت (Autolot):

input  double                    Lots=0.01;                                // اللوتات (Lots) --> لوت ثابت للصفقات والأوامر المفتوحة
input bool                       DynamicLot=false;                         // اللوت الديناميكي (Dynamic Lot) --> حساب اللوت من الهامش الحر
input bool                       DynamicLotStopLoss=false;                 // اللوت الديناميكي عند وقف الخسارة (DynamicLotStopLoss) --> حساب اللوت من وقف الخسارة والهامش الحر
input double                     LotBalancePercent=1;                      // LotBalancePercent --> النسبة المئوية لحساب اللوت
extern double                    RiskRate=0;                               // RiskRate --> سعر العملة مقابل الدولار (أو عملة الحساب) لحساب اللوت
input double                     MaxLot=999;                               // MaxLot --> الحد الأقصى للوت عند فتح الصفقات

double GetSizeLot(double ll=1) // الدالة تُعيد حجم اللوت
{
  string Author = "مؤلف نموذج الدالة: www.expforex.com";
  string lotcalc;
  double pr;
  string Valdepo = AccountCurrency();
  // إذا كان إدارة المال (MM) مفعلاً، يتم تحديد حجم اللوت
  double Lot2, MinLots, MaxLots;
  int lotdig;
  if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;
  
  if (Valdepo == "USD")
  {
    if (StringSubstr(Symbol(), 0, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else if (StringSubstr(Symbol(), 3, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else
    {
      pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
      if (pr != 0)
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
      else
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    }
  }

  if (Valdepo == "EUR")
  {
    if (StringSubstr(Symbol(), 0, 3) == "EUR")
      Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else
    {
      pr = MarketInfo("EUR" + StringSubstr(Symbol(), 0, 3), MODE_BID);
      if (pr != 0)
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() * pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
      else
        Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    }
  }

  if (Valdepo == "UAH")
  {
    if (StringSubstr(Symbol(), 0, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else if (StringSubstr(Symbol(), 3, 3) == "USD")
      Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    else
    {
      pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
      if (pr != 0)
        Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
      else
        Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
    }
  }

  MinLots = MarketInfo(Symbol(), MODE_MINLOT);
  MaxLots = MaxLot;
  lotcalc = "Autolot=" + Lot2;
  if (!DynamicLot) Lot2 = Lots;

  if (Lot2 < MinLots) Lot2 = MinLots;
  if (Lot2 > MaxLots) Lot2 = MaxLots;
  lotcalc = lotcalc + " MinLots=" + MinLots + " LOT=" + NormalizeDouble(Lot2, lotdig);
  Print(lotcalc);
  return (NormalizeDouble(Lot2, lotdig));
}

دالة حساب أوتولوت (Autolot) عند وقف الخسارة:

إذا كنت ترغب في إضافة وظيفة أوتولوت (Autolot) مع وقف الخسارة إلى المستشار الخبير (EA) الخاص بك، يمكنك تنزيل كودنا:

StopLosssd = وقف الخسارة بالنقاط

المتغيرات الخارجية:

Lots = 0.1; // لوت ثابت

DynamicLotStopLoss = // true/false

LotBalancePcnt (RiskLot) = 20; // % من الهامش الحر
 

الدالة:

double GetSizeLotStopLoss(double StopLosssd=1) // الدالة تُعيد حجم اللوت
{
  string Author = "مؤلف نموذج الدالة: www.expforex.com";
  string Valdepo = AccountCurrency();
  // إذا كان إدارة المال (MM) مفعلاً، يتم تحديد حجم اللوت
  double MinLots;
  int lotdig;
  if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;
  double Free = AccountFreeMargin();
  double LotVal = MarketInfo(Symbol(), MODE_TICKVALUE); // تكلفة نقطة واحدة للوت واحد
  double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);
  double Max_Lot = MarketInfo(Symbol(), MODE_MAXLOT);
  double Step = MarketInfo(Symbol(), MODE_LOTSTEP);
  double Lot = MathFloor((Free * LotBalancePcnt / 100) / (StopLosssd * LotVal) / Step) * Step;
  MinLots = MarketInfo(Symbol(), MODE_MINLOT);

  if (Lot < MinLots) Lot = MinLots;

  return (NormalizeDouble(Lot, lotdig));
}

أسئلة؟

إذا كان لديك أي أسئلة، يرجى طرحها. نحن لا نبيع منتجات غير معروفة.

يمكن اختبار كل من منتجاتنا قبل الشراء.

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

شكراً لكونك معنا!

هل لديك سؤال؟

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

4 ردود على “أسراري حول أوتولوت (Autolot). اللوت الديناميكي (Dynamic Lot) أو أوتولوت. المخاطرة من الرصيد.”

  1. الصورة الرمزية لـ erik
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

  2. الصورة الرمزية لـ erik
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

  3. الصورة الرمزية لـ erik
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

هذا المنشور متاح أيضًا باللغة: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어 العربية Indonesian ไทย Tiếng Việt


    يرجى الانتظار، جاري الاتصال...

    تحذير المخاطر:


    الأداء التجاري السابق لا يضمن النتائج المستقبلية.

    تداول العملات الأجنبية بالهامش ينطوي على درجة عالية من المخاطر وقد لا يكون مناسبًا لجميع المستثمرين.

    يرجى العلم أن استخدام روبوتات التداول (trading robots) ينطوي على مخاطر كبيرة، وقد تخسر أكثر من استثمارك الأولي.

    يرجى المتابعة بحذر، وتقييم وضعك المالي بعناية، والنظر في استشارة متخصص مؤهل.

    Disclaimer

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