close
函數:OrderGetTicket()
可用來查詢未成交之委託單相關數據,進一步調用OrderGetDouble()、OrderGetInteger()、OrderGetString()會返回先前複製的數據。這意味著訂單本身可能已不存在(或其開盤價、止損/獲利水平或到期日已更改),但仍可以獲得該訂單的數據。為確保收到有關訂單的最新數據,建議在引用它們之前立即調用 OrderGetTicket()。
函數:OrdersTotal()
可用來查詢未成交之委託單數量。
使用上述這二個函數,可以查到目前尚未成交之委託數量及委託資訊。(執行結果如下)
原始程式碼如下
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
void OnTick()
{
ulong ticket;
double open_price;
double initial_volume;
datetime time_setup;
string symbol;
string type;
long order_magic;
uint total=OrdersTotal();//委託單數量
printf("目前尚未成交之委託單:"+total);//印出委託數量
for(uint i=0;i<total;i++)
{
if(ticket=OrderGetTicket(i))
{
open_price =OrderGetDouble(ORDER_PRICE_OPEN);
time_setup =(datetime)OrderGetInteger(ORDER_TIME_SETUP);
symbol =OrderGetString(ORDER_SYMBOL);
order_magic =OrderGetInteger(ORDER_MAGIC);
initial_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
type =EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE)));
printf("#ticket %d %s %G %s at %G was set up at %s",
ticket, //委託單編號
type, //委託單類型
initial_volume, //委託數量量
symbol, //商品
open_price, //價格
TimeToString(time_setup) //下單時間
);
}
}
}
文章標籤
全站熱搜
留言列表