مدت :

۹۰ دقیقه (فشرده)

قیمت : ۲۴۰,۰۰۰ تومان
روزآمدی: آذر ۱۴۰۲
LinkedIn
Twitter
Facebook
Telegram

درباره مدرس 

اطلاعات دوره

توضیحات

به فضای آموزش تکمیلی ساخت اکسپرت متاتریدر با زبان MQL5 خوش آمدید. هدف ما ساخت ربات معامله‌گر برای اجرا در بازارهای دو‌طرفه به صورت فشرده و با بهای مناسب است. این آموزش تکمیلی ساخت اکسپرت با MQL5 در واقع ادامه دو آموزش مقدماتی ساخت اکسپرت با زبان MQL5 (+) و آموزش پیشرفته ساخت اکسپرت با زبان MQL5 (+) است. در آن دو بسته ما به آموزش اکسپرت نویسی پرداختیم و شما با امکانات زبان MQL5 آشنا شدید.

در این بسته تکمیلی تمام مطالب گفته شده را کنار هم جمع می‌کنیم و چند اکسپرت حرفه ای می‌سازیم. یاد می‌گیرید که برای اکسپرت یک تمپلت (Template) بسازید و همه امکانات از جمله زمان بند، حد ضرر و … را در آن تعریف کنید استفاده از آن‌ها میتوانید هر استراتژی را تبدیل به اکسپرت با امکانات مختلف کنید.

مثال‌ها و اکسپرت های ساخته شده در این بسته آموزشی براساس بازارهای دوطرفه است و اما شما با یاد‌گیری اصول برنامه نویسی و امکانات زبان MQL5 می توانید برای هر استراتژی معاملاتی و هر بازار مالی اکسپرت بسازید.

توجه: 

  1. پیش از دیدن این آموزش باید حتما دو بسته آموزش مقدماتی MQL5 (+) و آموزش پیشرفته MQL5 (+) را دیده باشید.

 

آموزش در یک نگاه: 

در آغاز این بسته آموزش اکسپرت نویسی ما یک تمپلت Template تعریف می‌کنیم. داخل این Template تمام تابع ها و کلاس هایی که در فصل های قبل تعریف کردیم را کنار هم قرار می‌دهیم. سپس با استفاده از این Template می‌توانیم اکسپرت‌های مختلف تعریف کنیم.

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

بجز این موارد می‌توانیم از حدضررثابت (Stop Loss) یا حدضررپویا (Trailing Stop) و حدسود (Take Profit) برای بستن سفارش‌ها استفاده کنیم.

در ادامه آموزش به کمک این Template آماده یک اکسپرت می‌سازیم. در این اکسپرت از اندیکاتور Moving Averageبرای گرفتن سیگنال ورود استفاده می‌کنیم. هر زمان که دو اندیکاتور Moving Average با دوره‌های مختلف با هم برخورد کنند، سفارش برای ما ارسال می‌شود.

داخل اکسپرت از حدضررپویا (Trailing Stop) و حد سود (Take Profit) برای بستن سفارش استفاده می‌کنیم. در آخر اکسپرت را اجرا و نتیجه را بررسی می‌کنیم.

در بخش بعد Pending Template را تعریف می‌کنیم که تمام ویژگی‌های Template قبل را دارد. علاوه بر این با اکسپرت‌هایی که با Pending Template ساخته می‌شوند، می‌توان سفارش شرطی ارسال کرد.

در درس بعد با Pending Template یک اکسپرت ساختیم. داخل اکسپرت از قیمت کندل‌ها برای گرفتن سیگنال ورود استفاده کردیم. در هر کندل جدید سفارش شرطی از نوع Buy Stop روی بیشترین قیمت و یک سفارش Sell Stop روی کمترین قیمت هشت کندل اخیر ارسال می‌کنیم. حالا اگر قیمت کندل به یکی از قیمت‌ ها برسد سفارش در آن کندل ثبت می‌شود و در غیر این صورت با باز شدن کندل جدید سفارش‌های شرطی ثبت نشده حذف می‌شوند و سفارش جدیدی متناسب با بیشترین قیمت هشت کندل اخیر ارسال می‌شود.

نقطه Stop Loss را روی کمترین قیمت هشت کندل اخیر تعریف و سپس اکسپرت شرطی را اجرا و نتیجه را بررسی می‌کنیم.

تمام سورس کدها به فیلم آموزشی هر درس پیوست شده است.

 

یک مسیر آموزش کامل اکسپرت نویسی: 

پلتفرم MetaTrader بستری برای اجرا و ساخت اکسپرت معامله گر است. شما با یادگیری زبان MQL5 و آشنایی با تابع های داخلی زبان MQL5 می‌توانید برای هر استراتژی که دارید اکسپرت طراحی کنید. بعد اکسپرت ها را در محیط متاتریدر روی نماد مورد نظر خود اجرا کنید.

در بسته مقدماتی آموزش ساخت اکسپرت (+) ما ابتدا با زبان MQL5 آشنا شدیم. در ادامه ی آموزش ساخت اکسپرت در متاتریدر، یاد گرفتیم که چطور با زبان MQL5 و تابع های پیش‌فرض آن سفارش خرید و فروش ارسال کنیم.

بعد یک اکسپرت ساده ساختیم که براساس مقایسه قیمت با مقدار اندکاتور Moving Average سفارش خرید را در شرایط مناسب برای ما ارسال می‌کرد. در درس بعد با استفاده از شی گرایی کلاس CTrade را برای ارسال سفارش ها ایجاد کردیم.

در فصل آخر هم راجع به سفارش های شرطی صحبت کردیم. یاد گرفتیم که چطور با زبان MQL5 و تابع های پیش‌فرض آن در قیمت مورد نظر سفارش ارسال کنیم (ربات یا اکسپرت ما ارسال کند).

اما در این بسته آموزش پیشرفته اکسپرت نویسی MQL5 یاد می گیریم که چطور اکسپرت های حرفه‌ای بسازیم. تا با اکسپرت ها بتوانیم در بازارهای مختلف معامله سودآور داشته باشیم.

برای ساخت اکسپرت حرفه‌ای ابتدا باید یک استراتژی برای معاملات خود طراحی کنید. بعد از اینکه به یک استراتژی رسیدیم حالا باید بتوانیم با تابع های زبان MQL5 استراتژی خود را پیاده‌سازی کنیم. معمولاً برای پیدا کردن لحظه ورود به معاملات از اندیکاتورهای مختلف و رابطه آن‌ها با قیمت سهم استفاده می‌کنیم.

ما در آموزش ساخت اکسپرت در متاتریدر یاد می‌گیریم که چطور از اندیکاتورهای مختلف و قیمت مختلف کندل ها در اکسپرت ها استفاده کنیم. علاوه بر این معمولاً نقطه خروج یا زمان بستن سفارش را با حدضرر تعریف می‌کنیم.

ما یاد می‌گیریم که چطور برای اکسپرت ها حدضرر پویا (Trailing Stop) تعریف کنیم. حدضرر پویا (Trailing Stop)، حدضرری است که متناسب با قیمت سهم در هر کندل محاسبه می‌شود.

و در نهایت هم با محاسبه حجم بهینه، سفارش، سرمایه خود را متناسب با حداکثر ریسکی که می‌توانیم روی کل سرمایه تحمل کنیم مدیریت کنیم و به این ترتیب می‌توانیم اکسپرت های حرفه‌ای بسازیم.

 

آموززه‌های اصلی 

اکسپرت‌هایی که با کدهای فایل Template و Pending Template ساختیم چند ویژگی مهم دارند:

  • می‌توانید حد ضرر را با افزودن نقطه StopLoss و TakeProfit به سفارش‌ها مدیریت کنید.
  • با محاسبه حجم بهینه سفارش برای مدیریت پول می‌توانید جلوی ورشکستگی را بگیرید.
  • امکان تعریف حدضرر شناور یا پویا (Trailing Stop) برای سفارش‌ها وجود دارد.
  • می‌توانید برای سفارش‌ها Break Even برای سفارش‌ها تعریف کنید.
  • می‌توانید از اطلاعات کندل‌ها برای طراحی استراتژی معاملاتی در اکسپرت استفاده کنید.
  • شما می‌توانید از اندیکاتورهای مختلف برای طراحی استراتژی معاملاتی استفاده کنید.
  • سرانجام شما می‌توانید زمان مشخصی را برای شروع خودکار اجرای اکسپرت تعریف کنید.

همچنی ما تمام سورس کدها را به فیلم‌های آموزشی پیوست کرده‌ایم تا بتوانید سنگ محک مناسبی داشته باشید.

 

این آموزش بی‌نظیر است زیرا:

 

پیشنیاز:

 

کلیدواژگان:

معامله الگوریتمی | اکسپرت ادوایزر | expert advisor | آموزش ساخت اکسپرت فارکس | فیلم آموزش اکسپرت نویسی فارکس | forex robot | آموزش forex | ساخت ربات معامله گر | آموزش mql5 | متاتریدر | Cryptocurrency bot | ربات معامله گر رمزارز | block chain | اکسپرت mql5 | اکسپرت فارکس | برنامه نویسی فارکس | مدیریت سرمایه | money management | مدیریت ریسک | زمان بندی ربات معامله گر | trade timing | حد ضرر پویا | trailing stop | اجرای معامله شرطی | pending order | تعیین حد سود و ضرر در اکسپرت | takeprofit | stoploss | ساخت تمپلت | مووینگ اورج | ارزیابی اکسپرت 

ریز محتوای فیلم‌ها

ریز محتوای فیلم‌ها

درس صفر: معرفی دوره

  • پیشنیاز دوره
  • مخاطب دوره
  • آنچه در دوره گفته شده است.

 

درس یکم: مقدمه

  • مرور مطالبی که در بسته مقدماتی ساخت اکسپرت با MQl5 گفته شده است.
  • مرور مطالبی که در 5 فصل بسته پیشرفته ساخت اکسپرت با MQl5 گفته شده است.

 

درس دوم:  تعریف Template – بخش اول

  • ایجاد فایل Template.mq5
  • include کردن فایل Trade.mgh و ساخت ابجکت Trade از کلاس CTrade
  • include کردن فایل Price.mgh و ساخت ابجکت Price از کلاس Cbars
  • include کردن فایل MoneyManagement.mgh
  • include کردن فایل TrailingStops.mgh و ساخت ابجکت Trail از کلاس Ctrailing
  • include کردن فایل Timer.mgh و ساخت ابجکت Timer از کلاس Ctimer و ساخت ابجکت NewBar از کلاس CnewBar
  • include کردن فایل Indicators.mgh
  • تعریف تنظیمات  ارسال سفارش در آغاز هر کندل بصورت Input Variables
  • تعریف تنظیمات محاسبه حجم بهینه به بصورت Input Variables
  • تعریف تنظیمات نقطه حد ضرر و حدسود به بصورت Input Variables
  • تعریف تنظیمات محاسبه نقطه TrailingStop و BreakEven به بصورت Input Variables
  • تعریف تنظیمات Timer به بصورت Input Variables
  • معرفی متغیر Static Input Variables

 

درس سوم : تعریف Template – بخش دوم

  • نوشتن کدهای مربوط به فعال سازی Timer در اکسپرت ها
  • نوشتن کدهای مربوط به ارسال سفارش در آغاز هر کندل
  • نوشتن کدها برای استفاده از TrailingStop در اکسپرت ها
  • نوشتن کدهای مربوط به محاسبه حجم بهینه سفارش
  • ارسال سفارش خرید و اضافه کردن نقطه حدضرر و حد سود به سفارش
  • ارسال سفارش فروش و اضافه کردن نقطه حدضرر و حد سود به سفارش

 

درس چهارم :  تعریف اکسپرت با استفاده از Template

  • ساخت فایل جدید EA با نام Moving Average Cross.mq5
  • کپی کردن کدهای فایل Template.mq5 در Moving Average Cross.mq5
  • فراخوانی دو اندیکاتور میانگین متحرک با دوره های مختلف در اکسپرت
  • تعریف شرایط ارسال Order Buy
  • تعریف شرایط ارسال Order Sell
  • اجرای اکسپرت و بررسی آن
  • استفاده از امکانات مختلف برای سودآوری بیشتر

 

درس پنجم:  تعریف Pending Template

  •  ایجاد فایل  Pending Template.mq5
  • include کردن فایل Trade.mgh و ساخت ابجکت Trade از کلاس CTrade
  • include کردن فایل Price.mgh و ساخت ابجکت Price از کلاس Cbars
  • include کردن فایل MoneyManagement.mgh
  • include کردن فایل TrailingStops.mgh و ساخت ابجکت Trail از کلاس Ctrailing
  • include کردن فایل Timer.mgh و ساخت ابجکت Timer از کلاس Ctimer و ساخت ابجکت NewBar از کلاس CnewBar
  • include کردن فایل Indicators.mgh
  • include کردن فایل Pending.mqh و ساخت ابجکت Pending از کلاس CPending
  • تعریف تنظیمات  ارسال سفارس در آغاز هر کندل بصورت Input Variables
  • تعریف تنظیمات محاسبه حجم بهینه به بصورت Input Variables
  • تعریف تنظیمات نقطه حد ضرر و حدسود به بصورت Input Variables
  • تعریف تنظیمات محاسبه نقطه TrailingStop و BreakEven به بصورت Input Variables
  • تعریف تنظیمات Timer به بصورت Input Variables
  • نوشتن کدهای مربوط به فعال سازی Timer در اکسپرت ها
  • نوشتن کدهای مربوط به ارسال سفارش در آغاز هر کندل
  • نوشتن کدها برای استفاده از TrailingStop در اکسپرت ها
  • نوشتن کدهای مربوط به محاسبه حجم بهینه سفارش
  • ارسال Order BuyStop و اضافه کردن نقطه حدضرر و حد سود به سفارش
  • ارسال Order SellStop و اضافه کردن نقطه حدضرر و حد سود به سفارش

 

درس ششم : تعریف اکسپرت با استفاده از Pending Template – بخش اول

  • تعریف عملکرد اکسپرت
  • ساخت فایل جدید EA با نام PendingOrderBreakout.mq5
  • کپی کردن کدهای فایل PendingTemplate.mq5 در PendingOrder Breakout.mq5
  • بیرون کشیدن بیشترین قیمت High هشت کندل اخیر با تابع HighestHigh
  • بیرون کشیدن بیشترین قیمت Low هشت کندل اخیر با تابع LowestLow
  • ارسال BuyStop روی بیشترین قیمت High هشت کندل اخیر با حدضرر کمترین قیمت Low هشت کندل اخیر
  • ارسال SellStop روی کمترین قیمت Low هشت کندل اخیر با حدضرر بیشترین قیمت High هشت کندل اخیر
  • اجرای اکسپرت و بررسی آن
  • استفاده از امکانات برای سودده شدن اکسپرت

 

درس هفتم: جمع بندی

  • جمع بندی مطالبی که در این فصل آموختیم
  • مسیرهای پیش رو
نظرات (74)

74 دیدگاه برای آموزش ساخت اکسپرت متاتریدر ــ بسته تکمیلی

  1. Mahdi.Asgarizad (خریدار محصول)

    خانم مهندس سلام و عرض تبریک سال نو
    بنده تمام ویدئو های شما رو دیدم و کار کردم
    یک اکسپرت طراحی کردم اما زمانی که سیستم خاموشه کار نمی کنه چرا ؟ متا تریدر هم تنظیمات خاصی نداره که انجام بدم ؟
    فقط وقتی سیستم روشنه اکسپرت کار می کنه
    خواهشا پاسخ بنده را بدهید

    • مصطفی آصفی

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

  2. Mahdi.Asgarizad (خریدار محصول)

    خانم مهندس سلام
    ممنون بابت زحماتی که دری راستای آموزش متحمل می شوید
    ادامه آموزش های شما را دارم با سوکت نویسی ادامه می دم .
    پست قبلی را در خصوص واگرایی حتی اشاره ای هم بفرمائید ممنون می شوم .
    خانم مهندس سوال دیگر هم اینکه شاید برای خیلیا سوال بشه :
    بنده اکسپرت رو که در شرایط ریل فعال کردم بعد گرفتن یک پوزیشن در پوزیشن بعدی خطا داد با پشتیبانی بروکر صحبت کردم گفت فاصله بین باز و بسته شدن معاملات باید حداقل 3 ثانیه باشه وگرنه سرور ها مختل میشن با چه تابعی این کار رو کنم یعنی مدت 4 ثانیه فاصله بندارم بین بسته شدن پوزیشن قبلی و باز شدن پوزیشن بعدی با sleep() میشه یا راه دیگیری دارد

  3. Mahdi.Asgarizad (خریدار محصول)

    خانم مهندس سلام و با آرزوی موفقیت
    در خصوص واگرایی ها مثلا آر اس آی ممنون میشم راهنمایی و اشاره ای بفرمائید چگونه در اکسپرت استفاده کنیم.

  4. Mahdi.Asgarizad (خریدار محصول)

    عرض سلام و درود حانم مهندس کرمی .
    بسیار سپاسگذارم بابت اینکه پاسخ بنده را دادین.
    بنده هم با آموزشهای شما از صفر شروع کردم و با شما قدم برداشتم تا به این نقطه رسیدم.
    هر چه هست بعد از خدا در این مسیر از تلاش شما استاد عزیز و تیم همرویش دارم.
    و به امید خدا در ادامه مسیر با پیش زمینه ای که از پایتون دارم و آموزشهایی که شما و مهندس آصفی در این خصوص تدارک دیدید ادامه خواهم داد.
    با آرزوی سر بلندی و موفقیت شما و همکارنتان .

  5. Mahdi.Asgarizad (خریدار محصول)

    عرض سلام و درود بر شما خانم مهندس کرمی
    حانم مهندس این مشکل مربوط به تابع کلوز را با اضافه نمودن یک حلقه for و تعریف یک متغیر سراسری حل کردم
    ببخشید در این خصوص زیاد به شما پیام دادم
    سپاسگزارم

    • معصومه کرمی

      سلام و سپاس که تجربه خودتون رو به اشتراک گذاشتین.

      پی‌نوشت: پوزش که نتونستم کمکتون کنم. واقعیت اینه که تو این بخش تمرکز بنده پاسخ به مشکلات فراگیران در رابطه مستقیم با محتوای دوره‌ها هست و به دلیل مشغله فراوان نمی رسم که پروژه های بیرونی همراهان گرامی مثل شما رو بررسی کنم. متشکرم از دید مناسبتون و این که نتیجه رو هم حتی گزارش کردین.

  6. Mahdi.Asgarizad (خریدار محصول)

    مشکل پست قبلی رو یه جور دیگه توضیح می دم :
    ربات فقط مودیفای ، تریلینگ ، بریک ایون و کلوز قسمتی از حجم را انجام می دهد :
    مشکل بنده در تابع کلوز هست وقتی که معامله در سود می افتد و به سود مورد نظر می رسد پوزیشن کلا بسته می شود نه مقداری از پوزیشن که به ربات پاس داده شده . دیباگ کردم به این نتیجه رسیدم که در شرط تابع کلوز چون بزرگتر مساوی گذاشتم سود بیشتر از حد مورد نظر که میشه در تیک اول همان مقدار حجم مورد نظر را می بندد و در تیک دوم به بعد هم شرط صحیح هست پس کل پوزیشن رو می بنده بنظرم باید دستوری داد که در تیک دوم به بعد نتونه دیگه بقیه پوزیشن را ببندد
    فایل ها رو به ایمیلتون فرستادم
    بازم ممنون حانم مهندس بنده فقط دسترسی راهنمایی به شما دارم .
    صبوری شما در این مسیر برای بنده قابل ستایش است .
    فایل ها رو به ایمیلتون فرستادم
    سپاس

  7. Mahdi.Asgarizad (خریدار محصول)

    حانم مهندس بنده کد را در قسمت تماس با مدرس می فرستم به ایمیلتون
    سپاس

  8. Mahdi.Asgarizad (خریدار محصول)

    عرض سلام و آرزوی موفقیت برای شما خانم مهندس کرمی
    خواستم یادآوری کنم در خصوص مشکل ذیل اگر ممکنه کمکم کنید
    سپاسگذارم

  9. Mahdi.Asgarizad (خریدار محصول)

    سلام خانم مهندس کرمی
    در استقاده از تابع کلوز مشکلی خوردم امیدوارم بتونید کمکم کنید.
    تا جایی که پوزیشن در سود مدنظر می رسد تعریف کردم در ورودی های ربات مثلا یورو یو اس دی : به مقدار 100 پیپت که در سود رفتی از کل حجم 0.05 ، مقدار 0.02 را خارج شو
    اما به مقدار 100 پیپت که می رسه همه پوزیشن رو می بنده ؛ انگار که در تیک اول 0.02 سپس بقیه رو در تیک بعدی
    دیباگ هم کردم دقیقا به این نتیجه رسیدم
    شرط خروج هم ضمن تعریف ورودی های ذیل :
    input bool AutoFairProfit = false;
    input int FairProfit = 0;

    currentProfit = openPrice – ask;
    if((AutoFairProfit == true && currentProfit >= Hilf_hhll) || currentProfit >= FairProfit1)
    احساس می کنم چون بیشتر مساویه و محدودیت نداره ، سود که بیشتر از حدی می شه که به عنوان ورودی دادم بعد از اون در هر تیک چک می کنه شرط درسه بقیه حجم رو هم خارج می شه .
    ممنون میشم در حل این مشکل کمکم کنید.
    سپاس

    • معصومه کرمی

      سلام متاسفانه من کدتون رو کامل ندیدم و با این توضیح که دادین متوجه نشدم مشکل کجاست.

  10. mahdi.cs (خریدار محصول)

    سلام و درود بر شما خانم مهندس کرمی همچنین تیم همرویش
    سپاسگزارم بابت پاسخ به سوالات
    در خصوص سوال آخر راه حل عالی ارائه دادین اما با کمی تغییرات اعمال کردم و حل شد .
    اگر برای ربات بخواهیم لایسنس (اعتبار کارکرد)بگذاریم چه باید کرد ؟

    • معصومه کرمی

      سلام مجدد باید اطلاعات اکانت کاربر را داخل اکسپرت ذخیره کنید. و شرط بزارید که فقط اکسپرت روی این حساب اجرا شود

  11. mahdi.cs (خریدار محصول)

    توضیحی بدم در خصوص مشکل پست قبل : ایده ای که دارم که دوست داشتم با کاربران هم رویش و سودگاه هم به اشتراک بگذارم امید است کار ساز باشد ربات کمک معامله گر هست بطوریه معامله گر با استفاده از هوش و تجربه خودش وارد پوزیشن می شود و با توجه به شرایط پوزیشن از باکس 9-26-52 و یا اعدادی نظیر این برای تارگت گذاری تریلینگ ، بریک ایون و حتی کاهش درصدی ازحجم بعداز اینکه پوزیشن مقداری در سود افتاد ، استفاده می کند .
    تفکر بنده این هست هیچ رباطی نظیر ذهن انسان نیست اگر خود را باور داشته باشیم چون ربات ها هر چقدر سود ده باید اپتیمایز و آپدیت شوند و اما لحظه باز نمودن پوزیشن را انسان بهتر از ربات تشخیص می دهد چون مغز در آن شرایط پارامترهای بیشتری را دخیل می داند این موارد را که عرض کردم با سالها تحقیق در خصوص ماشین لرنینگ و هوش مصنوعی بدست آوردم
    حال خانم مهندس کرمی ضمن تشکر و قدر دانی از شما بابت تعهد و رسیدگی به مشکلات کاربرانی چون ما که حقیقتا قابل تحسین و ستایش است ؛ اگر نمی شود مقدار را در ایون هندلر onthick طوری ذخیره نمود که در در کندل های بعدی تغییر نکند آیا راه حلی برای این مشکل هست یا خیر
    چون در این ربات دقیقا مقادیر هایرهای و لورلو ثبت شده در زمان باز شدن پوزیشن مهم است نه کندل شماره صفر

  12. mahdi.cs (خریدار محصول)

    سپاس از شما خانم مهندس بابت پاسختان به سوال قبلی
    خانم مهندس یه سوال داشتم نمی دونم چگونه توضیح دهم : راهی هست برای اینکه متغیری را که در داخل ایون هندلر ontick استفاده می کنیم و در هر تیک مقدارش تغییر می کند را طوری ذخیره کنیم که در همان اولین تیک که مقدارش را به متغیری دادیم در تیک های بعدی و یا بعبارتی در کندلهای بعدی که زده شد دیگر مقدارش تغییر نکند
    مثال : در خصوص یکی از توابعی که شما زحمت کشیدین تعریف نمودید و مقدار هایر های و لورلو 20 کندل قبل رو به ما می دهد حال در اکسپرت بنده اینگونه تعریف کردم که با استفاده از مقدار تفاضل هایرهای و لور لو 26 کندل قبل بتواند توابع tp و sl و تریلینگ استاپ و بریک ایون را بطور اتومات محاسبه کند نه بر اساس پیپت
    مودیفای کردن پوزیشن را بر این اساس درست انجام میدهد اما زمان تریلینگ استاپ و یا بریک ایون چون چند کندل از زمان باز شدن پوزیشن گذشته دیگر مقادیر قبلی هایرهای و لورلو جای خود را در حافظه به مقدار محاسبه شده از کندل صفر تا 26 کندل قبل می دهد

    //1-Computing higher high and lower low
    double hHigh = HighestHigh(_Symbol,_Period,HighLowBars);
    double lLow = LowestLow(_Symbol,_Period,HighLowBars);
    double distance_hhll = hHigh-lLow;
    double Hilf_hhll = distance_hhll/2;
    double Quarter_hhll = distance_hhll/4;
    double Third_hhll = distance_hhll/3;

    • معصومه کرمی

      سلام بله این امکان وجود داره شما میتونید یک متغیر سراسری خارج از event ها تعریف کنیم ( int test = 0)بعد داخل OnInit اول یک شرط بنویسید که اگر مقدار متغیر سراسری شما صفر بود اونوقت مقداری مورد نظرتون رو داخل متغیر test ذخیره کنید در این صورت بیشترین قیمت و کمترین قیمت در اجرای اول رو داخل یک متغیر جدا ذخیر میکنید.
      if (test =! 0)
      {
      test = hHigh-lLow
      }

  13. mahdi.cs (خریدار محصول)

    سلام و درود خانم مهندس دوره عالیه
    تشکر و قدردانی بایت زحمات شما و تیم هم رویش همچنین استاد آصفی
    بنده با دیدن آموزش ها چند تا ربات طراحی کردم
    منتها چند خطا میدن در زمان بریک ایون و تریلینگ استاپ و با تهیه بسته دیباگ تونستم خطاها رو دیباگ کنم و تقلیل بدم اما این خطای ذیل که فرستادم خیلی وقتمو گرفته
    به این صورت که در شرایط لایو بازار که تست میشه ، ربات پوزیشن می گیره تا کمی وارد سود میشه و با توجه به تایید شرایط تریلینگ استپ و یا بریک ایون پوزیشن سریع بسته میشه و خطای ذیل رو میده بی زحمت راهنمایی کنید سپاس خانم مهندس

    10036

    TRADE_RETCODE_POSITION_CLOSED

    Position with the specified POSITION_IDENTIFIER has already been closed

    • معصومه کرمی

      سلام وقت شما بخیر خطایی که شما دریافت کردن یعنی تیکت سفارش که قراره بسته بشه درست نیست قبل از اینکه تیکت سفارش رو به تابع Close پاس بدین با تابع PositionSelectByTicket پوزیشن مورد نظرتون رو Select کنید.

  14. shynrouzbahani (خریدار محصول)

    سلام استاد ،من با ارور ۱۰۰۲۷ وقتی اکسپرتو اجرا میکنم رو به رو میشم باید چیکار کنم؟ اکسپرتمم همین کراس موینگ هست ممنونم

    • معصومه کرمی

      سلام شما اجرای اکسپرت روی حسابتون رو فعال نکردید از مسیر زیر اجرای اکسپرت و ارسال سفارش توسط اکسپرت را فعال کنید.
      Tools>Options>ExpertAdvisor>AllowAlgoritmicTrading

  15. Sajjad

    سلام مهندس کرمی
    وقت بخیر
    با دیدن تمام آموزه های پیشنیاز و پیشرفته میتونیم با تمرین هر استراتژی معاملاتی که در ذهنمون هست رو بدون محدودیت(مثل استراتژی هایی که بر پایه ساختار بازار هستند و اندیکاتوری ندارند یا استراتژی هایی که صرفا بر اساس تجاربمون هستند)تبدیل به اکسپرت کنیم؟

    • معصومه کرمی

      سلام طبیعتا خیر شما ممکن بینهایت ایده برای ساخت اکسپرت داشته باشید این آموزش از صفر ساخت اکسپرت اکسپرت رو به شما آموزش میده و بعد تو بسته پیشرفته امکانات حرفه ای به اکسپرت هاتون میتونید اضافه کنید و بعد اصول زبان MQL5 و اکسپرت نویسی رو بلد هستید حالا با جستجو و تلاش میتونید ایدهاتون رو به اکسپرت تبدیل کنید

  16. poodineh.mohammadreza73 (خریدار محصول)

    سلام خانم کرمی خسته نباشید .
    تو بخش stop loss calculation functions میشه به جای عدد ثابت برای pStopPoint یک تابع مثلا کراس دو خط مویینگ اوریج استفاده کرد برای مشخص شده میزان ضرر وارد شده؟ میخوام حد ضرر به صورت داینامیک باشه و در صورت اینکه معامله با ضرر بسته شد به اندازه ضررم در معامله بعدی حجم اضافه کنم
    تشکر لطفتان پایدار

  17. شهباز طارمی

    سلام برای این توانایی چه آموزشی و چه پیش نیازی را بایستی پاس کنیم؟خود فارکس هم اموزش میدهید؟

  18. سلمان

    سلام خانم کرمی
    ضمن تشکر بابت آموزشهای خوب و مفیدتون لطفا بفرمایید کاری که اینجا با زبان mql یاد میگیریم چه تفاوتی با نرم افزار forex strategy bp داره ؟ استحضار دارید که در اونجا به راحتی میشه ربات ساخت و در محیط متاتریدر ازش بک تست هم گرفت و نیازی به این همه زحمت نیست. ممنون از راهنماییتون.

    • معصومه کرمی

      سلام و ممنون از سوال خوبتون.
      ببینید ساخت اکسپرت به صورت گرافیکی ایده بسیار خوبیه ولی خب کدنویسی یعنی داشتن اختیارات بیشتر. برای نمونه:
      ۱- شاید نیاز داشته باشین که داده‌های بازار رو در اکسپرتی رو تحلیل و چیزی رو مثلا ضرایب آلفا و بتا و … رو استخراج کنیم (آموزش اتصال متاتریدر به پایتون).
      ۱.۵- شاید نیاز داشته باشین که اکسپرتی مبتنی بر یادگیری ماشین و شبکه‌های عصبی عمیق بسازید.
      ۲- شاید قرار نیست اکسپرت معامله گر بسازین. شاید بخواهین اکسپرتی بسازین که مثلا پنل معاملاتی اختصاصی شما باشه. یا اکسپرتی که گزارش‌های خاصی به شما بده. مثلا این اکسپرت اتصال متاتریدر به تلگرام (+) رو ببینید.
      ۲.۵- شاید نیاز داشته باشین که سبک خاصی از استراتژی مثلا پرایس اکشن رو پیاده سازی کنید که با امکانات گرافیکی پیش فرض میسر نباشه.
      ۳- شاید پول کافی برای خرید فارکس استراتژی بیلدر نداشته باشید. البته متاسفانه در ایران برای نرم‌افزارهای خارجی نسخه‌های کرک شده استفاده میشن.
      ۴- شاید در آینده از چت جی پی تی بخواهین که براتون استراتژی خاصی رو کدنویسی کنه. با دانش برنامه نویسی در آینده می تونید کدهای تولیدشده توسط مدل‌های زبانی (به ویژه چت جی پی تی) رو به سادگی درک و استفاده کنید.
      ۵- ممکنه بخواهین اکسپرتی بسازین که در کنار فارکس در بورس ایران هم اجرا بشه. درسته که معامله خودکار در بورس برای اشخاص حقیقی فعلا محدوده ولی سیگنال گیری به وسیله اکسپرت و یا ساخت اکسپرت‌های یوتیلیتی مشکلی نداره.
      در پایان با وجود مثال‌های بالا دقت کنید که هر ابزاری برای نیازی ساخته شده و ممکنه الان نیاز شما یادگیری کدنویسی نباشه. باید به نیازمون دقت کنیم.

  19. ساسان صدفی (خریدار محصول)

    سلام خسته نباشید
    چجوری اطلاعات یک کندل قبل و دو کندل قبل رو جدا بیرون بکشم؟ چون میخوام بعضی اطلاعاتشون رو با هم مقایسه کنم بعد شرط بذارم.
    ممنون میشم راهنمایی کنین

    • معصومه کرمی

      سلام وقتتون بخیر میتونید اطلاعات کندل ها رو مطابق فصل سوم آموزش پیشرفته از سرور بیرون بکشید و داخل آرایه ذخیره کنید و بعد اعضای آرایه با مشخص کردن ایندکس آن برای مقایسه اطلاعات استفاده کنید

  20. شريف لطفي (خریدار محصول)

    سلام مجدد. در رابطه با سوال قبليم و اروري كه داشتم يكبار كامل كل سورس كدها رو از مجموعه فولدري كه در پنل دانلود من گذاشتيد در فولدر include كپي كردم و مشكل ارورها حل شد.

    • معصومه کرمی

      سلام ممنون که مشکلتون برطرف شد پیام دادین.

  21. شريف لطفي (خریدار محصول)

    سلام.ضمن تشكر از خانم مهندس كرمي. دوره ها واقعا بي نظيرن و خيلي كمك كننده ان. دوره اكسپرت نويسي در فاركس رو دنبال كردم. خيلي از تبع ها مثل order و … بدون ارور كاپايل و اجرا شدن . رسيدم به درس پانزدهم(مديريت سرمايه ) فايل MoneyManagement.mqh را در include كپي كردم. فايل TestMoneyManegment.mq5 رو هم در پوشه اكسپرت ها كپي كردم (مثل بقيه اكسپرتها) ولي در موقع كامپايل 16 ارور ميده كه همه ارورها برميگرده به تابع double VerifyVolume(string pSymbol,double pVolume) در فايل MoneyManagement.mqh دليلش رو نميدونم و در متن فايل هم تغييري ندادم. همه خطوط اين تابع رو ارور ميده. اولين ارور هم اينه
    ‘▲’ – unexpected token, probably type is missing?
    كه در خط اول تابع VerifyVolume قبل از { نشون مي ده. بنظرم يا يه import يا include يا يه چيزي جا افتاده . اگه ميشه يه راهنمايي بفرماييد. ممنون

  22. سید مهدی محمودی (خریدار محصول)

    با سلام
    بنده موقع اجرا اکسپرت با ارور Error 10030 – Invalid order filling type مواجه میشم
    بررسی کردم دیدم برای جفت یه سری جفت ارز ها از FOK استفاده میشه و مثلا برای طلا از IOC
    ولی توی آموزش شما همرو از FOK استفاده کردین
    آپدیتی ندارین برای این موضوع که خودش filling type رو تشخیص بده؟

    • معصومه کرمی

      سلام با تابع SymbolInfoInteger میتونید filling type هر نماد رو اط سرور بخونید و بعد این مقدار رو به متغیر type_filling ابجکت request پاس بدید. بصورت زیر:

      int filling=(int)SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE);
      ENUM_ORDER_TYPE_FILLING pFillType;
      if(filling == 1 || 2) pFillType = ORDER_FILLING_FOK;
      else if (filling == 1) pFillType = ORDER_FILLING_FOK;
      else if (filling == 2) pFillType = ORDER_FILLING_IOC;
      else Print(filling);
      request.type_filling = pFillType;

  23. مهرداد ارمیون (خریدار محصول)

    با سلام در فایل 02MarketExecutionقسمت HB-MQL5-PL-ForexEA-04-RewriteModifyPositionارورModify position: Error 10013 – Invalid requestنشان می دهد و حد ضرر و حد سود قرارداده نمیشود

    • معصومه کرمی

      سلام نقطه ی حدضرر یا حدسود را اشتباه وارد کرده اید لطفا قیمت ها را متناسب با نمادی که اکسپرت روی آن اجرا می شود وارد کنید

  24. سید مهدی محمودی (خریدار محصول)

    با سلام کارشناس محترم بنده موقع استفاده از Price.Close(1) ارور دریافت میکنم 2023.01.31 13:48:21.080 smm2 (XAUUSD.,H4) array out of range in ‘Price.mqh’ (45,13)

    چیکار باید کرد؟

    • معصومه کرمی

      سلام همینطور که در آموزش هم گفته شده شما ابتدا باید تابع Update از ابجکت Price بصورت زیر اجرا کنید
      Price.Update(Symbol,PERIOD_H4)
      و بعد با تابع Close به قیمت بسته شدن دسترسی پیدا میکنید.

  25. سید مهدی محمودی (خریدار محصول)

    با سلام
    بنده موقع اجرا اکسپرت با ارور Error 10030 – Invalid order filling type مواجه میشم
    بررسی کردم دیدم برای جفت یه سری جفت ارز ها از FOK استفاده میشه و مثلا برای طلا از IOC
    ولی توی آموزش شما همرو از FOK استفاده کردین
    آپدیتی ندارین برای این موضوع که خودش filling type رو تشخیص بده؟

  26. میثم نصر آزادانی (خریدار محصول)

    if(!Return_Low_High(now_bid, new_price_low, new_price_high))
    درود به شما
    این کد را راهنمایی کنین ممنون میشم

  27. سعید فروغی (خریدار محصول)

    با سلام و تشکر از اموزشهای مفید شمامیخواستم امکان مارتینگل را به اکسپرتها اضافه کنم در مارتینگل اخرین پوزیشن که بسته شده را از تب History دریافت کرده اگر با ضرر بسته شده در پوزیشن بعدی اخرین order که باضرر بسته شده رادر یک ضریبی مثلا 2یا بیشتر ضرب میکنیم میخواستم در صورت امکان راهنمایی کنید چند کد هم نوشتم ولی جواب نداد

  28. امیر حسین عزیزی

    بسیار آموزش مفیدی بود . ممنون از مدرس محترم دوره

    • معصومه کرمی

      سلام ممنون از همراهی شما

  29. احسان کرمی (خریدار محصول)

    سلام مجدد با بررسی مشکلات بقیه متوجه شدم که باید ORDER_FILLING_FOK را قرار دهم برای اکسپرت Pending Expert Advisor در بروکر لایت فارکس و الان مشکلم تا حدودی حل شده یعنی خرید انجام میشود ولی tp و sl برای فروش انجام نمیشود.ممنون میشم راهنماییم کنین

    • معصومه کرمی

      سلام به شما
      منظورتون اینکه بعد از ثبت سفارش توسط اکسپرت sl و tp برای سفارش ارسال میشود ولی در زمان برخورد قیمت با آن ها سفارش بسته نمیشود ؟ یا کلا tp و sl برای سفارش تعریف نمی شود؟

  30. احسان کرمی (خریدار محصول)

    با سلام و خسته نباشید بنده آموزش کامل بسته مقدماتی شما رو دیدم خیلی جامع و مفید بود فقط فایلهای اکسپرت مربوط به سفارش شرطی را هم در مکان مربوطه کپی کردم و با نسخه متاتریدر لایتفارکس اجرا کردم فقط الان مشکلی که هست سفارشاتی که به موقعیت خرید میرسند هم خودبه خود ثبت نمیشند و خطای nomoney میدهد در صورتی که من داخل دیپازیت 10000 تا usd گذاشتم میشه راهنمایی کنین که وقتی از استراتژی تستر دارم استفاده میکنم و داخل گزینه دیپازیت هم 10000 تا گذاشتم چرا میزنه nomoney

    • معصومه کرمی

      سلام وقت شما بخیر لطفا متن خطای دریافتی در زمان اجرا را گزارش کنید.

  31. شريف لطفي (خریدار محصول)

    سلام. اول اينكه واقعا خسته نباشيد و خدا قوت به خانم مهندس كرمي . واقعا عالي و حرفه اي تدريس كرديد.
    سوالي داشتم: در تب setting پنجره strategy tester چطور مسير اكسپرت رو عوض كنم؟ من اكسپرت simple advisor رو توي كدوم پوشه كپي كنم كه بتونم موقع اجراي اكسپرت اونو تو تب setting ببينم؟
    آيا امكان تعويض مسير اكسپرت هست يا ثابته؟

    • معصومه کرمی

      سلام خیلی خوشحالم که آموزش برای شما مفید بوده.
      در تب setting فقط اکسپرت های که در پوشه ی Expert Advisors هستن قابلیت اجرا در استراتژی تستر رو دارن.
      شما فایل ex5 اکسپرت مورد نظرتون رو در مسیر زیر در متاتریدر کپی کنید.
      file>open Data folder> MQL5>Experts
      بعد از کپی کردن فایل یک بار متاتریدر رو ببنید و بعد باز کنید.

  32. میثم (خریدار محصول)

    قیمت را چطوری به یه متغیر پاس بدم تا بعد اگر قیمت با اون برابر بود سفارش نزاره. اینطوری مینویسم int myprice == result.ask ولی اوکی نمیشه خطای ‘==’ – semicolon expected میده …..چطوری بنویسمش ….ممنونم

    • معصومه کرمی

      عملگرد == برای مقایسه دو مقدار استفاده میشه برای ذخیره مقدار یک متغیر از مساوی استفاده کنید.
      بعد از اینکه سفارش رو ارسال کردیت قیمت که در آن سفارش ارسال شده رو از سرور بخونید و داخل متغیر myprice ذخیره کنید.

  33. RezaBahrami (خریدار محصول)

    سلام
    اولین خطا مربوط به خط 18 است.
    و همچنین در چندین خط دیگر نیز تکرار شده.

    • معصومه کرمی

      سلام مجدد من دوباره فایل های پیوست شده به آموزش رو بررسی کردم خطای نیست و اکسپرت ها به درستی اجرا میشن.
      احتمالا شما یکجا از کدها رو تغییر دادین و این باعث اجرا نشدن اکسپرت ها میشه یکبار دیگه فایل پیوست شده به هر فصل را دانلود و به متاتریدر اضافه کنید و دوباره اکسپرت را اجرا کنید.

  34. میثم (خریدار محصول)

    میشه استاد کدش را بگین چطور بنویسم

  35. RezaBahrami (خریدار محصول)

    با سلام
    تعداد خطاها در هر کدام از فایل های زیر
    Moving Average Cross:74
    Pending Order Breakout:81
    می باشد و خطای اولیه در هر دو فایل بالا به شرح زیر است:
    ‘CTradeHedge’ – unexpected token, probably type is missing?
    لطفا راهنمایی بفرمایید.

    • معصومه کرمی

      این خطای سینتکس میشه بفرمایید این خطا روی خط چندم از فایل CTradeHedge اتفاق افتاده؟

  36. میثم (خریدار محصول)

    قبل از هر چیزی تشکر کنم که وقت میذارین استاد عزیز
    این کار را هم انجام داده بودم ولی نمیشه
    Deviation را هم صفر کردم ولی باز نشد
    پیشنهادتون چیه

  37. RezaBahrami (خریدار محصول)

    با سلام
    حدود دو هفته پیش این بسته را خریداری کردم ولی متاسفانه فایل های زیر اجرا نمیشه.
    1.TrailingStops
    2.tradehedg
    3.TradeHedge
    4.Trade

    • معصومه کرمی

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

  38. میثم (خریدار محصول)

    وقت بخیر استاد عزیز
    تابع Openposition را برداشتم ولی تو یک قیمت چندین سفارش میزاره چکار کنم تو هر قیمت فقط یک سفارش بزاره….ممنونم

    • معصومه کرمی

      سلام قیمتی که سفارش در اون ثبت میشه رو داخل یک متغیر موقت ذخیره کنید و بعد یک شرط بزارید که اگر قیمت برابر با مقدار این متغیر بود سفارش جدید ارسال نشود.

  39. میثم (خریدار محصول)

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

  40. میثم (خریدار محصول)

    وقت بخیر استاد عزیز
    این کد که من نوشتم تا وقتی یه سفارش باز هست و به tp نرسیده دیگه برای من سفارش باز نمیکنه باید چی رو ویرایش یا اضافه کنم تا اصلاح بشه؟
    ممنون بابت لطفتون

    • معصومه کرمی

      سلام به شما میتونید شرط openPosition == false رو بردارین در این صورت اگه سفارش بازی باشه باز هم با فراهم شدن شرایط سفارش جدید ارسال می شود.

  41. میثم (خریدار محصول)

    وقت بخیر استاد عزیز
    تو این کدی که براتون ارسال کردم وقتی یه سفارش شرطی بای لیمیت باز میکنه تا به tp نخوره و بسته نشه سفارشی دیگه برای من باز نمیکنه چی رو ویرایش یا اضافه کنم که وقتی سفارش باز دارم باز هم برام سفارش ارسال کنه…..ممنون از وقتی که میگذارین

  42. میثم (خریدار محصول)

    ممنون میشم استاد این کد را بررسی کنین

    void OnTimer()
    {

    MqlTick mytick;
    SymbolInfoTick(_Symbol,mytick);
    int c = NormalizeDouble(mytick.bid,0);
    double b = c / 5;
    int a = NormalizeDouble(b,0);
    int price1 = a * 5;
    int price2 = (a + 1) * 5;
    Print(mytick.bid,mytick.ask, c, b, a, price1, price2);

    MqlTradeRequest request;
    MqlTradeResult result;
    ZeroMemory(request);
    ZeroMemory(glbuylimitplaced);
    ZeroMemory(glbuystopplaced);
    //ZeroMemory(glselllimitplaced);
    //ZeroMemory(glsellstopplaced);

    bool openPosition = PositionSelect(_Symbol);

    if(glbuylimitplaced == false && glbuystopplaced == false && openPosition == false)

    request.action = TRADE_ACTION_PENDING;
    request.deviation = 0.5;
    request.expiration = 0;
    request.price = price1;
    request.sl = 0;
    request.symbol = _Symbol;
    request.tp = price1 + takeprofit;
    request.volume = volume;
    request.type_filling = ORDER_FILLING_RETURN;

    if(price1 < mytick.bid)
    request.type = ORDER_TYPE_BUY_LIMIT;
    else
    request.type = ORDER_TYPE_BUY_STOP;

    OrderSend(request,result);

    if(result.retcode == TRADE_RETCODE_PLACED || result.retcode == TRADE_RETCODE_DONE)
    {

    Print("trade placed");
    do Sleep(100); while(PositionSelect(_Symbol) == false);

    glbuylimitplaced = true;
    glbuystopplaced = true;
    }

    else
    {
    Print("Trade not placed.Error retcode",result.retcode);
    }

    Print("return code:",result.retcode,",volume:",result.volume,",price:",result.price,",bid:",result.bid,",ask:",result.ask);

  43. RezaBahrami (خریدار محصول)

    سلام من چند وقت پیش اموزش ساخت ربات فارکس خریداری کردم الان چند روز دارم فیلم ها رو با دقت نگاه میکنم ولی متاسفانه اکسپرت اجرا نمیشه لطفا راهنمایی بفرمایید.

    • معصومه کرمی

      سلام به شما لطفا شماره درس و خطای دریافتی رو اینجا بزارید تا دقیق تر بتونم راهنمایی کنم.

  44. SINA PAZOKI (خریدار محصول)

    سلام استاد
    خسته نباشید
    بنده وقتی میخوام یه اندیکاتور با تابع custom وارد اکسپرتم کنم و شرایط خرید و فروش می نویسم در کد موقع compile خطایی نمیگیرم اما به هنگام تست استراتژی کد برای من اجرا نمیشود و پنجره ی اندیکاتور مرتبا هی در صفحه ی استراتژی پایینش ظاهر میشود و هی مدام همان اندیکاتور اضافه میشود و ربات اصلا کار نمیکند که پوزیشن بگیرد

    • معصومه کرمی

      سلام به شما
      متاسفانه من چون کد اندیکاتور شمارو ندیدیم دقیق نمیتونم راهنمایی کنم.

  45. میثم نصر آزادانی (خریدار محصول)

    ممنون از پاسخگوییتون استاد
    من کد را همونطور که فرمودین مجدد نوشتم ولی باز هم ارور ‘%’ – illegal operation use را نمایش میده

    • معصومه کرمی

      سلام عملگر ٪ باقیمانده تقسیم دو عدد رو بر میگردونه شما برای تقسیم باید از عملگر / استفاده کنید.

  46. میثم نصر آزادانی (خریدار محصول)

    ممنون از پاسخگوییتون استاد
    من کد را اینطوری نوشتم ولی باز هم ارور ‘%’ – illegal operation use را نمایش میده

    void OnTick()
    {
    MqlTick price;
    SymbolInfoTick(_Symbol,price);
    double a = price.ask;
    int b = a % 5;
    if(b == 0 );
    {
    Print(price.ask);
    }

    };

  47. میثم نصر آزادانی (خریدار محصول)

    درود استاد عزیز ممنون از آموزش خوبتون
    در ارسال سفارش شرطی مثلا وقتی قیمت لحظه ای نماد مورد نظر 1203 هست قیمت را چطوری به تابع ام کی ال ریکوئست پاس بدیم تا در قیمت‌ها رند و مشخص مثلا 1200 و 1210 و… سفارش های بای و سل برای ما ارسال کنه.. ممنون

    • معصومه کرمی

      سلام اگه این نظر رو شما در ادامه نظر قبل ارسال کردین باید بگین اگه شرط b==0 بود اونوقت سفارش شرطی رو در قیمت ‌‌ask اپن لحظه ارسال کنید.
      و قیمت ask رو به پارامتر price ابجکت ریکوئست پاس بدین.

  48. میثم نصر آزادانی (خریدار محصول)

    درود استاد عزیز خسته نباشید ممنون از آموزش کاملتون این کد را یه بررسی کنین ممنون میشم
    MqlTick price;
    SymbolInfoTick(_Symbol,price);
    int a = price.ask;
    int b = a % 5;
    if(b = 0);
    Print(price.ask);

    • معصومه کرمی

      سلام خدمت شما
      من کد شما رو بررسی کردم اولین مشکل اینه که شما باید متغیر a رو با نوع داده دابل تعریف کنید تا قیمت های که از سرور میخونید کامل داخل متغیر ذخیر بشه و بعد کدتون درست کار بکنه
      مشکل بعدی هم اینکه شما یک شرط if در کدتون تعریف کردین ولی عملکرد این شرط رو درست تعریف نکردین:
      if(b = 0) Print(price.ask);
      یا
      if(b = 0)
      {
      Print(price.ask);
      }

  49. شاهین

    سلام، وقت بخیر
    من قبلا با استفاده از MQL چندتا ربات معامله گر نوشته بودم و روی متاتریدر لانچ کرده بودم، الان تلاش دارم با استفاده از پایتون این کار رو بکنم، ولی لینک کردن پایتون به متاتریدر یا سایر ابزارها برای معامله خودکار برام خیلی سخته. میخواستم ببینم شما آموزشی در این حوزه دارین؟ یا میتونیم با پرداخت هزینه آموزشی در این زمینه رو درخواست کنیم؟

  50. سید حامد

    سلام وقت بخیر بنده آموزش رو دریافت کردم. دو سه قسمت اول رو دیدم. فایل order.mq5 رو ساختم و اجرا کردم، متاسفانه سفارش اجرا نشد، ارور هم نداد، فقط از محیط کد نویسی خارج میشه و محیط قیمت نماد باز میشه، ولی هیچ پیغامی نمایش داده نمیشه.
    ممنون میشم راهنمایی کنید.

    • معصومه کرمی

      سلام وقت شما هم بخیر
      بعد از اجرای اکسپرت در پنجره ToolBox زبانه Expert را بررسی کنید متن ارور در این زبانه گزارش داده می شود.
      و لطفا متن ارور را در نظرات بفرستین.

  51. ali

    سلام خسته نباشید
    زمان جاری بازار یا تیکهای بازار رو چجوری میشه داخل برنامه نوشت با چه تابعی یا به چه شکلی ؟؟؟
    سپاسگذارم از وقتی که میذارید.

    • معصومه کرمی

      سلام
      زمان حال سرور را با تابع TimeCurrent و زمان حال سیستمی که متاتریدر روی آن اجرا میشود را با تابع TimeLocal می تونید از سرور بخونید.
      لطفا مستندات MQL5 را برای این دوتابع بررسی کنید تا با عملکرد آن ها دقیق تر آشنا شوید.

  52. هادی رفیعی (خریدار محصول)

    سلام من با وجود این که همه فایل ها رو در include قرار دادم ولی کد moving average خطا داره میده موقع کمپایل.
    تغداد 68 تا خطا است که مهم هاش این هاست :
    ‘BuyStopLossPoint’ – undeclared identifier a.mq5 150 22
    ‘SellStopLossPoint’ – undeclared identifier a.mq5 171 23

    و ….
    مثل :
    ‘_Symbol’ – some operator expected a.mq5 171 41

    ‘StopLoss’ – semicolon expected a.mq5 171 49

    که فکر کنم به دلیل عدم فراخوانی یک فایلی باشه !!!
    ممنون میشم نظرتون رو داشته باشم

    • معصومه کرمی

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

  53. رضا اسماعیل پور

    سلام من یک برنامه سفارشی می خواهم چگونه با شما تماس داشته باشم ؟

  54. abolfazl karimi (خریدار محصول)

    با سلام وتشکر بابت آموزش های خوب وکاربردی ارائه شده توسط شما—-یک سوال داشتم مثلا اگر من بخواهم یک لات خرید buy که انجام داده ام با تابع close در حجم های کوچکتر مثلا 0.1 لات بصورت sell بفروشم چکار باید انجام بدهم در آموزشتون کل حجم خرید رو با close بسته اید خیلی ممنون میشم من را راهنمایی کنید خیلی وقته درگیر این موضوع هستم . باتشکر

    • معصومه کرمی

      سلام ممنون
      حجم مورد نظرتون رو به عنوان پارامتر دوم به تابع Close پاس بدین در این حالت بخشی از حجم پوزیشن شما بسته میشود.

  55. mkalamdar@gmail.com (خریدار محصول)

    سلام من فایل های mqh را در فولدر include قرار دادم ولی اکسپرت trailing stop موقع کامپایل پیغام خطا می دهد

    • معصومه کرمی

      سلام لطفا به ترتیب آموزش ها را مشاهده کنید و بعد از کامل شدن کدها اکسپرت را اجرا کنید.
      در صورتی که به مشکل برخوردید اسم درس و متن ارور را بفرستید.

  56. arsm721@gmail.com

    سلام وقت بخیر
    من هنوز دوره رو تهیه نکردم و یه سوال داشتم، در حال حاظر من یه اندیکاتور توی سایت تریدینگ ویو به زبان پاین(pine) نوشتم، میخواستم ببینم توی محیط زبان MQL5 میتونم اون اندیکاتور یا هر اندیکاتور جدید دیگه ای که بخوام رو بازنویسی کنم و توی ربات ازش استفاده کنم؟ یا فقط از یکسری اندیکاتور از پیش تعریف شده مشخص میشه استفاده کرد؟
    ممنون

  57. محمد جواد خرامان (خریدار محصول)

    سلام
    آموزش بسیار با کیفیت و ارزشمندی هست و قیمت فوق العاده مناسبی داره .
    واقعا جا داره از استادی که این آموزش رو ارائه دادن و کل مجموعه همرویش تشکر کنم .

  58. رضا ساقی پور (خریدار محصول)

    سلام خانم مهندس وقتتون بخیر
    در مواردی وقتی سفارش توسط ربات انجام میشه ، حد سود و ضرر را اعمال نمیکنه و خطا میده ، دلیلش چیه ؟
    متن خطا Modify position : Error 10013 – invalid request

    • معصومه کرمی

      سلام به شما
      احتمالا قیمت حد ضرر و حدسود را اشتباه محاسبه کردید کدتون را دی باگ کنید و محاسبات را دوباره چک کنید.

  59. رضا ساقی پور (خریدار محصول)

    با سلام و تشکر از خانم مهندس کرمی
    چطور میتونم اکسپرتی که نوشتم ، برای یه اکانت واقعی روی 5 تا جفت ارز ران کنم ؟
    من درصد ریسک معامله را یک تعریف کردم ، میخواهم روی 5 تا نماد ران کنم که در مجموع ریسک 5 بشه و معاملات روی 5 نماد انجام بشه
    با تشکر

    • معصومه کرمی

      سلام به شما نمودار پنج جفت ارز مورد نظرتون رو باز کنید و بعد اکسپرت را برای هر یک از نمودار ها اجرا کنید.
      برای مدیریت ریسک مقدار کل سرمایتون را تقسیم بر پنج کنید و مقدار بدست آمده را به پارمتر ورودی Money پاس دهید. درصد ریسک را هم پنج در صد تعریف کنید. در این صورت در هر جفت ارز مدیریت ریسک را برای پنج درصد از یک پنجم سرمایه انجام می دهید که در مجموع ریسک روی کل سرمایه شما 5 درصد می شود.

  60. رضا ساقی پور (خریدار محصول)

    با سلام و تشکر از خانم مهندس کرمی
    وقتی از Trailing Stop استفاده میکنم ، حد سود از بین میره و از نمودار پاک میشه ، در صورتی که اگر Take Profit فعال باشه معمولا قیمت به اون برخورد میکنه و حد سود میزنه ، ولی اینجوری قیمت برمیگرده پایین و به Trailing Stop برخورد میکنه و در نتیجه میزان سود خیلی کمتر میشه
    ممنون میشم راهنمایی کنید

    • معصومه کرمی

      سلام به شما
      اگه می خواینTake Profit را به همراه Trailing Stop در اکسپرت ها داشته باشید باید تابع TrailingStop را به صورت زیر بازنویسی کنید .(تابع TrailingStop در فصل اول از آموزش پیشرفته اکسپرت بورس ساخته شده)
      1- یک پارامتر ورودی جدید با نام pTakeProfit برای تابع pTakeProfit تعریف کنید
      2- بعد در تعریف عملکرد تابع این پارامتر را به متغیر tp ابجکت request پاس دهید.(request.tp = pTakeProfit)
      3-داخل اکسپرت ها مقدار Take Profit را با تابع BuyTakeProfit یا SellTakeProfit محاسبه کنید و مقدار را داخل یک متغییر ذخیره کنید.
      4- مقدار TakeProfit محاسبه شده در بند بالا را به عنوان پارامتر pTakeProfit به تابع TrailingStop پاس دهید.
      به این ترتیب بعد از اجرای اکسپرت و ارسال سفارش برای شما یک Take Profit ثابت بر اساس قیمتی که سفارش در آن ثبت شده رسم می شود و Trailing Stop هم براساس قیمت هر تیک محاسبه و رسم می شود.

  61. رضا ساقی پور (خریدار محصول)

    با سلام و تشکر از آموزش بسیار خوب شما
    بنده کدها رو در برنامه متاتریدر 4 اجرا کردم و ارور میده ، کدها حتما باید در برنامه متاتریدر 5 اجرا بشه ؟

    • معصومه کرمی

      سلام بله این آموزش بر مبنای زبان برنامه نویسی MQL5 ساخته شده و از ابتدای آموزش باید کدها را در متاتریدر 5 اجرا کنید.

  62. محسن صادقی (خریدار محصول)

    با سلام و تشکر از خانم مهندس کرمی بابت آموزش عالی و کاربردیشون
    من می خواستم بپرسم راهی برای ارتباط با مدرس در رابطه با سوالات و راهنمایی هایی که در هنگام برنامه نویسی پیش می آید وجود دارد؟
    من چندین سوال دارم که ممنون میشم امکان پاسخ دادن به آنها توسط مدرس بر قرار بشه

    • معصومه کرمی

      سلام به شما
      سوال هاتون رو میتونید همین جا در بخش نظرات آموزش بپرسید.

  63. بابایی

    سلام
    مطلبی در مورد استخراج دیتا از mql5 هم دارید یا خیر
    مثلا استخراج هیستوری معاملات و کار با تیک و حجم معاملات

    • معصومه کرمی

      سلام
      ما در بسته ی پیشرفته در فصل سوم کار با اطلاعات کندل ها ( Close Price, High Price, Low Price ,Open Price) و بیرون کشیدن آن ها از سرور را آموزش دادیم.
      لطفا سرفصل ها و فیلم معرفی آموزش را با دقت بررسی کنید.

  64. R.Gh (خریدار محصول)

    سلام
    لطفا ایمیلتان را چک نموده و درخصوص یک سوال از نحوه اجرای اندیکاتور سفارشی در MT5 راهنمایی بفرمایید.

  65. مصطفی احمدزاده (خریدار محصول)

    خانم کرمی تایم فریم نه تاریخ اجرای اکسپرت مثلا سه ماهه یکساله (از تاریخ… تا تاریخ ….)مثلا یکسال یک میگیری سود میده مال سه ماه قبل رو ضرر. کدوم قابل اتکاء هستش ؟

  66. رضا غلامرضایی (خریدار محصول)

    سلام
    آیا اندیکاتور سفارشی در متاتریدر ۵، فقط در یک تایم فریم اجرا می شود و چرا در تایم های دیگر به خوبی کار نمی کند؟

    • معصومه کرمی

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

  67. مصطفی احمدزاده (خریدار محصول)

    با سلام و تشکر از آموزش خوبتون مخصوصا که خود کدها رو هم ضمیمه کردین .موند اصلی ترین قسمت بهینه سازی اکسپرت که برامون خوب کار کنه وسود ساز باشه اگه ممکنه برا اوتن هم یه اموزش جامع ارائه بفرمائین و سوال :
    چرا در بک تست در تاریخ زمانی نتیجه متفاوته مثلا سه ماه میگیری زیان نشون میده دوساله میگیری سود

    • معصومه کرمی

      سلام
      خوشحالم که آموزش واستون مفید بوده
      بله بهینه سازی و تحلیل اکسپرت ها مبحث خیلی مهم و کاربردیه در این مورد هم در آینده اگر عمری باشه آموزش تهیه می کنیم.
      اما در رابطه با سوددهی اکسپرت ها‍؛ ببنید اکسپرت ها برنامه های کامپیوتری هستن که براساس استراتژی ما عمل می کنن. از طرفی استراتژی های معاملاتی را ما براساس تجربه که از بازار داریم و شرایط بازار طراحی میکنیم استراتژی وجود نداره که در تمام موارد به شما سود بده یک استراتژی اگه 60 تا 70 درصد مواقع سودده باشه می شه گفت استراتژی مناسبیه.
      اکسپرتتون رو روی تاریخچه یک نماد اجرا کنید و بعد سعی کنید تنطیمات اکسپرت را در جهت سودده تر شدن اکسپرت روی اون نماد تنظیم کنید.

  68. سجادمحمدزاده

    سلام اگه رو متاتریدر 4جواب بده یدونه من میخام

    • معصومه کرمی

      سلام این آموزش براساس زبان MQL5 طراحی شده و مثال ها و اکسپرت ها همه روی متاتریدر 5 اجرا می شن.

  69. محمدیزدی (خریدار محصول)

    سلام. ببخشید دلیل اینکه با وجود اینکه تمام سورس ها در پوشه مربوطه کپی شده اند ولی باز خطای زیر را می گیرم چیه؟
    cannot access to private member ‘request’ declared in class ‘CTrade’ TradeHedge.mqh

  70. حمید احتشامی (خریدار محصول)

    سلام تشکر از آموزش خوب شما
    مشکلی در کد وجود دارد .
    زمانی که پوزیشن با تریلینگ بسته بشه دیگه پوزیشن همسو باز نمیکنه
    مثلا اگر بای بوده پوزیشن قبل دیگه پوزیشن بای باز نمیکنه باید شرایط سل برقرار بشه و سل بگیره
    خیلی از موقعیت ها از دست میره

    • معصومه کرمی

      سلام به شما
      در اکسپرت Moving Average cross استراتژی که باهاش اکسپرت رو ساختیم اینکه در محل برخورد دو Moving Average اگر شرایطی که برای خرید تعریف کردیم برقرار بود اکسپرت سفارش Buy را ارسال کنه و اگر شرایط sell برقرار بود پوزیشن sell را باز کنه.
      از طرفی هدف ما در این آموزش ساخت یه اکسپرت سودده یا بهینه سازی یک استراتژی نیست.هدف ما اینکه یادبگیریم چطور با زبان MQL5 و تابع های آن استراتژی ها را به اکسپرت تبدیل کنیم.
      در اکسپرت Moving Average cross اگر می خواید در تمام کندل ها که شرایط Buy برقرار باشه سفارش ارسال بشه باید شرط glBuyTicket == 0 را حذف کنید.
      پیشنهاد می کنم اول استراتژی مدنظرتون رو دقیق مشخص کنید و بعد سعی کنید با template این آموزش اکسپرت متناسب با استراتژیتون بسازید.

  71. abolfazlkarimi

    سوال داشتم اینکه در آموزشتون trailing stop با break even stop رو با هم دریک اکسپرت قرار داده اید ? میخواستم بدونم چگونه این کد رو بنویسم تا این دو باهم تداخل نداشته باشند؟

    • معصومه کرمی

      سلام ما در این آموزش برای trailing stop و break even stop دو تابع جدا تعریف کردیم این دو تابع به هم وابسته نیستند و شما در اکسپرت های که می سازید از هر کدوم از این تابع ها بصورت مستقل می تونید استفاده کنید.

  72. امیر حسین عزیزی

    سلام. بنده بسیار دنبال این آموزش بودم و حالا در این سایت پیدا کردم. این آموزش با این قیمت واقعا عالی است. آموزش های قبلی استاد کرمی در زمینه بورس هم دیدم که عالی بودن. بنده تهیه کردم بعد از مشاهده نظرم رو میذارم اینجا تا دیگران استفاده کنند.

  73. معصومه کرمی

    ممنون از لطف شما. امیدوارم مفید باشه.

  74. مصطفی آصفی

    سلام و سپاس از سخاوت شما در انتشار این آموزش با این بهای مناسب در شرایطی که دوره‌های آموزشی با سرفصل مشابه چندین میلیون هزینه رو به مخاطب تحمیل می کنن.
    شما انحصارشکنی کردید. آموزش با هدف گسترده کردن اکوسیستم یک حوزه تخصصی نگاه قشنگیه.

دیدگاه خود را بنویسید

نظرات کاربران در خصوص دوره 

74 دیدگاه برای آموزش ساخت اکسپرت متاتریدر ــ بسته تکمیلی

  1. Mahdi.Asgarizad (خریدار محصول)

    خانم مهندس سلام و عرض تبریک سال نو
    بنده تمام ویدئو های شما رو دیدم و کار کردم
    یک اکسپرت طراحی کردم اما زمانی که سیستم خاموشه کار نمی کنه چرا ؟ متا تریدر هم تنظیمات خاصی نداره که انجام بدم ؟
    فقط وقتی سیستم روشنه اکسپرت کار می کنه
    خواهشا پاسخ بنده را بدهید

    • مصطفی آصفی

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

  2. Mahdi.Asgarizad (خریدار محصول)

    خانم مهندس سلام
    ممنون بابت زحماتی که دری راستای آموزش متحمل می شوید
    ادامه آموزش های شما را دارم با سوکت نویسی ادامه می دم .
    پست قبلی را در خصوص واگرایی حتی اشاره ای هم بفرمائید ممنون می شوم .
    خانم مهندس سوال دیگر هم اینکه شاید برای خیلیا سوال بشه :
    بنده اکسپرت رو که در شرایط ریل فعال کردم بعد گرفتن یک پوزیشن در پوزیشن بعدی خطا داد با پشتیبانی بروکر صحبت کردم گفت فاصله بین باز و بسته شدن معاملات باید حداقل 3 ثانیه باشه وگرنه سرور ها مختل میشن با چه تابعی این کار رو کنم یعنی مدت 4 ثانیه فاصله بندارم بین بسته شدن پوزیشن قبلی و باز شدن پوزیشن بعدی با sleep() میشه یا راه دیگیری دارد

  3. Mahdi.Asgarizad (خریدار محصول)

    خانم مهندس سلام و با آرزوی موفقیت
    در خصوص واگرایی ها مثلا آر اس آی ممنون میشم راهنمایی و اشاره ای بفرمائید چگونه در اکسپرت استفاده کنیم.

  4. Mahdi.Asgarizad (خریدار محصول)

    عرض سلام و درود حانم مهندس کرمی .
    بسیار سپاسگذارم بابت اینکه پاسخ بنده را دادین.
    بنده هم با آموزشهای شما از صفر شروع کردم و با شما قدم برداشتم تا به این نقطه رسیدم.
    هر چه هست بعد از خدا در این مسیر از تلاش شما استاد عزیز و تیم همرویش دارم.
    و به امید خدا در ادامه مسیر با پیش زمینه ای که از پایتون دارم و آموزشهایی که شما و مهندس آصفی در این خصوص تدارک دیدید ادامه خواهم داد.
    با آرزوی سر بلندی و موفقیت شما و همکارنتان .

  5. Mahdi.Asgarizad (خریدار محصول)

    عرض سلام و درود بر شما خانم مهندس کرمی
    حانم مهندس این مشکل مربوط به تابع کلوز را با اضافه نمودن یک حلقه for و تعریف یک متغیر سراسری حل کردم
    ببخشید در این خصوص زیاد به شما پیام دادم
    سپاسگزارم

    • معصومه کرمی

      سلام و سپاس که تجربه خودتون رو به اشتراک گذاشتین.

      پی‌نوشت: پوزش که نتونستم کمکتون کنم. واقعیت اینه که تو این بخش تمرکز بنده پاسخ به مشکلات فراگیران در رابطه مستقیم با محتوای دوره‌ها هست و به دلیل مشغله فراوان نمی رسم که پروژه های بیرونی همراهان گرامی مثل شما رو بررسی کنم. متشکرم از دید مناسبتون و این که نتیجه رو هم حتی گزارش کردین.

  6. Mahdi.Asgarizad (خریدار محصول)

    مشکل پست قبلی رو یه جور دیگه توضیح می دم :
    ربات فقط مودیفای ، تریلینگ ، بریک ایون و کلوز قسمتی از حجم را انجام می دهد :
    مشکل بنده در تابع کلوز هست وقتی که معامله در سود می افتد و به سود مورد نظر می رسد پوزیشن کلا بسته می شود نه مقداری از پوزیشن که به ربات پاس داده شده . دیباگ کردم به این نتیجه رسیدم که در شرط تابع کلوز چون بزرگتر مساوی گذاشتم سود بیشتر از حد مورد نظر که میشه در تیک اول همان مقدار حجم مورد نظر را می بندد و در تیک دوم به بعد هم شرط صحیح هست پس کل پوزیشن رو می بنده بنظرم باید دستوری داد که در تیک دوم به بعد نتونه دیگه بقیه پوزیشن را ببندد
    فایل ها رو به ایمیلتون فرستادم
    بازم ممنون حانم مهندس بنده فقط دسترسی راهنمایی به شما دارم .
    صبوری شما در این مسیر برای بنده قابل ستایش است .
    فایل ها رو به ایمیلتون فرستادم
    سپاس

  7. Mahdi.Asgarizad (خریدار محصول)

    حانم مهندس بنده کد را در قسمت تماس با مدرس می فرستم به ایمیلتون
    سپاس

  8. Mahdi.Asgarizad (خریدار محصول)

    عرض سلام و آرزوی موفقیت برای شما خانم مهندس کرمی
    خواستم یادآوری کنم در خصوص مشکل ذیل اگر ممکنه کمکم کنید
    سپاسگذارم

  9. Mahdi.Asgarizad (خریدار محصول)

    سلام خانم مهندس کرمی
    در استقاده از تابع کلوز مشکلی خوردم امیدوارم بتونید کمکم کنید.
    تا جایی که پوزیشن در سود مدنظر می رسد تعریف کردم در ورودی های ربات مثلا یورو یو اس دی : به مقدار 100 پیپت که در سود رفتی از کل حجم 0.05 ، مقدار 0.02 را خارج شو
    اما به مقدار 100 پیپت که می رسه همه پوزیشن رو می بنده ؛ انگار که در تیک اول 0.02 سپس بقیه رو در تیک بعدی
    دیباگ هم کردم دقیقا به این نتیجه رسیدم
    شرط خروج هم ضمن تعریف ورودی های ذیل :
    input bool AutoFairProfit = false;
    input int FairProfit = 0;

    currentProfit = openPrice – ask;
    if((AutoFairProfit == true && currentProfit >= Hilf_hhll) || currentProfit >= FairProfit1)
    احساس می کنم چون بیشتر مساویه و محدودیت نداره ، سود که بیشتر از حدی می شه که به عنوان ورودی دادم بعد از اون در هر تیک چک می کنه شرط درسه بقیه حجم رو هم خارج می شه .
    ممنون میشم در حل این مشکل کمکم کنید.
    سپاس

    • معصومه کرمی

      سلام متاسفانه من کدتون رو کامل ندیدم و با این توضیح که دادین متوجه نشدم مشکل کجاست.

  10. mahdi.cs (خریدار محصول)

    سلام و درود بر شما خانم مهندس کرمی همچنین تیم همرویش
    سپاسگزارم بابت پاسخ به سوالات
    در خصوص سوال آخر راه حل عالی ارائه دادین اما با کمی تغییرات اعمال کردم و حل شد .
    اگر برای ربات بخواهیم لایسنس (اعتبار کارکرد)بگذاریم چه باید کرد ؟

    • معصومه کرمی

      سلام مجدد باید اطلاعات اکانت کاربر را داخل اکسپرت ذخیره کنید. و شرط بزارید که فقط اکسپرت روی این حساب اجرا شود

  11. mahdi.cs (خریدار محصول)

    توضیحی بدم در خصوص مشکل پست قبل : ایده ای که دارم که دوست داشتم با کاربران هم رویش و سودگاه هم به اشتراک بگذارم امید است کار ساز باشد ربات کمک معامله گر هست بطوریه معامله گر با استفاده از هوش و تجربه خودش وارد پوزیشن می شود و با توجه به شرایط پوزیشن از باکس 9-26-52 و یا اعدادی نظیر این برای تارگت گذاری تریلینگ ، بریک ایون و حتی کاهش درصدی ازحجم بعداز اینکه پوزیشن مقداری در سود افتاد ، استفاده می کند .
    تفکر بنده این هست هیچ رباطی نظیر ذهن انسان نیست اگر خود را باور داشته باشیم چون ربات ها هر چقدر سود ده باید اپتیمایز و آپدیت شوند و اما لحظه باز نمودن پوزیشن را انسان بهتر از ربات تشخیص می دهد چون مغز در آن شرایط پارامترهای بیشتری را دخیل می داند این موارد را که عرض کردم با سالها تحقیق در خصوص ماشین لرنینگ و هوش مصنوعی بدست آوردم
    حال خانم مهندس کرمی ضمن تشکر و قدر دانی از شما بابت تعهد و رسیدگی به مشکلات کاربرانی چون ما که حقیقتا قابل تحسین و ستایش است ؛ اگر نمی شود مقدار را در ایون هندلر onthick طوری ذخیره نمود که در در کندل های بعدی تغییر نکند آیا راه حلی برای این مشکل هست یا خیر
    چون در این ربات دقیقا مقادیر هایرهای و لورلو ثبت شده در زمان باز شدن پوزیشن مهم است نه کندل شماره صفر

  12. mahdi.cs (خریدار محصول)

    سپاس از شما خانم مهندس بابت پاسختان به سوال قبلی
    خانم مهندس یه سوال داشتم نمی دونم چگونه توضیح دهم : راهی هست برای اینکه متغیری را که در داخل ایون هندلر ontick استفاده می کنیم و در هر تیک مقدارش تغییر می کند را طوری ذخیره کنیم که در همان اولین تیک که مقدارش را به متغیری دادیم در تیک های بعدی و یا بعبارتی در کندلهای بعدی که زده شد دیگر مقدارش تغییر نکند
    مثال : در خصوص یکی از توابعی که شما زحمت کشیدین تعریف نمودید و مقدار هایر های و لورلو 20 کندل قبل رو به ما می دهد حال در اکسپرت بنده اینگونه تعریف کردم که با استفاده از مقدار تفاضل هایرهای و لور لو 26 کندل قبل بتواند توابع tp و sl و تریلینگ استاپ و بریک ایون را بطور اتومات محاسبه کند نه بر اساس پیپت
    مودیفای کردن پوزیشن را بر این اساس درست انجام میدهد اما زمان تریلینگ استاپ و یا بریک ایون چون چند کندل از زمان باز شدن پوزیشن گذشته دیگر مقادیر قبلی هایرهای و لورلو جای خود را در حافظه به مقدار محاسبه شده از کندل صفر تا 26 کندل قبل می دهد

    //1-Computing higher high and lower low
    double hHigh = HighestHigh(_Symbol,_Period,HighLowBars);
    double lLow = LowestLow(_Symbol,_Period,HighLowBars);
    double distance_hhll = hHigh-lLow;
    double Hilf_hhll = distance_hhll/2;
    double Quarter_hhll = distance_hhll/4;
    double Third_hhll = distance_hhll/3;

    • معصومه کرمی

      سلام بله این امکان وجود داره شما میتونید یک متغیر سراسری خارج از event ها تعریف کنیم ( int test = 0)بعد داخل OnInit اول یک شرط بنویسید که اگر مقدار متغیر سراسری شما صفر بود اونوقت مقداری مورد نظرتون رو داخل متغیر test ذخیره کنید در این صورت بیشترین قیمت و کمترین قیمت در اجرای اول رو داخل یک متغیر جدا ذخیر میکنید.
      if (test =! 0)
      {
      test = hHigh-lLow
      }

  13. mahdi.cs (خریدار محصول)

    سلام و درود خانم مهندس دوره عالیه
    تشکر و قدردانی بایت زحمات شما و تیم هم رویش همچنین استاد آصفی
    بنده با دیدن آموزش ها چند تا ربات طراحی کردم
    منتها چند خطا میدن در زمان بریک ایون و تریلینگ استاپ و با تهیه بسته دیباگ تونستم خطاها رو دیباگ کنم و تقلیل بدم اما این خطای ذیل که فرستادم خیلی وقتمو گرفته
    به این صورت که در شرایط لایو بازار که تست میشه ، ربات پوزیشن می گیره تا کمی وارد سود میشه و با توجه به تایید شرایط تریلینگ استپ و یا بریک ایون پوزیشن سریع بسته میشه و خطای ذیل رو میده بی زحمت راهنمایی کنید سپاس خانم مهندس

    10036

    TRADE_RETCODE_POSITION_CLOSED

    Position with the specified POSITION_IDENTIFIER has already been closed

    • معصومه کرمی

      سلام وقت شما بخیر خطایی که شما دریافت کردن یعنی تیکت سفارش که قراره بسته بشه درست نیست قبل از اینکه تیکت سفارش رو به تابع Close پاس بدین با تابع PositionSelectByTicket پوزیشن مورد نظرتون رو Select کنید.

  14. shynrouzbahani (خریدار محصول)

    سلام استاد ،من با ارور ۱۰۰۲۷ وقتی اکسپرتو اجرا میکنم رو به رو میشم باید چیکار کنم؟ اکسپرتمم همین کراس موینگ هست ممنونم

    • معصومه کرمی

      سلام شما اجرای اکسپرت روی حسابتون رو فعال نکردید از مسیر زیر اجرای اکسپرت و ارسال سفارش توسط اکسپرت را فعال کنید.
      Tools>Options>ExpertAdvisor>AllowAlgoritmicTrading

  15. Sajjad

    سلام مهندس کرمی
    وقت بخیر
    با دیدن تمام آموزه های پیشنیاز و پیشرفته میتونیم با تمرین هر استراتژی معاملاتی که در ذهنمون هست رو بدون محدودیت(مثل استراتژی هایی که بر پایه ساختار بازار هستند و اندیکاتوری ندارند یا استراتژی هایی که صرفا بر اساس تجاربمون هستند)تبدیل به اکسپرت کنیم؟

    • معصومه کرمی

      سلام طبیعتا خیر شما ممکن بینهایت ایده برای ساخت اکسپرت داشته باشید این آموزش از صفر ساخت اکسپرت اکسپرت رو به شما آموزش میده و بعد تو بسته پیشرفته امکانات حرفه ای به اکسپرت هاتون میتونید اضافه کنید و بعد اصول زبان MQL5 و اکسپرت نویسی رو بلد هستید حالا با جستجو و تلاش میتونید ایدهاتون رو به اکسپرت تبدیل کنید

  16. poodineh.mohammadreza73 (خریدار محصول)

    سلام خانم کرمی خسته نباشید .
    تو بخش stop loss calculation functions میشه به جای عدد ثابت برای pStopPoint یک تابع مثلا کراس دو خط مویینگ اوریج استفاده کرد برای مشخص شده میزان ضرر وارد شده؟ میخوام حد ضرر به صورت داینامیک باشه و در صورت اینکه معامله با ضرر بسته شد به اندازه ضررم در معامله بعدی حجم اضافه کنم
    تشکر لطفتان پایدار

  17. شهباز طارمی

    سلام برای این توانایی چه آموزشی و چه پیش نیازی را بایستی پاس کنیم؟خود فارکس هم اموزش میدهید؟

  18. سلمان

    سلام خانم کرمی
    ضمن تشکر بابت آموزشهای خوب و مفیدتون لطفا بفرمایید کاری که اینجا با زبان mql یاد میگیریم چه تفاوتی با نرم افزار forex strategy bp داره ؟ استحضار دارید که در اونجا به راحتی میشه ربات ساخت و در محیط متاتریدر ازش بک تست هم گرفت و نیازی به این همه زحمت نیست. ممنون از راهنماییتون.

    • معصومه کرمی

      سلام و ممنون از سوال خوبتون.
      ببینید ساخت اکسپرت به صورت گرافیکی ایده بسیار خوبیه ولی خب کدنویسی یعنی داشتن اختیارات بیشتر. برای نمونه:
      ۱- شاید نیاز داشته باشین که داده‌های بازار رو در اکسپرتی رو تحلیل و چیزی رو مثلا ضرایب آلفا و بتا و … رو استخراج کنیم (آموزش اتصال متاتریدر به پایتون).
      ۱.۵- شاید نیاز داشته باشین که اکسپرتی مبتنی بر یادگیری ماشین و شبکه‌های عصبی عمیق بسازید.
      ۲- شاید قرار نیست اکسپرت معامله گر بسازین. شاید بخواهین اکسپرتی بسازین که مثلا پنل معاملاتی اختصاصی شما باشه. یا اکسپرتی که گزارش‌های خاصی به شما بده. مثلا این اکسپرت اتصال متاتریدر به تلگرام (+) رو ببینید.
      ۲.۵- شاید نیاز داشته باشین که سبک خاصی از استراتژی مثلا پرایس اکشن رو پیاده سازی کنید که با امکانات گرافیکی پیش فرض میسر نباشه.
      ۳- شاید پول کافی برای خرید فارکس استراتژی بیلدر نداشته باشید. البته متاسفانه در ایران برای نرم‌افزارهای خارجی نسخه‌های کرک شده استفاده میشن.
      ۴- شاید در آینده از چت جی پی تی بخواهین که براتون استراتژی خاصی رو کدنویسی کنه. با دانش برنامه نویسی در آینده می تونید کدهای تولیدشده توسط مدل‌های زبانی (به ویژه چت جی پی تی) رو به سادگی درک و استفاده کنید.
      ۵- ممکنه بخواهین اکسپرتی بسازین که در کنار فارکس در بورس ایران هم اجرا بشه. درسته که معامله خودکار در بورس برای اشخاص حقیقی فعلا محدوده ولی سیگنال گیری به وسیله اکسپرت و یا ساخت اکسپرت‌های یوتیلیتی مشکلی نداره.
      در پایان با وجود مثال‌های بالا دقت کنید که هر ابزاری برای نیازی ساخته شده و ممکنه الان نیاز شما یادگیری کدنویسی نباشه. باید به نیازمون دقت کنیم.

  19. ساسان صدفی (خریدار محصول)

    سلام خسته نباشید
    چجوری اطلاعات یک کندل قبل و دو کندل قبل رو جدا بیرون بکشم؟ چون میخوام بعضی اطلاعاتشون رو با هم مقایسه کنم بعد شرط بذارم.
    ممنون میشم راهنمایی کنین

    • معصومه کرمی

      سلام وقتتون بخیر میتونید اطلاعات کندل ها رو مطابق فصل سوم آموزش پیشرفته از سرور بیرون بکشید و داخل آرایه ذخیره کنید و بعد اعضای آرایه با مشخص کردن ایندکس آن برای مقایسه اطلاعات استفاده کنید

  20. شريف لطفي (خریدار محصول)

    سلام مجدد. در رابطه با سوال قبليم و اروري كه داشتم يكبار كامل كل سورس كدها رو از مجموعه فولدري كه در پنل دانلود من گذاشتيد در فولدر include كپي كردم و مشكل ارورها حل شد.

    • معصومه کرمی

      سلام ممنون که مشکلتون برطرف شد پیام دادین.

  21. شريف لطفي (خریدار محصول)

    سلام.ضمن تشكر از خانم مهندس كرمي. دوره ها واقعا بي نظيرن و خيلي كمك كننده ان. دوره اكسپرت نويسي در فاركس رو دنبال كردم. خيلي از تبع ها مثل order و … بدون ارور كاپايل و اجرا شدن . رسيدم به درس پانزدهم(مديريت سرمايه ) فايل MoneyManagement.mqh را در include كپي كردم. فايل TestMoneyManegment.mq5 رو هم در پوشه اكسپرت ها كپي كردم (مثل بقيه اكسپرتها) ولي در موقع كامپايل 16 ارور ميده كه همه ارورها برميگرده به تابع double VerifyVolume(string pSymbol,double pVolume) در فايل MoneyManagement.mqh دليلش رو نميدونم و در متن فايل هم تغييري ندادم. همه خطوط اين تابع رو ارور ميده. اولين ارور هم اينه
    ‘▲’ – unexpected token, probably type is missing?
    كه در خط اول تابع VerifyVolume قبل از { نشون مي ده. بنظرم يا يه import يا include يا يه چيزي جا افتاده . اگه ميشه يه راهنمايي بفرماييد. ممنون

  22. سید مهدی محمودی (خریدار محصول)

    با سلام
    بنده موقع اجرا اکسپرت با ارور Error 10030 – Invalid order filling type مواجه میشم
    بررسی کردم دیدم برای جفت یه سری جفت ارز ها از FOK استفاده میشه و مثلا برای طلا از IOC
    ولی توی آموزش شما همرو از FOK استفاده کردین
    آپدیتی ندارین برای این موضوع که خودش filling type رو تشخیص بده؟

    • معصومه کرمی

      سلام با تابع SymbolInfoInteger میتونید filling type هر نماد رو اط سرور بخونید و بعد این مقدار رو به متغیر type_filling ابجکت request پاس بدید. بصورت زیر:

      int filling=(int)SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE);
      ENUM_ORDER_TYPE_FILLING pFillType;
      if(filling == 1 || 2) pFillType = ORDER_FILLING_FOK;
      else if (filling == 1) pFillType = ORDER_FILLING_FOK;
      else if (filling == 2) pFillType = ORDER_FILLING_IOC;
      else Print(filling);
      request.type_filling = pFillType;

  23. مهرداد ارمیون (خریدار محصول)

    با سلام در فایل 02MarketExecutionقسمت HB-MQL5-PL-ForexEA-04-RewriteModifyPositionارورModify position: Error 10013 – Invalid requestنشان می دهد و حد ضرر و حد سود قرارداده نمیشود

    • معصومه کرمی

      سلام نقطه ی حدضرر یا حدسود را اشتباه وارد کرده اید لطفا قیمت ها را متناسب با نمادی که اکسپرت روی آن اجرا می شود وارد کنید

  24. سید مهدی محمودی (خریدار محصول)

    با سلام کارشناس محترم بنده موقع استفاده از Price.Close(1) ارور دریافت میکنم 2023.01.31 13:48:21.080 smm2 (XAUUSD.,H4) array out of range in ‘Price.mqh’ (45,13)

    چیکار باید کرد؟

    • معصومه کرمی

      سلام همینطور که در آموزش هم گفته شده شما ابتدا باید تابع Update از ابجکت Price بصورت زیر اجرا کنید
      Price.Update(Symbol,PERIOD_H4)
      و بعد با تابع Close به قیمت بسته شدن دسترسی پیدا میکنید.

  25. سید مهدی محمودی (خریدار محصول)

    با سلام
    بنده موقع اجرا اکسپرت با ارور Error 10030 – Invalid order filling type مواجه میشم
    بررسی کردم دیدم برای جفت یه سری جفت ارز ها از FOK استفاده میشه و مثلا برای طلا از IOC
    ولی توی آموزش شما همرو از FOK استفاده کردین
    آپدیتی ندارین برای این موضوع که خودش filling type رو تشخیص بده؟

  26. میثم نصر آزادانی (خریدار محصول)

    if(!Return_Low_High(now_bid, new_price_low, new_price_high))
    درود به شما
    این کد را راهنمایی کنین ممنون میشم

  27. سعید فروغی (خریدار محصول)

    با سلام و تشکر از اموزشهای مفید شمامیخواستم امکان مارتینگل را به اکسپرتها اضافه کنم در مارتینگل اخرین پوزیشن که بسته شده را از تب History دریافت کرده اگر با ضرر بسته شده در پوزیشن بعدی اخرین order که باضرر بسته شده رادر یک ضریبی مثلا 2یا بیشتر ضرب میکنیم میخواستم در صورت امکان راهنمایی کنید چند کد هم نوشتم ولی جواب نداد

  28. امیر حسین عزیزی

    بسیار آموزش مفیدی بود . ممنون از مدرس محترم دوره

    • معصومه کرمی

      سلام ممنون از همراهی شما

  29. احسان کرمی (خریدار محصول)

    سلام مجدد با بررسی مشکلات بقیه متوجه شدم که باید ORDER_FILLING_FOK را قرار دهم برای اکسپرت Pending Expert Advisor در بروکر لایت فارکس و الان مشکلم تا حدودی حل شده یعنی خرید انجام میشود ولی tp و sl برای فروش انجام نمیشود.ممنون میشم راهنماییم کنین

    • معصومه کرمی

      سلام به شما
      منظورتون اینکه بعد از ثبت سفارش توسط اکسپرت sl و tp برای سفارش ارسال میشود ولی در زمان برخورد قیمت با آن ها سفارش بسته نمیشود ؟ یا کلا tp و sl برای سفارش تعریف نمی شود؟

  30. احسان کرمی (خریدار محصول)

    با سلام و خسته نباشید بنده آموزش کامل بسته مقدماتی شما رو دیدم خیلی جامع و مفید بود فقط فایلهای اکسپرت مربوط به سفارش شرطی را هم در مکان مربوطه کپی کردم و با نسخه متاتریدر لایتفارکس اجرا کردم فقط الان مشکلی که هست سفارشاتی که به موقعیت خرید میرسند هم خودبه خود ثبت نمیشند و خطای nomoney میدهد در صورتی که من داخل دیپازیت 10000 تا usd گذاشتم میشه راهنمایی کنین که وقتی از استراتژی تستر دارم استفاده میکنم و داخل گزینه دیپازیت هم 10000 تا گذاشتم چرا میزنه nomoney

    • معصومه کرمی

      سلام وقت شما بخیر لطفا متن خطای دریافتی در زمان اجرا را گزارش کنید.

  31. شريف لطفي (خریدار محصول)

    سلام. اول اينكه واقعا خسته نباشيد و خدا قوت به خانم مهندس كرمي . واقعا عالي و حرفه اي تدريس كرديد.
    سوالي داشتم: در تب setting پنجره strategy tester چطور مسير اكسپرت رو عوض كنم؟ من اكسپرت simple advisor رو توي كدوم پوشه كپي كنم كه بتونم موقع اجراي اكسپرت اونو تو تب setting ببينم؟
    آيا امكان تعويض مسير اكسپرت هست يا ثابته؟

    • معصومه کرمی

      سلام خیلی خوشحالم که آموزش برای شما مفید بوده.
      در تب setting فقط اکسپرت های که در پوشه ی Expert Advisors هستن قابلیت اجرا در استراتژی تستر رو دارن.
      شما فایل ex5 اکسپرت مورد نظرتون رو در مسیر زیر در متاتریدر کپی کنید.
      file>open Data folder> MQL5>Experts
      بعد از کپی کردن فایل یک بار متاتریدر رو ببنید و بعد باز کنید.

  32. میثم (خریدار محصول)

    قیمت را چطوری به یه متغیر پاس بدم تا بعد اگر قیمت با اون برابر بود سفارش نزاره. اینطوری مینویسم int myprice == result.ask ولی اوکی نمیشه خطای ‘==’ – semicolon expected میده …..چطوری بنویسمش ….ممنونم

    • معصومه کرمی

      عملگرد == برای مقایسه دو مقدار استفاده میشه برای ذخیره مقدار یک متغیر از مساوی استفاده کنید.
      بعد از اینکه سفارش رو ارسال کردیت قیمت که در آن سفارش ارسال شده رو از سرور بخونید و داخل متغیر myprice ذخیره کنید.

  33. RezaBahrami (خریدار محصول)

    سلام
    اولین خطا مربوط به خط 18 است.
    و همچنین در چندین خط دیگر نیز تکرار شده.

    • معصومه کرمی

      سلام مجدد من دوباره فایل های پیوست شده به آموزش رو بررسی کردم خطای نیست و اکسپرت ها به درستی اجرا میشن.
      احتمالا شما یکجا از کدها رو تغییر دادین و این باعث اجرا نشدن اکسپرت ها میشه یکبار دیگه فایل پیوست شده به هر فصل را دانلود و به متاتریدر اضافه کنید و دوباره اکسپرت را اجرا کنید.

  34. میثم (خریدار محصول)

    میشه استاد کدش را بگین چطور بنویسم

  35. RezaBahrami (خریدار محصول)

    با سلام
    تعداد خطاها در هر کدام از فایل های زیر
    Moving Average Cross:74
    Pending Order Breakout:81
    می باشد و خطای اولیه در هر دو فایل بالا به شرح زیر است:
    ‘CTradeHedge’ – unexpected token, probably type is missing?
    لطفا راهنمایی بفرمایید.

    • معصومه کرمی

      این خطای سینتکس میشه بفرمایید این خطا روی خط چندم از فایل CTradeHedge اتفاق افتاده؟

  36. میثم (خریدار محصول)

    قبل از هر چیزی تشکر کنم که وقت میذارین استاد عزیز
    این کار را هم انجام داده بودم ولی نمیشه
    Deviation را هم صفر کردم ولی باز نشد
    پیشنهادتون چیه

  37. RezaBahrami (خریدار محصول)

    با سلام
    حدود دو هفته پیش این بسته را خریداری کردم ولی متاسفانه فایل های زیر اجرا نمیشه.
    1.TrailingStops
    2.tradehedg
    3.TradeHedge
    4.Trade

    • معصومه کرمی

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

  38. میثم (خریدار محصول)

    وقت بخیر استاد عزیز
    تابع Openposition را برداشتم ولی تو یک قیمت چندین سفارش میزاره چکار کنم تو هر قیمت فقط یک سفارش بزاره….ممنونم

    • معصومه کرمی

      سلام قیمتی که سفارش در اون ثبت میشه رو داخل یک متغیر موقت ذخیره کنید و بعد یک شرط بزارید که اگر قیمت برابر با مقدار این متغیر بود سفارش جدید ارسال نشود.

  39. میثم (خریدار محصول)

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

  40. میثم (خریدار محصول)

    وقت بخیر استاد عزیز
    این کد که من نوشتم تا وقتی یه سفارش باز هست و به tp نرسیده دیگه برای من سفارش باز نمیکنه باید چی رو ویرایش یا اضافه کنم تا اصلاح بشه؟
    ممنون بابت لطفتون

    • معصومه کرمی

      سلام به شما میتونید شرط openPosition == false رو بردارین در این صورت اگه سفارش بازی باشه باز هم با فراهم شدن شرایط سفارش جدید ارسال می شود.

  41. میثم (خریدار محصول)

    وقت بخیر استاد عزیز
    تو این کدی که براتون ارسال کردم وقتی یه سفارش شرطی بای لیمیت باز میکنه تا به tp نخوره و بسته نشه سفارشی دیگه برای من باز نمیکنه چی رو ویرایش یا اضافه کنم که وقتی سفارش باز دارم باز هم برام سفارش ارسال کنه…..ممنون از وقتی که میگذارین

  42. میثم (خریدار محصول)

    ممنون میشم استاد این کد را بررسی کنین

    void OnTimer()
    {

    MqlTick mytick;
    SymbolInfoTick(_Symbol,mytick);
    int c = NormalizeDouble(mytick.bid,0);
    double b = c / 5;
    int a = NormalizeDouble(b,0);
    int price1 = a * 5;
    int price2 = (a + 1) * 5;
    Print(mytick.bid,mytick.ask, c, b, a, price1, price2);

    MqlTradeRequest request;
    MqlTradeResult result;
    ZeroMemory(request);
    ZeroMemory(glbuylimitplaced);
    ZeroMemory(glbuystopplaced);
    //ZeroMemory(glselllimitplaced);
    //ZeroMemory(glsellstopplaced);

    bool openPosition = PositionSelect(_Symbol);

    if(glbuylimitplaced == false && glbuystopplaced == false && openPosition == false)

    request.action = TRADE_ACTION_PENDING;
    request.deviation = 0.5;
    request.expiration = 0;
    request.price = price1;
    request.sl = 0;
    request.symbol = _Symbol;
    request.tp = price1 + takeprofit;
    request.volume = volume;
    request.type_filling = ORDER_FILLING_RETURN;

    if(price1 < mytick.bid)
    request.type = ORDER_TYPE_BUY_LIMIT;
    else
    request.type = ORDER_TYPE_BUY_STOP;

    OrderSend(request,result);

    if(result.retcode == TRADE_RETCODE_PLACED || result.retcode == TRADE_RETCODE_DONE)
    {

    Print("trade placed");
    do Sleep(100); while(PositionSelect(_Symbol) == false);

    glbuylimitplaced = true;
    glbuystopplaced = true;
    }

    else
    {
    Print("Trade not placed.Error retcode",result.retcode);
    }

    Print("return code:",result.retcode,",volume:",result.volume,",price:",result.price,",bid:",result.bid,",ask:",result.ask);

  43. RezaBahrami (خریدار محصول)

    سلام من چند وقت پیش اموزش ساخت ربات فارکس خریداری کردم الان چند روز دارم فیلم ها رو با دقت نگاه میکنم ولی متاسفانه اکسپرت اجرا نمیشه لطفا راهنمایی بفرمایید.

    • معصومه کرمی

      سلام به شما لطفا شماره درس و خطای دریافتی رو اینجا بزارید تا دقیق تر بتونم راهنمایی کنم.

  44. SINA PAZOKI (خریدار محصول)

    سلام استاد
    خسته نباشید
    بنده وقتی میخوام یه اندیکاتور با تابع custom وارد اکسپرتم کنم و شرایط خرید و فروش می نویسم در کد موقع compile خطایی نمیگیرم اما به هنگام تست استراتژی کد برای من اجرا نمیشود و پنجره ی اندیکاتور مرتبا هی در صفحه ی استراتژی پایینش ظاهر میشود و هی مدام همان اندیکاتور اضافه میشود و ربات اصلا کار نمیکند که پوزیشن بگیرد

    • معصومه کرمی

      سلام به شما
      متاسفانه من چون کد اندیکاتور شمارو ندیدیم دقیق نمیتونم راهنمایی کنم.

  45. میثم نصر آزادانی (خریدار محصول)

    ممنون از پاسخگوییتون استاد
    من کد را همونطور که فرمودین مجدد نوشتم ولی باز هم ارور ‘%’ – illegal operation use را نمایش میده

    • معصومه کرمی

      سلام عملگر ٪ باقیمانده تقسیم دو عدد رو بر میگردونه شما برای تقسیم باید از عملگر / استفاده کنید.

  46. میثم نصر آزادانی (خریدار محصول)

    ممنون از پاسخگوییتون استاد
    من کد را اینطوری نوشتم ولی باز هم ارور ‘%’ – illegal operation use را نمایش میده

    void OnTick()
    {
    MqlTick price;
    SymbolInfoTick(_Symbol,price);
    double a = price.ask;
    int b = a % 5;
    if(b == 0 );
    {
    Print(price.ask);
    }

    };

  47. میثم نصر آزادانی (خریدار محصول)

    درود استاد عزیز ممنون از آموزش خوبتون
    در ارسال سفارش شرطی مثلا وقتی قیمت لحظه ای نماد مورد نظر 1203 هست قیمت را چطوری به تابع ام کی ال ریکوئست پاس بدیم تا در قیمت‌ها رند و مشخص مثلا 1200 و 1210 و… سفارش های بای و سل برای ما ارسال کنه.. ممنون

    • معصومه کرمی

      سلام اگه این نظر رو شما در ادامه نظر قبل ارسال کردین باید بگین اگه شرط b==0 بود اونوقت سفارش شرطی رو در قیمت ‌‌ask اپن لحظه ارسال کنید.
      و قیمت ask رو به پارامتر price ابجکت ریکوئست پاس بدین.

  48. میثم نصر آزادانی (خریدار محصول)

    درود استاد عزیز خسته نباشید ممنون از آموزش کاملتون این کد را یه بررسی کنین ممنون میشم
    MqlTick price;
    SymbolInfoTick(_Symbol,price);
    int a = price.ask;
    int b = a % 5;
    if(b = 0);
    Print(price.ask);

    • معصومه کرمی

      سلام خدمت شما
      من کد شما رو بررسی کردم اولین مشکل اینه که شما باید متغیر a رو با نوع داده دابل تعریف کنید تا قیمت های که از سرور میخونید کامل داخل متغیر ذخیر بشه و بعد کدتون درست کار بکنه
      مشکل بعدی هم اینکه شما یک شرط if در کدتون تعریف کردین ولی عملکرد این شرط رو درست تعریف نکردین:
      if(b = 0) Print(price.ask);
      یا
      if(b = 0)
      {
      Print(price.ask);
      }

  49. شاهین

    سلام، وقت بخیر
    من قبلا با استفاده از MQL چندتا ربات معامله گر نوشته بودم و روی متاتریدر لانچ کرده بودم، الان تلاش دارم با استفاده از پایتون این کار رو بکنم، ولی لینک کردن پایتون به متاتریدر یا سایر ابزارها برای معامله خودکار برام خیلی سخته. میخواستم ببینم شما آموزشی در این حوزه دارین؟ یا میتونیم با پرداخت هزینه آموزشی در این زمینه رو درخواست کنیم؟

  50. سید حامد

    سلام وقت بخیر بنده آموزش رو دریافت کردم. دو سه قسمت اول رو دیدم. فایل order.mq5 رو ساختم و اجرا کردم، متاسفانه سفارش اجرا نشد، ارور هم نداد، فقط از محیط کد نویسی خارج میشه و محیط قیمت نماد باز میشه، ولی هیچ پیغامی نمایش داده نمیشه.
    ممنون میشم راهنمایی کنید.

    • معصومه کرمی

      سلام وقت شما هم بخیر
      بعد از اجرای اکسپرت در پنجره ToolBox زبانه Expert را بررسی کنید متن ارور در این زبانه گزارش داده می شود.
      و لطفا متن ارور را در نظرات بفرستین.

  51. ali

    سلام خسته نباشید
    زمان جاری بازار یا تیکهای بازار رو چجوری میشه داخل برنامه نوشت با چه تابعی یا به چه شکلی ؟؟؟
    سپاسگذارم از وقتی که میذارید.

    • معصومه کرمی

      سلام
      زمان حال سرور را با تابع TimeCurrent و زمان حال سیستمی که متاتریدر روی آن اجرا میشود را با تابع TimeLocal می تونید از سرور بخونید.
      لطفا مستندات MQL5 را برای این دوتابع بررسی کنید تا با عملکرد آن ها دقیق تر آشنا شوید.

  52. هادی رفیعی (خریدار محصول)

    سلام من با وجود این که همه فایل ها رو در include قرار دادم ولی کد moving average خطا داره میده موقع کمپایل.
    تغداد 68 تا خطا است که مهم هاش این هاست :
    ‘BuyStopLossPoint’ – undeclared identifier a.mq5 150 22
    ‘SellStopLossPoint’ – undeclared identifier a.mq5 171 23

    و ….
    مثل :
    ‘_Symbol’ – some operator expected a.mq5 171 41

    ‘StopLoss’ – semicolon expected a.mq5 171 49

    که فکر کنم به دلیل عدم فراخوانی یک فایلی باشه !!!
    ممنون میشم نظرتون رو داشته باشم

    • معصومه کرمی

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

  53. رضا اسماعیل پور

    سلام من یک برنامه سفارشی می خواهم چگونه با شما تماس داشته باشم ؟

  54. abolfazl karimi (خریدار محصول)

    با سلام وتشکر بابت آموزش های خوب وکاربردی ارائه شده توسط شما—-یک سوال داشتم مثلا اگر من بخواهم یک لات خرید buy که انجام داده ام با تابع close در حجم های کوچکتر مثلا 0.1 لات بصورت sell بفروشم چکار باید انجام بدهم در آموزشتون کل حجم خرید رو با close بسته اید خیلی ممنون میشم من را راهنمایی کنید خیلی وقته درگیر این موضوع هستم . باتشکر

    • معصومه کرمی

      سلام ممنون
      حجم مورد نظرتون رو به عنوان پارامتر دوم به تابع Close پاس بدین در این حالت بخشی از حجم پوزیشن شما بسته میشود.

  55. mkalamdar@gmail.com (خریدار محصول)

    سلام من فایل های mqh را در فولدر include قرار دادم ولی اکسپرت trailing stop موقع کامپایل پیغام خطا می دهد

    • معصومه کرمی

      سلام لطفا به ترتیب آموزش ها را مشاهده کنید و بعد از کامل شدن کدها اکسپرت را اجرا کنید.
      در صورتی که به مشکل برخوردید اسم درس و متن ارور را بفرستید.

  56. arsm721@gmail.com

    سلام وقت بخیر
    من هنوز دوره رو تهیه نکردم و یه سوال داشتم، در حال حاظر من یه اندیکاتور توی سایت تریدینگ ویو به زبان پاین(pine) نوشتم، میخواستم ببینم توی محیط زبان MQL5 میتونم اون اندیکاتور یا هر اندیکاتور جدید دیگه ای که بخوام رو بازنویسی کنم و توی ربات ازش استفاده کنم؟ یا فقط از یکسری اندیکاتور از پیش تعریف شده مشخص میشه استفاده کرد؟
    ممنون

  57. محمد جواد خرامان (خریدار محصول)

    سلام
    آموزش بسیار با کیفیت و ارزشمندی هست و قیمت فوق العاده مناسبی داره .
    واقعا جا داره از استادی که این آموزش رو ارائه دادن و کل مجموعه همرویش تشکر کنم .

  58. رضا ساقی پور (خریدار محصول)

    سلام خانم مهندس وقتتون بخیر
    در مواردی وقتی سفارش توسط ربات انجام میشه ، حد سود و ضرر را اعمال نمیکنه و خطا میده ، دلیلش چیه ؟
    متن خطا Modify position : Error 10013 – invalid request

    • معصومه کرمی

      سلام به شما
      احتمالا قیمت حد ضرر و حدسود را اشتباه محاسبه کردید کدتون را دی باگ کنید و محاسبات را دوباره چک کنید.

  59. رضا ساقی پور (خریدار محصول)

    با سلام و تشکر از خانم مهندس کرمی
    چطور میتونم اکسپرتی که نوشتم ، برای یه اکانت واقعی روی 5 تا جفت ارز ران کنم ؟
    من درصد ریسک معامله را یک تعریف کردم ، میخواهم روی 5 تا نماد ران کنم که در مجموع ریسک 5 بشه و معاملات روی 5 نماد انجام بشه
    با تشکر

    • معصومه کرمی

      سلام به شما نمودار پنج جفت ارز مورد نظرتون رو باز کنید و بعد اکسپرت را برای هر یک از نمودار ها اجرا کنید.
      برای مدیریت ریسک مقدار کل سرمایتون را تقسیم بر پنج کنید و مقدار بدست آمده را به پارمتر ورودی Money پاس دهید. درصد ریسک را هم پنج در صد تعریف کنید. در این صورت در هر جفت ارز مدیریت ریسک را برای پنج درصد از یک پنجم سرمایه انجام می دهید که در مجموع ریسک روی کل سرمایه شما 5 درصد می شود.

  60. رضا ساقی پور (خریدار محصول)

    با سلام و تشکر از خانم مهندس کرمی
    وقتی از Trailing Stop استفاده میکنم ، حد سود از بین میره و از نمودار پاک میشه ، در صورتی که اگر Take Profit فعال باشه معمولا قیمت به اون برخورد میکنه و حد سود میزنه ، ولی اینجوری قیمت برمیگرده پایین و به Trailing Stop برخورد میکنه و در نتیجه میزان سود خیلی کمتر میشه
    ممنون میشم راهنمایی کنید

    • معصومه کرمی

      سلام به شما
      اگه می خواینTake Profit را به همراه Trailing Stop در اکسپرت ها داشته باشید باید تابع TrailingStop را به صورت زیر بازنویسی کنید .(تابع TrailingStop در فصل اول از آموزش پیشرفته اکسپرت بورس ساخته شده)
      1- یک پارامتر ورودی جدید با نام pTakeProfit برای تابع pTakeProfit تعریف کنید
      2- بعد در تعریف عملکرد تابع این پارامتر را به متغیر tp ابجکت request پاس دهید.(request.tp = pTakeProfit)
      3-داخل اکسپرت ها مقدار Take Profit را با تابع BuyTakeProfit یا SellTakeProfit محاسبه کنید و مقدار را داخل یک متغییر ذخیره کنید.
      4- مقدار TakeProfit محاسبه شده در بند بالا را به عنوان پارامتر pTakeProfit به تابع TrailingStop پاس دهید.
      به این ترتیب بعد از اجرای اکسپرت و ارسال سفارش برای شما یک Take Profit ثابت بر اساس قیمتی که سفارش در آن ثبت شده رسم می شود و Trailing Stop هم براساس قیمت هر تیک محاسبه و رسم می شود.

  61. رضا ساقی پور (خریدار محصول)

    با سلام و تشکر از آموزش بسیار خوب شما
    بنده کدها رو در برنامه متاتریدر 4 اجرا کردم و ارور میده ، کدها حتما باید در برنامه متاتریدر 5 اجرا بشه ؟

    • معصومه کرمی

      سلام بله این آموزش بر مبنای زبان برنامه نویسی MQL5 ساخته شده و از ابتدای آموزش باید کدها را در متاتریدر 5 اجرا کنید.

  62. محسن صادقی (خریدار محصول)

    با سلام و تشکر از خانم مهندس کرمی بابت آموزش عالی و کاربردیشون
    من می خواستم بپرسم راهی برای ارتباط با مدرس در رابطه با سوالات و راهنمایی هایی که در هنگام برنامه نویسی پیش می آید وجود دارد؟
    من چندین سوال دارم که ممنون میشم امکان پاسخ دادن به آنها توسط مدرس بر قرار بشه

    • معصومه کرمی

      سلام به شما
      سوال هاتون رو میتونید همین جا در بخش نظرات آموزش بپرسید.

  63. بابایی

    سلام
    مطلبی در مورد استخراج دیتا از mql5 هم دارید یا خیر
    مثلا استخراج هیستوری معاملات و کار با تیک و حجم معاملات

    • معصومه کرمی

      سلام
      ما در بسته ی پیشرفته در فصل سوم کار با اطلاعات کندل ها ( Close Price, High Price, Low Price ,Open Price) و بیرون کشیدن آن ها از سرور را آموزش دادیم.
      لطفا سرفصل ها و فیلم معرفی آموزش را با دقت بررسی کنید.

  64. R.Gh (خریدار محصول)

    سلام
    لطفا ایمیلتان را چک نموده و درخصوص یک سوال از نحوه اجرای اندیکاتور سفارشی در MT5 راهنمایی بفرمایید.

  65. مصطفی احمدزاده (خریدار محصول)

    خانم کرمی تایم فریم نه تاریخ اجرای اکسپرت مثلا سه ماهه یکساله (از تاریخ… تا تاریخ ….)مثلا یکسال یک میگیری سود میده مال سه ماه قبل رو ضرر. کدوم قابل اتکاء هستش ؟

  66. رضا غلامرضایی (خریدار محصول)

    سلام
    آیا اندیکاتور سفارشی در متاتریدر ۵، فقط در یک تایم فریم اجرا می شود و چرا در تایم های دیگر به خوبی کار نمی کند؟

    • معصومه کرمی

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

  67. مصطفی احمدزاده (خریدار محصول)

    با سلام و تشکر از آموزش خوبتون مخصوصا که خود کدها رو هم ضمیمه کردین .موند اصلی ترین قسمت بهینه سازی اکسپرت که برامون خوب کار کنه وسود ساز باشه اگه ممکنه برا اوتن هم یه اموزش جامع ارائه بفرمائین و سوال :
    چرا در بک تست در تاریخ زمانی نتیجه متفاوته مثلا سه ماه میگیری زیان نشون میده دوساله میگیری سود

    • معصومه کرمی

      سلام
      خوشحالم که آموزش واستون مفید بوده
      بله بهینه سازی و تحلیل اکسپرت ها مبحث خیلی مهم و کاربردیه در این مورد هم در آینده اگر عمری باشه آموزش تهیه می کنیم.
      اما در رابطه با سوددهی اکسپرت ها‍؛ ببنید اکسپرت ها برنامه های کامپیوتری هستن که براساس استراتژی ما عمل می کنن. از طرفی استراتژی های معاملاتی را ما براساس تجربه که از بازار داریم و شرایط بازار طراحی میکنیم استراتژی وجود نداره که در تمام موارد به شما سود بده یک استراتژی اگه 60 تا 70 درصد مواقع سودده باشه می شه گفت استراتژی مناسبیه.
      اکسپرتتون رو روی تاریخچه یک نماد اجرا کنید و بعد سعی کنید تنطیمات اکسپرت را در جهت سودده تر شدن اکسپرت روی اون نماد تنظیم کنید.

  68. سجادمحمدزاده

    سلام اگه رو متاتریدر 4جواب بده یدونه من میخام

    • معصومه کرمی

      سلام این آموزش براساس زبان MQL5 طراحی شده و مثال ها و اکسپرت ها همه روی متاتریدر 5 اجرا می شن.

  69. محمدیزدی (خریدار محصول)

    سلام. ببخشید دلیل اینکه با وجود اینکه تمام سورس ها در پوشه مربوطه کپی شده اند ولی باز خطای زیر را می گیرم چیه؟
    cannot access to private member ‘request’ declared in class ‘CTrade’ TradeHedge.mqh

  70. حمید احتشامی (خریدار محصول)

    سلام تشکر از آموزش خوب شما
    مشکلی در کد وجود دارد .
    زمانی که پوزیشن با تریلینگ بسته بشه دیگه پوزیشن همسو باز نمیکنه
    مثلا اگر بای بوده پوزیشن قبل دیگه پوزیشن بای باز نمیکنه باید شرایط سل برقرار بشه و سل بگیره
    خیلی از موقعیت ها از دست میره

    • معصومه کرمی

      سلام به شما
      در اکسپرت Moving Average cross استراتژی که باهاش اکسپرت رو ساختیم اینکه در محل برخورد دو Moving Average اگر شرایطی که برای خرید تعریف کردیم برقرار بود اکسپرت سفارش Buy را ارسال کنه و اگر شرایط sell برقرار بود پوزیشن sell را باز کنه.
      از طرفی هدف ما در این آموزش ساخت یه اکسپرت سودده یا بهینه سازی یک استراتژی نیست.هدف ما اینکه یادبگیریم چطور با زبان MQL5 و تابع های آن استراتژی ها را به اکسپرت تبدیل کنیم.
      در اکسپرت Moving Average cross اگر می خواید در تمام کندل ها که شرایط Buy برقرار باشه سفارش ارسال بشه باید شرط glBuyTicket == 0 را حذف کنید.
      پیشنهاد می کنم اول استراتژی مدنظرتون رو دقیق مشخص کنید و بعد سعی کنید با template این آموزش اکسپرت متناسب با استراتژیتون بسازید.

  71. abolfazlkarimi

    سوال داشتم اینکه در آموزشتون trailing stop با break even stop رو با هم دریک اکسپرت قرار داده اید ? میخواستم بدونم چگونه این کد رو بنویسم تا این دو باهم تداخل نداشته باشند؟

    • معصومه کرمی

      سلام ما در این آموزش برای trailing stop و break even stop دو تابع جدا تعریف کردیم این دو تابع به هم وابسته نیستند و شما در اکسپرت های که می سازید از هر کدوم از این تابع ها بصورت مستقل می تونید استفاده کنید.

  72. امیر حسین عزیزی

    سلام. بنده بسیار دنبال این آموزش بودم و حالا در این سایت پیدا کردم. این آموزش با این قیمت واقعا عالی است. آموزش های قبلی استاد کرمی در زمینه بورس هم دیدم که عالی بودن. بنده تهیه کردم بعد از مشاهده نظرم رو میذارم اینجا تا دیگران استفاده کنند.

  73. معصومه کرمی

    ممنون از لطف شما. امیدوارم مفید باشه.

  74. مصطفی آصفی

    سلام و سپاس از سخاوت شما در انتشار این آموزش با این بهای مناسب در شرایطی که دوره‌های آموزشی با سرفصل مشابه چندین میلیون هزینه رو به مخاطب تحمیل می کنن.
    شما انحصارشکنی کردید. آموزش با هدف گسترده کردن اکوسیستم یک حوزه تخصصی نگاه قشنگیه.

دیدگاه خود را بنویسید

SKU HB-MQL5-PL-ForexEA Category Tags , , , , ,