MQL5
MQL5 — اسنیپتهای منتخب
دفترچهی کار یه توسعهدهندهی Expert Advisor که واقعاً روی حساب prop-firm کار کرده: همون دامهایی که مستندات MetaQuotes درموردشون چیزی نمیگه (tick_value در برابر point روی طلا و شاخصها، کدهای 10014/10016، freeze level) و یه مدیریت سرمایه که روی حساب funded دووم میاره — کلمپ دوگانهی ریسک و مارجین، دراودان محققشده و شناور، expectancy برحسب R. کدی که همون بار اول و روی هر بروکری OrderSend رو رد میکنه.
20 اسنیپت منتخب
- محاسبه حجم معامله بر اساس درصد ریسکحجم دقیق معامله رو طوری حساب میکنه که اگه به حد ضرر خوردی، دقیقاً همون مبلغی که میخوای ضرر کنی؛ با کمک SYMBOL_TRADE_TICK_VALUE و SYMBOL_TRADE_TICK_SIZE — روی فارکس، شاخصها و فلزات کار میکنه.
- حداکثر لات مجاز بر اساس مارجین (OrderCalcMargin)بیشترین حجمی که با یه بودجه مارجین مشخص میتونی تأمین کنی رو حساب میکنه. OrderCalcMargin اهرم واقعی، نوع محاسبه نماد (فارکس، CFD، فیوچرز) و ارز مارجین رو هم در نظر میگیره.
- ارزش پولی یک پوینت برای 1 لاتکوچکترین تغییر قیمت رو به ارز حساب تبدیل میکنه. رفتن از مسیر tick_value/tick_size اجباریه: روی طلا و شاخصها، یه تیک همیشه برابر یه پوینت نیست.
- لات نهایی: کلمپ دوگانه ریسک + مارجینسایز بر اساس ریسک و سقف مارجین رو تو یه تابع ترکیب میکنه: حجمی که انتخاب میشه همیشه محدودکنندهترینِ این دوتاست، نه برعکس.
- تریلینگاستاپ با گام حداقلی (ضد اسپم)حد ضرر رو فقط وقتی جابهجا میکنه که بهبودش از یه گام حداقلی بیشتر باشه — نمیذاره سرور با تغییرات یکپوینتی تو هر تیک پر بشه؛ که علت کلاسیک بلاک شدن درخواستهاست.
- رعایت SYMBOL_TRADE_STOPS_LEVELSL/TP ای که زیادی به قیمت فعلی نزدیکه رو میبره روی حداقل فاصلهای که بروکر اجازه میده — بدون این کنترل، OrderSend با خطای «Invalid stops» (retcode 10016) شکست میخوره.
- حد ضرر مجازی (نامرئی برای بروکر)سطح خروج رو تو حافظه نگه میداره و وقتی قیمت ازش رد شد، با سفارش بازار میبنده — حد ضرر هیچوقت روی سرور دیده نمیشه. فقط برای وقتی که EA بهصورت 24/7 روی VPS میچرخه.
- تشخیص حالت پر شدن پشتیبانیشده (FOK/IOC)ماسک SYMBOL_FILLING_MODE رو میخونه تا یه نوع پر شدن انتخاب کنه که سرور قبولش داره — فرستادن یه حالت پشتیبانینشده یکی از شایعترین علتهای خطای «Unsupported filling mode» هست.
- تشخیص تقاطع میانگینها (بدون ریپینت)دو مقدار آخرِ بستهشده MA تند و کند رو مقایسه میکنه: تقاطعی که تو کلوز تأیید شده دیگه «وا نمیره»، برخلاف آزمون روی کندلی که هنوز در حال شکلگیریه.
- تشخیص کندل جدیدتایماستمپ باز شدن کندل جاری رو با مقداری که ذخیره کرده مقایسه میکنه: یه بار اجرای منطق به ازای هر کندل، فارغ از جریان تیکها. نسخهای که با چند نماد هم سازگاره.
- ارزهای مرتبط با یک نماد (پایه، سود، مارجین)ارزهای یک نماد رو برای یک فیلتر خبری درستوحسابی استخراج میکنه: روی شاخصها و فلزات، ارز سود (معمولاً USD) تنها کلیدیه که میشه باهاش کار کرد؛ «ارز پایه» اونجا اصلاً یک ارز نیست.
- همبستگی Pearson بین دو نمادهمبستگی بازدهیها (نه قیمتهای خام که همیشه همبستگی رو بیش از حد نشون میدن) رو روی N کندلِ همترازشده با CopyClose حساب میکنه.
- اکسپوژر خالص به تفکیک ارزهر پوزیشن فارکس رو به اکسپوژر خرید/فروش برای هر ارز تجزیه میکنه (پایه خریدهشده، متقابل فروختهشده) تا تمرکز پنهان رو لو بده — سه معاملهی «متفاوت» میتونن در واقع یک شرط واحد روی USD باشن.
- قفل اتمیک بین EAها (SetOnCondition)GlobalVariableSetOnCondition یک عملیات test-and-set اتمیکه: فقط یکی از EAهای رقیب قفل رو میگیره و بقیه تمیز شکست میخورن — mutexِ فقرا توی MQL5.
- یکنواختی منحنی اکوییتی (R² بهعنوان معیار)خطی بودن منحنی اکوییتی رو با ضریب تعیین R² روی سودهای تجمعی معاملات میسنجه — یک اکوییتیِ خطمستقیم از همون مقدار سود که دندونهارّهای باشه باارزشتره.
- پیپ در برابر پوینت: تبدیل بر اساس digitsروی بروکر 5 رقمی، 1 پیپ = 10 پوینت؛ روی 3 رقمی (JPY) هم 1 پیپ = 10 پوینت، اما روی 2/4 رقمی 1 پیپ = 1 پوینت. این تابع ورودیهای «پیپی» رو همهجا قابلحمل میکنه.
- گرد کردن قیمت به tick size (نه NormalizeDouble)روی طلا، شاخصها یا فیوچرز، گامِ قیمتگذاری (SYMBOL_TRADE_TICK_SIZE) میتونه 0.25 یا 0.05 باشه: NormalizeDouble کافی نیست؛ باید قیمت رو به مضرب تیک کوانتیزه کنی.
- محافظ دراودان روزانه (محققشده + شناور)اکوییتی جاری (که شناور رو هم شامل میشه) رو با اکوییتی ابتدای روز مقایسه میکنه و تا از آستانه رد شد همهچیز رو میبنده — دقیقاً همون سنجهای که پراپفرمها رصد میکنن.
- امید ریاضی سیستم (expectancy بر حسب R)روی تاریخچه، وینریت و میانگین سود و میانگین ضرر و بعد امید هر معامله رو هم به ارز و هم به مضرب R حساب میکنه — همون تکعددی که میگه سیستم ارزش روشن موندن داره یا نه.
- تحلیل رشتههای برد و باخت (streaks)تاریخچه رو میچرخه تا درازترین رشته برد، درازترین رشته باخت و رشته در جریان رو اندازه بگیره و از روش یه توصیه برای سایزینگ بده — پایه آماری یه مدیریت سرمایه که زنده میمونه.