نمونه مشاور خبره

ساخت وبلاگ

Expert Advisor Sample

اصول توسعه برنامه های MQL4 در نمونه ایجاد یک سیستم مشاور مشاور متخصص ساده بر اساس نشانگر استاندارد MACD نشان داده شده است. در این مشاور خبره ، ما همچنین نمونه هایی از اجرای ویژگی هایی از قبیل تنظیم سطح سود را با پشتیبانی از توقف دنباله دار و همچنین بیشترین وسیله برای اطمینان از کار ایمن خواهیم دید. در مثال ما ، تجارت از طریق افتتاح و مدیریت یک موقعیت واحد انجام می شود.

  • ورود طولانی (خرید) - نشانگر MACD زیر صفر است ، به سمت بالا می رود و با خط سیگنال که به سمت پایین می رود عبور می کند.
  • ورودی کوتاه (فروش) - نشانگر MACD بالاتر از صفر است ، به سمت پایین می رود و با خط سیگنال به سمت بالا عبور می کند.
  • خروج طولانی - با اجرای محدودیت سود ، با اجرای توقف دنباله دار یا هنگامی که MACD از خط سیگنال خود عبور می کند (MACD بالاتر از صفر است ، به سمت پایین می رود و از طریق خط سیگنال به سمت بالا عبور می کند).
  • خروج کوتاه - با اجرای محدودیت سود ، با اجرای توقف دنباله دار یا هنگامی که MACD از خط سیگنال خود عبور می کند (MACD زیر صفر است ، به سمت بالا می رود و با خط سیگنال که به سمت پایین می رود عبور می کند).

توجه مهم: برای حذف تغییرات ناچیز نشانگر MACD ("Hillocks" کوچک در نمودار) از تجزیه و تحلیل ما ، ما یک اندازه گیری اضافی برای کنترل اندازه "Hillocks" ترسیم شده را به شرح زیر معرفی می کنیم: اندازه شاخص باید حداقل 5 باشدواحدهای حداقل قیمت (5*نقطه ، که برای USD/CHF = 0. 0005 و برای USD/JPY = 0. 05).

مرحله 1 - نوشتن توضیحات مشاور خبره

مکان نما ماوس را در بخش مشاوران متخصص از پنجره Navigator قرار دهید ، دکمه سمت راست ماوس را فشار داده و دستور "ایجاد یک متخصص جدید" را در منوی ظاهر انتخاب کنید. جادوگر اولیه مشاور خبره از شما می خواهد که داده های خاصی را وارد کنید. در پنجره ظاهر ، نام (نام) مشاور متخصص - نمونه MACD ، نویسنده (نویسنده) را بنویسید - نام خود را نشان دهید ، پیوند (پیوند) - پیوندی به وب سایت خود ، در یادداشت ها (یادداشت ها) - مثال آزموناز یک مشاور متخصص مستقر در MACD.

مرحله 2 - ایجاد ساختار اصلی برنامه

کد منبع مشاور متخصص آزمون فقط چندین صفحه را اشغال خواهد کرد ، اما حتی درک این حجم اغلب دشوار است ، به ویژه در مورد این که ما برنامه نویسان حرفه ای نیستیم - در غیر این صورت ، ما به هیچ وجه نیازی به این توضیحات نخواهیم داشت؟:)

برای به دست آوردن برخی از ساختار یک مشاور متخصص استاندارد ، اجازه دهید نگاهی به توضیحات ذکر شده در زیر بیندازیم:

  1. متغیرهای اولیه
  2. بررسی داده های اولیه
    • نمودار ، تعداد میله های موجود در نمودار را بررسی کنید
    • مقادیر متغیرهای خارجی را بررسی کنید: تعداد زیادی ، S/L ، T/P ، T/S
  3. تنظیم متغیرهای داخلی برای دسترسی سریع به داده ها
  4. بررسی ترمینال تجارت - آیا باطل است؟اگر بله ، پس:
    • چک: در دسترس بودن وجوه در حساب و غیره
    • آیا می توان موقعیت طولانی (خرید) را گرفت؟
      • یک موقعیت طولانی و خروج را باز کنید
  5. آیا می توان یک موقعیت کوتاه (فروش) گرفت؟
    • یک موقعیت کوتاه باز کنید و از آنجا خارج شوید
    • کنترل موقعیت هایی که قبلاً در چرخه باز شده بودند
      • اگر موقعیت طولانی باشد
        • باید بسته شود؟
        • آیا باید توقف دنباله دار تنظیم شود؟
        • باید بسته شود؟
        • آیا باید توقف دنباله دار تنظیم شود؟

        به نظر می رسد که بسیار ساده و فقط 4 بلوک اصلی است.

        حال اجازه دهید ما سعی کنیم قطعات کد را به صورت مرحله به مرحله برای هر بخش از طرح ساختاری تولید کنیم:

         

        1. اولیه سازی متغیرها کلیه متغیرهایی که در برنامه خبره مورد استفاده قرار می گیرند باید با توجه به نحو زبان متاکووت 4 اول تعریف شوند. به همین دلیل بلوک را برای اولیه سازی متغیرها در ابتدای برنامه وارد می کنیم

           

         
        بیرونی دو برابرTakeProfit =50; بیرونی دو برابرتعداد زیادی =0.1; بیرونی دو برابرtrailingStop =30; بیرونی دو برابرmacDopenlevel =3; بیرونی دو برابرmacDcloselevel =2; بیرونی دو برابرmatrendperiod =26;

        زبان متاکووت 4 با اصطلاح "متغیرهای خارجی" تکمیل می شود. متغیرهای خارجی را می توان بدون اصلاح کد منبع برنامه متخصص از خارج تنظیم کرد. این انعطاف پذیری اضافی را فراهم می کند. در برنامه ما ، متغیر matrendperiod به عنوان متغیر خارجی تعریف می شود. ما تعریف این متغیر را در ابتدای برنامه وارد می کنیم.

         
        بیرونی دو برابرmatrendperiod =26;
        // بررسی داده های اولیه // مهم است که اطمینان حاصل کنیم که متخصص با یک عادی کار می کند // نمودار و کاربر هیچ اشتباهی در تنظیم خارجی انجام نداد // متغیرها (تعداد زیادی ، Stoploss ، TakeProfit ، // trailingstop) در مورد ما ، ما TakeProfit را بررسی می کنیم // در نمودار کمتر از 100 میله if(میله100) <چاپ("میله های کمتر از 100"); برگشت(0);> if(TakeProfit10) <چاپ("استفاده کمتر از 10"); برگشت(0); // بررسی Profit>
        در نظر گرفتنشروع ()<دو برابرmacDcurrent ، macDprevious ، سیگنال سیگنال ؛دو برابرSignalPrevious ، Macrrent ، MapRevious ؛در نظر گرفتنCNT ، بلیط ، کل ؛// برای ساده سازی برنامه نویسی و سرعت بخشیدن به دسترسی // داده ها در متغیرهای داخلی قرار می گیرندmacDcurrent =imacd(خالی,0,12,26,9,close قیمت، mode_main ،0) ؛macDprevious =imacd(خالی,0,12,26,9,close قیمت، mode_main ،1) ؛سیگنالimacd(خالی,0,12,26,9,close قیمت، mode_signal ،0) ؛سیگنالimacd(خالی,0,12,26,9,close قیمت، mode_signal ،1) ؛mAcurrent =IMA(خالی,0، matrendperiod ،0,حالت_ما,close قیمت,0) ؛mapRevious =IMA(خالی,0، matrendperiod ،0,حالت_ما,close قیمت,1);
         
        کل =حاد(); if(کل 1) 

         

        • چک ها: در دسترس بودن وجوه در حساب و غیره قبل از تجزیه و تحلیل وضعیت بازار توصیه می شود وضعیت حساب خود را بررسی کنید تا مطمئن شوید که برای باز کردن موقعیت ، بودجه رایگان در آن وجود دارد.

           

         
        if(AccountFreeMargin ()<(1000*مقدار زیادی))<چاپ("We have no money. Free Margin keyword">برگشت(0);>
         
        // امکان موقعیت طولانی (خرید) را بررسی کنید if(MacDcurrent0 && MacdCurrent>سیگنال(MacdCurrent)>(MacDopenlevel*نقطه) && MaCurrent>MapRevious)سفارش دادن(سمبل() ، op_buy ، تعداد زیادی ، سؤال کردن ،3,0، بپرسید+TakeProfit*نقطه, "نمونه MACD",16384,0،سبز)؛if(ticket>0) <if(انتخاب کردن(بلیط ، select_by_ticket ، mode_trades))چاپ("خرید سفارش باز شد:",OrderOpenPrice());> دیگر چاپ("خطای باز کردن سفارش خرید:",گلیستور()); برگشت(0);>
        // امکان موقعیت کوتاه (فروش) را بررسی کنید if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MacDopenlevel*نقطه) و & macrrentسفارش دادن(سمبل() ، op_sell ، تعداد زیادی ، پیشنهاد ،3,0، پیشنهاد پرفش*نقطه, "نمونه MACD",16384,0،قرمز)؛if(ticket>0) <if(انتخاب کردن(بلیط ، select_by_ticket ، mode_trades))چاپ("سفارش فروش باز شد:",OrderOpenPrice());> دیگر چاپ("خطای باز کردن سفارش فروش:",گلیستور()); برگشت(0);> برگشت(0);>
         
        // ورود صحیح به بازار مهم است ، // اما خروج صحیح از آن مهمتر است. برای(CNT =0؛ cnt<انتخاب کردن(CNT ، select_by_pos ، mode_trades) ؛if(OrderType () // برای موقعیت باز شده بررسی کنیدordersymbol () ==سمبل()) // نماد را بررسی کنید 

        "CNT" - "یک متغیر چرخه است که باید در ابتدای برنامه به شرح زیر تعریف شود:

        int cnt = 0 ؛
        • اگر موقعیت طولانی باشد
         
        if(OrderType () == op_buy)// موقعیت طولانی باز می شود 

         

        • باید بسته شود؟شرط خروج از یک موقعیت طولانی: MACD با خط سیگنال آن عبور می کند ، MACD بالاتر از صفر است ، به سمت پایین می رود و توسط خط سیگنال به سمت بالا می رود.

           

         
        if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MacDcloselevel*نقطه)) 3، بنفش) ؛// موقعیت بستن برگشت(0); // خروج>
         
        // بررسی توقف دنباله دار if(TrailingStop>0) <if(Bid-OrderOpenPrice()>نقطه*TrailingStop)<if(Orderstoploss ()نقطه*TrailingStop ، OrderTakeProfit () ،0،سبز)؛برگشت(0);>>>

        ما بریس اپراتور را می بندیم.

         
        دیگر // به موقعیت کوتاه بروید 

         

        • باید بسته شود؟شرط برای خروج از یک موقعیت کوتاه: MACD با خط سیگنال آن عبور می کند ، MACD زیر صفر است ، به سمت بالا می رود و توسط خط سیگنال به سمت پایین می رود.

           

         
        if(MacDcurrent0 && MacdCurrent>SignalCurrent && macDprevious (MacDcloselevel*نقطه)) 3، بنفش) ؛// موقعیت بستن برگشت(0); // خروج>
         
        // بررسی توقف دنباله دار if(TrailingStop>0) <if((OrderOpenPrice()-Ask)>(نقطه*trailingstop))<if((OrderStopLoss()>(بپرسید+نقطه*TrailingStop)) ||(Orderstoploss () ==0)) نقطه*TrailingStop ، OrderTakeProfit () ،0،قرمز)؛برگشت(0);>>>

        بستن تمام براکت مجعد که باز است.

         
        >>> برگشت(0);>

        بنابراین ، به دنبال این روش گام به گام ، ما مشاور متخصص خود را نوشتیم.

        مرحله 3 - مونتاژ کد حاصل از برنامه

        بیایید تنظیمات مشاور Expert Advisor (با استفاده از یک دکمه یا یک خط در منوی "Properties") را باز کنیم. به ما پنجره ای پیشنهاد می شود که در آن باید تنظیمات خارجی پارامترهای کار را تعریف کنیم:

        بیایید تمام کد را از بخش قبلی جمع کنیم:

        //+------------------------------------------------------------------+ // |macd sample. mq4 | // |کپی رایت © 2005 ، Metaquotes Software Corp. | // |https://www. metaquotes. net/ | //+------------------------------------------------------------------+ بیرونی دو برابرTakeProfit =50; بیرونی دو برابرتعداد زیادی =0.1; بیرونی دو برابرtrailingStop =30; بیرونی دو برابرmacDopenlevel =3; بیرونی دو برابرmacDcloselevel =2; بیرونی دو برابرmatrendperiod =26; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ در نظر گرفتنشروع ()<دو برابرmacDcurrent ، macDprevious ، سیگنال سیگنال ؛دو برابرSignalPrevious ، Macrrent ، MapRevious ؛در نظر گرفتنCNT ، بلیط ، کل ؛// بررسی داده های اولیه // مهم است که اطمینان حاصل کنیم که متخصص با یک عادی کار می کند // نمودار و کاربر هیچ اشتباهی در تنظیم خارجی انجام نداد // متغیرها (تعداد زیادی ، Stoploss ، TakeProfit ، // trailingstop) در مورد ما ، ما TakeProfit را بررسی می کنیم // در نمودار کمتر از 100 میله if(میله100) <چاپ("میله های کمتر از 100"); برگشت(0);> if(TakeProfit10) <چاپ("استفاده کمتر از 10"); برگشت(0); // بررسی Profit> // برای ساده سازی برنامه نویسی و سرعت بخشیدن به دسترسی // داده ها در متغیرهای داخلی قرار می گیرندmacDcurrent =imacd(خالی,0,12,26,9,close قیمت، mode_main ،0) ؛macDprevious =imacd(خالی,0,12,26,9,close قیمت، mode_main ،1) ؛سیگنالimacd(خالی,0,12,26,9,close قیمت، mode_signal ،0) ؛سیگنالimacd(خالی,0,12,26,9,close قیمت، mode_signal ،1) ؛mAcurrent =IMA(خالی,0، matrendperiod ،0,حالت_ما,close قیمت,0) ؛mapRevious =IMA(خالی,0، matrendperiod ،0,حالت_ما,close قیمت,1) ؛کل =حاد(); if(کل 1) <// بدون سفارش باز شده شناسایی شده if(AccountFreeMargin ()<(1000*مقدار زیادی))<چاپ("We have no money. Free Margin keyword">برگشت(0);> // امکان موقعیت طولانی (خرید) را بررسی کنید if(MacDcurrent0 && MacdCurrent>سیگنال(MacdCurrent)>(MacDopenlevel*نقطه) && MaCurrent>MapRevious)سفارش دادن(سمبل() ، op_buy ، تعداد زیادی ، سؤال کردن ،3,0، بپرسید+TakeProfit*نقطه,"نمونه MACD",16384,0،سبز)؛if(ticket>0) <if(انتخاب کردن(بلیط ، select_by_ticket ، mode_trades))چاپ("خرید سفارش باز شد:",OrderOpenPrice());> دیگر چاپ("خطای باز کردن سفارش خرید:",گلیستور()); برگشت(0);> // امکان موقعیت کوتاه (فروش) را بررسی کنید if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MacDopenlevel*نقطه) و & macrrentسفارش دادن(سمبل() ، op_sell ، تعداد زیادی ، پیشنهاد ،3,0، پیشنهاد پرفش*نقطه,"نمونه MACD",16384,0،قرمز)؛if(ticket>0) <if(انتخاب کردن(بلیط ، select_by_ticket ، mode_trades))چاپ("سفارش فروش باز شد:",OrderOpenPrice());> دیگر چاپ("خطای باز کردن سفارش فروش:",گلیستور()); برگشت(0);> برگشت(0);> // ورود صحیح به بازار مهم است ، // اما خروج صحیح از آن مهمتر است. برای(CNT =0؛ cntانتخاب کردن(CNT ، select_by_pos ، mode_trades) ؛if(OrderType () // برای موقعیت باز شده بررسی کنیدordersymbol () ==سمبل()) // نماد را بررسی کنید <if(OrderType () == op_buy)// موقعیت طولانی باز می شود <// آیا باید بسته شود؟ if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MacDcloselevel*نقطه)) 3، بنفش) ؛// موقعیت بستن برگشت(0); // خروج> // بررسی توقف دنباله دار if(TrailingStop>0) <if(Bid-OrderOpenPrice()>نقطه*TrailingStop)<if(Orderstoploss () نقطه*TrailingStop)نقطه*TrailingStop ، OrderTakeProfit () ،0،سبز)؛برگشت(0);>>>> دیگر // به موقعیت کوتاه بروید <// آیا باید بسته شود؟ if(MacDcurrent0 && MacdCurrent>سیگنال(MacdCurrent)>(MacDcloselevel*نقطه)) 3، بنفش) ؛// موقعیت بستن برگشت(0); // خروج> // بررسی توقف دنباله دار if(TrailingStop>0) <if((OrderOpenPrice()-Ask)>(نقطه*trailingstop))<if((OrderStopLoss()>(بپرسید+نقطه*TrailingStop)) ||(Orderstoploss () ==0)) نقطه*TrailingStop ، OrderTakeProfit () ،0،قرمز)؛برگشت(0);>>>>>> برگشت(0);> // پایان.

        برای پیکربندی نهایی مشاور متخصص ما ، فقط مقادیر متغیرهای خارجی "تعداد = 1" ، "ضرر متوقف (S/L) = 0" (استفاده نشده است) ، "سود (T/P) = 120" را مشخص کنید (مناسب برای فواصل یک ساعته) ، "توقف دنباله دار (T/s) = 30". البته می توانید ارزشهای خود را تنظیم کنید. دکمه "کامپایل" را فشار دهید و در صورت عدم وجود پیام خطایی (به هر حال ، می توانید متن را از لیست بالا در متائیتور کپی کنید) ، برای ذخیره مشاور متخصص ، دکمه "ذخیره" را فشار دهید.

        هشدار: کلیه حقوق این مواد توسط Metaquotes Ltd. کپی یا چاپ مجدد این مواد به طور کامل یا جزئی محفوظ است.

فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید

برچسب : نویسنده : آرش اصل زاد بازدید : <-PostHit-> تاريخ : پنجشنبه 29 تير 1402 ساعت: 15:17