Part 1:用來分析的期貨交易資料來源。
Part 2:如何接收即時資料。
Part 3:如何下單及確認下單狀況。

  這個部份要說明該如何利用券商的 API 來下單,坦白說我只有用過永豐的 API,所以我只能針對這個來說明,首先你要先向期貨商申請 API 交易,而申請資格根據期交所規定有下列兩項:
(1)要開期貨戶頭滿三個月以上。
(2)最近一年內有十筆的交易記錄。 

  申請到 API 後,你就可以從永豐金API元件下單 說明網頁取得 API 元件,裡面已有該 API 的使用說明,不過我還是介紹一下該怎麼從 C# 引用,熟悉程式開發的朋友都知道,如果要使用他人開發的 dll 元件,可以利用 DllImport 來使用該元件,簡單的範例如下:

/// <summary>
/// 元件初始化
/// </summary>
/// <param name="login_id">帳號</param>
/// <param name="login_pass">密碼</param>
/// <param name="dll_path">元件所在路徑</param>
/// <returns></returns>
[DllImport(@"c:\永豐期貨API\t4.dll")]
public static extern string init_t4(string login_id, string login_pass,string dll_path);

/// <summary>
/// 登入期貨帳戶
/// </summary>
/// <param name="branch">分公司代號</param>
/// <param name="account">帳號</param>
/// <param name="acc_id">用戶ID</param>
/// <param name="acc_ca_path">CA憑證路徑</param>
/// <param name="acc_ca_pass">CA密碼</param>
/// <returns></returns>
[DllImport(@"c:\永豐期貨API\t4.dll")]
public static extern string add_acc_ca(string branch, string account, string acc_id, string acc_ca_path, string acc_ca_pass);

/// <summary>
/// 驗證下單帳號密碼
/// </summary>
/// <param name="branch">分公司代號</param>
/// <param name="account">帳號</param>
/// <returns></returns>
[DllImport(@"c:\永豐期貨API\t4.dll")]
public static extern string verify_ca_pass(string branch, string account);

/// <summary>
/// 期貨下單
/// </summary>
/// <param name="buy_or_sell">B或S</param>
/// <param name="branch">分公司代號</param>
/// <param name="account">帳號</param>
/// <param name="code">期貨代號</param>
/// <param name="price">價格</param>
/// <param name="amount">口數</param>
/// <param name="price_type">MKT:市價單、LMT:限價單</param>
/// <param name="ordtype">IOC、ROD、FOK</param>
/// <param name="octtype">倉別 "0" = 新倉、"1" = 平倉、" "= 自動、"6"= 當沖</param>
/// <returns></returns>
[DllImport(@"c:\永豐期貨API\t4.dll")]
public static extern string future_order(string buy_or_sell, string branch, string account, string code, string price, string amount, string price_type, string ordtype, string octtype); 

/// <summary>
/// 期權委託查詢,用來查詢已下單的狀況
/// </summary>
/// <param name="branch">分公司代號</param>
/// <param name="acct">帳號</param>
/// <param name="code">商品代號</param>
/// <param name="ord_match_flag">成交類別 0:全部明細 1:未成交 3:委託失敗 5:委託彙總</param>
/// <param name="ord_type">商品類別 0:全部商品 1:期貨 2:選擇權 3:美元計價</param>
/// <param name="oct_type">倉別.定為"0"</param>
/// <param name="is_daily">0:當日 1:歷史</param>
/// <param name="start_date">歷史查詢起始日</param>
/// <param name="end_date">歷史查詢終止日</param>
/// <param name="preorder">' ' = 僅查預約單, 'N' = 所有</param>
/// <returns></returns>
[DllImport(@"c:\永豐期貨API\t4.dll")]
public static extern string fo_order_qry(string branch, string acct, string code, string ord_match_flag, string ord_type, string oct_type, string is_daily, string start_date, string end_date, string preorder);

  上頭是期貨交易會用到的函式,其實這個 API 還有其他功能,例如證券、國外期貨、選擇權的下(刪)單…等功能,這個我就不介紹了,需要的人可以自己研究,並不難的(和找出交易聖杯相較起來…容易太多了),簡單的來說,在進行下單的動作前,要先進行下列三個函式的初始化才行,依序如下:
(1) init_t4
(2) add_acc_ca
(3) verify_ca_pass 
待上述三個函式皆正常執行完畢之後,表示已經可以下單了,而期貨下單的函式請使用 future_order 這個函式,至於怎麼下單就視個人的策略囉,應該大多數的人都是用市價單來下單吧(我一廂情願的猜…),下單之後可以呼叫 fo_order_qry 來查詢剛剛下單的成交狀況,至於執行函式之回傳值代表什麼…抱歉!我很懶^^"…請自行參考 API 裡面的說明檔…至於怎麼刪單我就沒有介紹了,因為我用市價單一丟出就成交,根本沒有刪單的需求@@......

  最後不知道大家會把程式交易用來做什麼用途,小弟個人是有正常工作,而這個程式則是在我上班時,在家裡的電腦默默的執行我賦予的工作,偶而從公司連線回家看看是否有正常在進行交易,強烈建議利用 TeamViewer 之類的遠端連線軟體監控,千萬不要用Windows的遠端桌面連線,遠端桌面連線不僅流量大,且如果發生網路塞車的話連帶會影響在家裡電腦的網路連線(很怪異吧…不過這是實情,我因為這樣吃過虧),希望這三篇可以幫助到有興趣的人了解程式交易的其中一種方式,也祝大家都可以找到交易聖杯囉……

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 kengren523 的頭像
    kengren523

    小爺的期貨程式交易

    kengren523 發表在 痞客邦 留言(41) 人氣()