جلسه پانزدهم – تابع OrderSend

در جلسه پانزدهم از آموزش دوره اسکریپت نویسی،  با تابع ()OrderSend  در زبان برنامه نویسی MQL آشنا خواهید شد.

در این جلسه روی توابع ترید کار می کنیم ، توابع ترید در اسکریپت و اکسپرتها مورد استفاده قرار می گیرند. و پر کاربردترین این توابع ، تابع ()OrderSend  میباشد

()OrderSend :  این تابع برای باز کردن پوزیشن مورد استفاده قرار می گیرد .

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

()OrderDelete : برای حذف کردن order های pending  مورد استفاده قرار می گیرد .

()OrderModify : برای Modify  کردن stoploss  و Takeprofit مورد استفاده قرار می گیرد. برخی بروکر ها به تریدر اجازه نمی دهند که به محض اینکه پوزیشن باز شد مقدار stoploss  و Takeprofit را تغییر دهد. در این بروکر ها که اصطلاحا به آنها بروکرهای ECN گفته می شود ابتدا باید با تابع OrderSend پوزیشن را باز کنیم و پارمترهای مربوط به stoploss  و Takeprofit را صفر قرار دهیم و پس از اینکه پوزیشن با موفقیت باز شد با استفاده از تابع OrderModify مقدار stoploss  و Takeprofit را تغییر بدهیم .

تابع ()OrderSend :  این تابع برای باز کردن پوزیشن هایی از نوع Market مثل buy  و  sell و همچنین پوزشن هایی از نوع pending مورد استفاده قرار می گیرد. که در ادامه با آرگمان های تابع آشنا خواهید شد :

int  OrderSend(
string   symbol,              // symbol
int      cmd,                 // operation
double   volume,              // volume
double   price,               // price
int      slippage,            // slippage
double   stoploss,            // stop loss
double   Takeprofit,          // take profit
string   comment=NULL,        // comment
int      magic=0,             // magic number
datetime expiration=0,        // pending order expiration
color    arrow_color=clrNONE  // color
);

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

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

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

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

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

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

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

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

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

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

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

نکته : خروجی تابع ()OrderSend از نوع int  می باشد و اگر این تابع موفق شود که پوزیشن را باز کند مقدار ticketnumber پوزیشن باز شده را بر می گرداند و اگر موفق نشود که پوزیشنی را باز کند مقدار -1 بر میگرداند. به عنوان مثال :


int ticket = OrderSend(_Symbol,OP_BUY,0.10,Ask,30,0,0,”buy Script” ,12345,0,clrGreen);

نکته : اگر در زمان استفاده از تابع OrderSend با خطای trade operations not allowed by setting مواجه شدیم بدین معنی است که دکمه Auto Trading روی disable  قرار دارد و باید این دکمه را روی Enable قرار بدهیم.

2 دیدگاه برای “جلسه پانزدهم – تابع OrderSend

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

You have to agree to the comment policy.