MQL5 OrderSend Buy Sell

| MQL5 | 849 | 574 วันที่แล้ว
วันนี้ผมต้องการเขียน MQL5 เพื่อทำการ buy order

ผมเลยเข้าไปดู Reference OrderSend เพื่อทำการส่ง Order ไปให้ Request

ใน OrderSend จะรับพารามิเตอร์ดังนี้

bool  OrderSend( 
   MqlTradeRequest&  request,      // query structure 
   MqlTradeResult&   result        // structure of the answer 
   );
Parameters request [in] Pointer to a structure of MqlTradeRequest type describing the trade activity of the client. result [in,out] Pointer to a structure of MqlTradeResult type describing the result of trade operation in case of a successful completion (if true is returned). Return Value In case of a successful basic check of structures (index checking) returns true. However, this is not a sign of successful execution of a trade operation. For a more detailed description of the function execution result, analyze the fields of result structure. จากตัวอย่างแสดงว่าเราต้องส่ง request กับ result เข้าไป และเราก็ส่ง response เข้าไปด้วย จากนั้นเราเลยไปดู MqlTradeRequest กันต่อครับ เพื่อดูว่า request มีตัวแปรอะไรบ้าง เมื่อเข้าไปดู MqlTradeRequest ก็จะได้ประมาณนี้
struct MqlTradeRequest 
  { 
   ENUM_TRADE_REQUEST_ACTIONS    action;           // Trade operation type 
   ulong                         magic;            // Expert Advisor ID (magic number) 
   ulong                         order;            // Order ticket 
   string                        symbol;           // Trade symbol 
   double                        volume;           // Requested volume for a deal in lots 
   double                        price;            // Price 
   double                        stoplimit;        // StopLimit level of the order 
   double                        sl;               // Stop Loss level of the order 
   double                        tp;               // Take Profit level of the order 
   ulong                         deviation;        // Maximal possible deviation from the requested price 
   ENUM_ORDER_TYPE               type;             // Order type 
   ENUM_ORDER_TYPE_FILLING       type_filling;     // Order execution type 
   ENUM_ORDER_TYPE_TIME          type_time;        // Order expiration type 
   datetime                      expiration;       // Order expiration time (for the orders of ORDER_TIME_SPECIFIED type) 
   string                        comment;          // Order comment 
   ulong                         position;         // Position ticket 
   ulong                         position_by;      // The ticket of an opposite position 
  };
เมื่อเห็น ฟังก์ชัน OrderSend ที่เราจะส่งไปเปิด Order Buy แล้ว จากนั้นเราก็ได้เห็น Request แล้ว จากนั้นสิ่งที่เราจะทำต่อไปก็คือ เราก็สร้าง request แล้วเซตค่าตามต้องการ จากนั้นก็ส่งเข้าไปใน OrderSend เพียงแค่นี้เราก็ได้แล้ว ใน Reference ยังมีตัวอย่างโค้ดอยู่ด้วย ตัวอย่างโค้ด
#define EXPERT_MAGIC 123456   // MagicNumber of the expert
//+------------------------------------------------------------------+
//| Opening Buy position                                             |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declare and initialize the trade request and result of trade request
   MqlTradeRequest request={0};
   MqlTradeResult  result={0};
//--- parameters of request
   request.action   =TRADE_ACTION_DEAL;                     // type of trade operation
   request.symbol   =Symbol();                              // symbol
   request.volume   =0.1;                                   // volume of 0.1 lot
   request.type     =ORDER_TYPE_BUY;                        // order type
   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // price for opening
   request.deviation=5;                                     // allowed deviation from the price
   request.magic    =EXPERT_MAGIC;                          // MagicNumber of the order
//--- send the request
   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());     // if unable to send the request, output the error code
//--- information about the operation
   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
  }
//+------------------------------------------------------------------+
จากตัวอย่างโค้ด เราได้เซตค่า value ให้เท่ากับ 0.1 สำหรับ value ที่จะทำการ SendOrder จากนั้นเราก็ใช้ ORDER_TYPE_BUY เพื่อบอกว่าเป็นการสั่ง BUY ถ้าเราต้องการสั่ง SELL เราสามารถใช้ Enum ORDER_TYPE_SELL แล้วยังมีอื่น ๆ อีกที่ต้องการเช่น ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP, ... (ต้องไปดูใน Reference เอานะ) เพียงแค่นีเราก็มีตัวอย่างการสั่งซื้อ Order ได้แล้ว
comments

[1]
Adobe-PDF
758 D
[1]
Android
649 D
[40]
Animal
742 D
[1]
Apache
758 D
[2]
[10]
[2]
CMS-SMF
759 D
[1]
[3]
[1]
Database
758 D
[4]
[1]
Docker
654 D
[1]
Fruit
742 D
[2]
Git
545 D
[5]
HTML
545 D
[1]
Housework
747 D
[2]
IT
739 D
[2]
Imacro
759 D
[17]
Java
542 D
[1]
Java-Web
649 D
[1]
[2]
MQL5
571 D
[3]
MakeMoney
544 D
[18]
[1]
Maven
543 D
[1]
Mobile
756 D
[1]
NodeJs
544 D
[3]
Physics
540 D
[4]
PugJS
544 D
[2]
React
554 D
[132]
Science
741 D
[1]
[2]
Spring
543 D
[7]
[2]
[1]
[4]
Ubuntu
709 D
[1]
WebLogic
740 D
[4]