MQL5 OrderSend Buy Sell

| MQL5 | 737 | 516 วันที่แล้ว
วันนี้ผมต้องการเขียน 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
700 D
[1]
Android
591 D
[40]
Animal
684 D
[1]
Apache
700 D
[2]
[10]
[2]
CMS-SMF
701 D
[1]
[3]
[1]
Database
700 D
[4]
[1]
Docker
595 D
[1]
Fruit
684 D
[2]
Git
487 D
[5]
HTML
487 D
[1]
Housework
689 D
[2]
IT
681 D
[2]
Imacro
701 D
[17]
Java
484 D
[1]
Java-Web
591 D
[1]
[2]
MQL5
513 D
[3]
MakeMoney
486 D
[18]
[1]
Maven
485 D
[1]
Mobile
698 D
[1]
NodeJs
486 D
[3]
Physics
482 D
[4]
PugJS
486 D
[2]
React
496 D
[132]
Science
683 D
[1]
[2]
Spring
485 D
[7]
[2]
[1]
[4]
Ubuntu
650 D
[1]
WebLogic
682 D
[4]