توابع پوزیشن گیری و مدیریت – درس چهارم – کتاب آموزش زبان mql (دوره متوسطه)

آموزش ام کیو ال

توابع پوزیشن گیری و مدیریت

درس چهارم

در این درس با  تابع (Order Send) در زبان برنامه نویسی MQL آشنا خواهید شد. توابع ترید در اسکریپت و اکسپرتها مورد استفاده قرار می گیرند. و پر کاربردترین این توابع ، تابع (Order Send)  میباشد.

(Order Send):

این تابع برای باز کردن پوزیشن(position) مورد استفاده قرار می گیرد. 11 ورودی می پذیرد و مقدار خروجی آن عدد Int می باشد.در مقدار خروجی چنانچه پوزیشن باز شود شماره پوزشن را به خروجی می دهد در این صورت منفی1 را به خروجی خواهد داد. همچنین  برای باز کردن پوزیشن هایی از نوع Market مثل buy  و  sell و پوزشن هایی از نوع pending مورد استفاده قرار می گیرد. جهت آشنایی بیشتر با آرگمان های تابع به جدول زیر دقت نمایید.

تابع Order Send

به عنوان مثال :

;OrderSend(Symbol(),OP_BUY,1, Ask,3,1.17432,1.17510,“My order”,12345,0,clrGreen)

نکته در پوزیشن گیری

نوع پوزیشن:

برای آشنایی با OP_BUY  ها به جدول زیر را دقت کنید.

OP_BUY

محاسبه  حد سود و ضرر:

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

حد سود و ضرر

تابع (OrderClose):

برای close کردن order هایی مورد استفاده قرار می گیرد که از نوع MarketOrder هستند. مثل پوزیشن buy  و پوزیشن sell .

پوزیشن BUY ، پوزیشن SELL

ticket : این پارامتر مربوط به ticket number پوزیشن می باشد. ورودی دوم مقدار لات که بناست بسته شود. اگر بخواهید کل پوزیشن بسته شود باید مقدار کل را وارد کنید همچنین می توان نصف پوزیشن را بست، در این حال مقدار نصف را باید وارد کنید.  به عنوان مثال:

;OrderClose(order_ticket,1,Bid,3,Red)

Price: این پارامتر شامل قیمت close  شدن پوزیشن می باشد . این قیمت بستگی به نوع پوزیشن دارد ، اگر پوزیشن از نوع خرید یا Buy باشد قیمت close همان قیمت bid می باشد ولی اگر نوع پوزیشن از نوع sell باشد قیمت  close شدن پوزیشن، همان قیمت Ask می باشد .
Slippage:  این پارامتر شامل مقدار slippage می باشد.
arrow_color : رنگ فلشی است که پس از close  کردن پوزیشن روی چارت قرار می گیرد.

تابع (OrderDelete):

برای delete کردن پوزیشن های pending از این تابع استفاده می شود. خروجی این تابع از نوع bool  می باشد.  اگر این تابع موفق شود پوزیشن مورد نظر را close کند مقدار true  و در غیر این صورت مقدار false  بر می گرداند.

تابع order Delet

مثال :
OrderDelete(order_ticket)

❓ مسئله شماره 7:

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

در پاسخ اکسپرت بسازید و در قسمت onInt دستورها را وارد نمایید

اکسپرت نویسی

  اینک به بررسی یکایک مقدارها می پردازیم.

Symbol : این پارامتر نام نمادی است که پوزیشن قرار است روی آن باز شود و اگر بخواهیم پوزیشن روی نمادی که اسکریپت و اکسپرت را روی آن قرار دادیم باز شود از ()symbol  استفاده می کنیم.

Cmd: این پارمتر برای تعیین نوع order  می باشد و برای پوزیشن های Market و Pending متفاوت می باشد . به عنوان مثال برای باز کردن پوزیشن buy از OP_BUY  و یا مقدار صفر و برای باز کردن پوزیشن sell  از OP_SELL  و یا عدد 1 استفاده می کنیم.

Volume : این پارامتر مربوط به volume  و یا lotsize می باشد و می توان مقدار lotsize را با دو رقم اعشار وارد کرد.

Price : این پارامتر مربوط به قیمت باز شدن پوزیشن می باشد. اگر پوزیشن از نوع خرید باشد قیمت Ask  و چنانچه از نوع فروش باشد قیمت Bid را وارد می کنیم . دلیل استفاده از Ask در buy به تصاویر زیر دقت نمایید.

داخل چارت رفته ، راست کلیک کرده و از منوی ظاهر شده گزینه properties را انتخاب نمایید.

چارت

از صفحه نمایش شده گزینه show Ask line را تیک دار کنید و تیک را از عبارت Show grid بردارید.

آموزش اکسپرت

Slippage  : این پارامتر بر اساس Point تعیین می شود و اگر مقدار آن 50 point باشد بدین معنی است که اگر قیمت به اندازه 5pip بالاتر و یا پایین تر رفت باز هم پوزیشن مورد نظر ما باز شود و در واقع این مقدار قابل اغماض باشد .

Stoploss: این پارامتر بر حسب قیمت می باشد و مقدار Stoploss را تعیین می کند.

Takeprofit: این پارامتر بر حسب قیمت می باشد و مقدار Takeprofit را تعیین می کند.

Comment: این پارامتر برای توضیحات پوزیشن مورد استفاده قرار می گیرد.

Magic: اگر همزمان بیش از یک اکسپرت در حال اجرا باشد برای اینکه هر اکسپرت بتواند تشخیص بدهد که کدام یک از order ها توسط همان اکسپرت باز شده است از پارامتر magic number  استفاده می کند. و هر اکسپرت یک magic number یکتا و منحصر به فرد دارد. لذا از اعداد 123456 پرهیز کنید و عدد خاص خود را وارد نمایید.

Expiration : این پارامتر مربوط به تاریخ انقضای order های pending می باشد . مثلا زمانی که یک پوزیشن buy_stop باز می کنیم  و لازم است که چنانچه بعد از ساعت order  فعال نشد به صورت اتوماتیک Delete بشود از این پارامتر استفاده می کنیم.

arrow_color :  این پارامتر رنگ فلشی است که پس از باز کردن پوزیشن روی چارت قرار می گیرد.
از آن جایی که بناست از این تابع برای ondeinit نیز استفاده نمایید لذا باید در قسمت بالای تابع onint وارد نمایید. و در نهایت compile را انتخاب و نباید خطایی نمایش شود.

نوشتن اکسپرت

دستورهای بالا برای پوزیشن گیری می باشد. برای بستن پوزیشن از تابع onDeinit استفاده نمایید.

در پایان compile را انتخاب کرده و نباید خطایی نمایش شود.

اکسپرت نویسی

سپس وارد برنامه شوید. برای بررسی نمودن برنامه و اینکه اکسپرت ترید داشته باشد، وارد سربرگ Tools شده و گزینه Options را انتخاب کنید.

چارت

تمام گزینه ها اعم از:

Allow DLL imports(potentially dangerous, enable only, Allow automated trading for trusted applications)  و .Allow WebRequest for listed URL  تیک دار شوند.

چارت اکسپرت

سپس پوشه نام کلاس را به داخل برنامه درگ کنید. تا کادر (نام کلاس تعریف شده)expert – class4 نمایش شود. گزینه Allow live trading را تیک دار کنید.

پوزیشن گیری

در این حالت باید پوزیشن گرفته شود.

اکسپرت

جهت نمایش comment روی نوار راست کلیک کرده و comments را انتخاب کنید.

ترید

بنابراین برای ترید کردن باید شکلک بالای صفحه حالت خندان داشته باشد.

ترید کردن

با پاک کردن اکسپرت باید پوزیشن نیز پاک شود. با راست کلیک در فضای برنامه و انتخاب  گزینه remove  اکسپرت را پاک کنید.

پوزیشن گیری

فلش های سبز و قرمز در برنامه نمایش می شود که فلش سبز به معنای نقطه ای که پوزیشن در آن باز شده و فلش قرمز به معنای close (بستن) پوزیشن می باشد.

بستن پوزیشن

متغیر Point :

کوچکترین گام حرکتی که هر جفت ارز می تواند داشته باشد Point می باشد. مثلا در جفت ارز EURUSD که قیمت تا 5 رقم اعشار نمایش داده می شود کوچکترین گام حرکتی 0.00001  (1Point) می باشد.

به عنوان مثال:

متغیر Point

دستور زیر را وارد متاتریدر کنید تا بر روی برنامه اعمال شود. به عنوان مثال:

متاتریدر

در قسمت چارت عدد محاسباتی نمایش می شود. توجه نمایید صفر آخر نمایش نمی شود.

متاتریدر

جهت درک بیشتر شیوه حذف صفرها عدد را به 51 تبدیل کنید.

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

می توان عدد بالای آن را نیز جمع بست.

اکسپرت

دقت نمایید در کدنویسی چنانچه معادله 2*10+2 مشاهده شود اولویت محاسبه با ضرب می باشد سپس نوبت به جمع یا تفریق می رسد. حال چنانچه بخواهید ابتدا دو عدد با هم جمع بشوند سپس عملیات ضرب صورت بگیرد باید ابتدا دو عدد جمع را داخل پرانتز قرار دهید. در این حالت اولویت برای اعداد داخل پرانتز خواهد بود.

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

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

استاپ لاس

اگر موس را بگیرید برابری آن قابل مشاهده می باشد.

ترید کردن

آموزش MQL

 

 

منبع : کتاب آموزش زبان MQL (دوره مقدماتی)
مدرس : استاد حسین احمدی

 

سایر مقالات مرتبط

متا تریدر چیست؟
متاتریدر

متا تریدر چیست؟

متا تریدر چیست؟ اولین سوالی که هر فرد وقتی می خواهد آموزش های متاتریدر مانند آموزش صفر تا صد mql5،

کامل ترین و بهترین آموزش متاتریدر 4
mql4

کامل ترین آموزش متاتریدر 4

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

پاسخ‌ها

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *