PDA

View Full Version : سؤال noobie



نشاط عبد الولِي
10-20-2009 20:11, 08:11 PM
يمكن أن يشرح لي أحد كيف هذا EA حساب حجم اللوط لكل قضية تجارية أفهم litlle جدا في لغات mt4.

//| حساب حجم اللوط الأمثل |
// ----------------------------------------------- -------------------
ضعف LotsOptimized ()
{
الكثير المزدوج = الكثير؛
int orders = HistoryTotal ()؛/أوامر التاريخ المجموع
الخسائر int = 0؛/عدد من أوامر الخسائر دون انقطاع
//---- select select size
الكثير = NormalizeDouble (AccountFreeMargin () * MaximumRisk1000.0،1)؛
//---- رقم حساب أوامر خسائر دون انقطاع
إذا (DecreaseFactorlt، 0)
{
لـ (int i = orders-1؛ igt؛ = 0؛ i--)
{
if (OrderSelect (i، SELECT_BY_POS، MODE_HISTORY) == false) {Print (Error in history!)؛ استراحة؛ }
if (OrderSymbol ()! = Symbol () || OrderType () gt؛ OP_SELL) تابع؛
//----
إذا كان (OrderProfit () gt؛ 0) فاصل؛
if (OrderProfit () lt؛ 0) loss ؛
}
if (lossesgt؛ 1) lot = NormalizeDouble (lot lot-loss * lossesDecreaseFactor، 1)؛
}
//---- return حجم اللوت
if (lotlt؛ 0.01) lot = 0.01؛
العودة (الكثير)؛

sarieh0
11-13-2021 08:00, 08:00 AM
من هذا الخط: double lot = Lots؛ ... if (lossesgt؛ 1) lot = NormalizeDouble (lot lot-loss * lossesDecreaseFactor، 1)؛ أولاً ، لديك حجم اللوت الأولي ، المسمى Lots (انظر متغير extern ، في الجزء العلوي من التعليمات البرمجية) دعنا نقول Lots = 0.2. ثم هناك DecreaseFactor ، دعنا نقول DecreaseFactor = 5 إذا كانت الخسائر المتتالية تساوي 2 (خسائر أكبر من 1) ثم حجم اللوت = 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 يتم تقريبه إلى 1 نقطة عشرية = gt؛ NormalizeDouble (...، 1) 0.12 = gt؛ 0.1 نأمل أن تكون هذه المساعدة

نشاط عبد الولِي
11-13-2021 09:21, 09:21 AM
شكرا لك أنا أفهم الآن!

من هذا الخط: double lot = Lots؛ ... if (lossesgt؛ 1) lot = NormalizeDouble (lot lot-loss * lossesDecreaseFactor، 1)؛ أولاً ، لديك حجم اللوت الأولي ، المسمى Lots (انظر متغير extern ، في الجزء العلوي من التعليمات البرمجية) دعنا نقول Lots = 0.2. ثم هناك DecreaseFactor ، دعنا نقول DecreaseFactor = 5 إذا كانت الخسائر المتتالية تساوي 2 (خسائر أكبر من 1) ثم حجم اللوت = 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 يتم تقريبه إلى 1 نقطة عشرية = gt؛ NormalizeDouble (...، 1) 0.12 = gt؛ 0.1 نأمل أن تكون هذه المساعدة

من هذا الخط: double lot = Lots؛ ... if (lossesgt؛ 1) lot = NormalizeDouble (lot lot-loss * lossesDecreaseFactor، 1)؛ أولاً ، لديك حجم اللوت الأولي ، المسمى Lots (انظر متغير extern ، في الجزء العلوي من التعليمات البرمجية) دعنا نقول Lots = 0.2. ثم هناك DecreaseFactor ، دعنا نقول DecreaseFactor = 5 إذا كانت الخسائر المتتالية تساوي 2 (خسائر أكبر من 1) ثم حجم اللوت = 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 يتم تقريبه إلى 1 نقطة عشرية = gt؛ NormalizeDouble (...، 1) 0.12 = gt؛ 0.1 نأمل أن تكون هذه المساعدة

نشاط عبد الولِي
11-13-2021 10:42, 10:42 AM
هناك شيء آخر لا أحمله ؛ فهمت. إذا كان الهامش المجاني للحساب هو 3000 ، وكان الحد الأقصى للمخاطر هو 0،01 ، يجب أن يكون حجم اللوت 3000 * .011000 = .03 لكن EA تأخذ فقط حجم الكثير .01. في عدد قليل من المناسبات فتح EA .1 الكثير عندما ينمو الحساب إلى 5000 ولكن في هذه المرحلة يجب أن يفتح 5000 * .011000 = .05 لوت./| حساب حجم اللوط الأمثل |/ ----------------------------------------------- ------------------- double LotsOptimized () {double lot = Lots؛ int orders = HistoryTotal ()؛/history orders total int losses = 0؛/number of losses orders without a break/---- select lot lot lot = NormalizeDouble (AccountFreeMarg in () * MaximumRisk1000.0،1)؛/---- calcuulate number of losses orders without a break if (DecreaseFactorlt؛ 0) {for (int i = orders-1؛ igt؛ = 0؛ i--) {if (OrderSelect (i، SELECT_BY_POS، MODE _HISTORY ) == false) {Print (Error in history!)؛ استراحة؛ } إذا كان (OrderSymbol ()! = Symbol () || OrderType () gt؛ OP_SELL) تابع؛/---- if (فاصل OrderProfit () gt؛ 0)؛ if (OrderProfit () lt؛ 0) loss ؛ } if (lossesgt؛ 1) lot = NormalizeDouble (lot lot-loss * lossesDecreaseFactor، 1)؛/-------- حجم العائد إذا (lotlt؛ 0.01) lot = 0.01؛ العودة (الكثير)؛
https://www.forexdrop.com/trading-system-and-egies/104-trading-journal.html

نشاط عبد الولِي
11-13-2021 12:03, 12:03 PM
ما زلت لا أفهم لماذا لا يفتح إيا حجم اللوط الصحيح. Cqn womeone أخبرني ما 1 المدرج في الرمز .... lot = NormalizeDouble (AccountFreeMarg in () * MaximumRisk1000.0،1)؛

هناك شيء آخر لا أحمله ؛ فهمت. إذا كان الهامش المجاني للحساب هو 3000 ، وكان الحد الأقصى للمخاطر هو 0،01 ، يجب أن يكون حجم اللوت 3000 * .011000 = .03 لكن EA تأخذ فقط حجم الكثير .01. في عدد قليل من المناسبات فتح EA .1 الكثير عندما ينمو الحساب إلى 5000 ولكن في هذه المرحلة يجب أن يفتح 5000 * .011000 = .05 لوت./| حساب حجم اللوط الأمثل |/ ----------------------------------------------- ------------------- double LotsOptimized () {double lot = Lots؛ int orders = HistoryTotal ()؛/history orders total int losses = 0؛/...

هناك شيء آخر لا أحمله ؛ فهمت. إذا كان الهامش المجاني للحساب هو 3000 ، وكان الحد الأقصى للمخاطر هو 0،01 ، يجب أن يكون حجم اللوت 3000 * .011000 = .03 لكن EA تأخذ فقط حجم الكثير .01. في عدد قليل من المناسبات فتح EA .1 الكثير عندما ينمو الحساب إلى 5000 ولكن في هذه المرحلة يجب أن يفتح 5000 * .011000 = .05 لوت./| حساب حجم اللوط الأمثل |/ ----------------------------------------------- ------------------- double LotsOptimized () {double lot = Lots؛ int orders = HistoryTotal ()؛/history orders total int losses = 0؛/...

sarieh0
11-13-2021 13:23, 01:23 PM
مرحبًا ، يبدو أن هناك منطقًا خاطئًا مع ردي الأخير. الدالة حجم اللوت المحسوب الأول ليس من المتغير Lots ، ولكن من: lot = NormalizeDouble (AccountFreeMarg in () * MaximumRisk1000.0،1)؛ أولا ، حول NormalizeDouble (.. ، 1) ، فإنه يعود القيمة مع 1 أرقام الدقة. على سبيل المثال ، var1 = 5/8 = 0.625. NormalizeDouble (var1،2) = 0.63 gt؛ gt؛ gt؛ رقمين بعد العلامة العشرية NormalizeDouble (var1،1) = 0.6 gt؛ gt؛ gt؛ رقم واحد بعد العلامة العشرية من حالتك ، AccountFreeMargin = 3000 MaximumRisk = 0.01 AccountFreeMargin * MaximumRisk1000 = 3000 * 0.011000 = 0.03 lot = NormalizeDouble (0.03،1) = 0.0 !!! يتم حذف 3 لأنه في الموضع الثاني ، تحسب من اليسار بعد الفاصلة العشرية ثم قبل إرجاع النتيجة:/---- return lot size if (lotlt؛ 0.01) lot = 0.01؛ العودة (الكثير)؛ لذلك ، لأن الكمية المحسوبة فوق النتيجة 0 وهي أصغر من 0.01 ، تعيد الدالة 0.01 ؛ آخر شيء ، يجب عليك استخدام if (DecreaseFactorgt؛ 0) بدلاً منه إذا (DecreaseFactorlt؛ 0) ، وتأكد من أن قيمة DecreaseFactor هي قيمة موجبة (على سبيل المثال 3) آمل أن يساعد هذا