先日、GMOクリック証券のはっちゅう君プラスのアドイン機能を使ったトレードツールの開発をする機会があったのですが、
GMOクリック証券から提供されているアドイン開発ガイドが、いまいちわかりにくく、試行錯誤しながらやった時のメモです。
このアドイン開発ガイドには、
・先物の相場情報の取得
・注文処理
のサンプルはあるのですが、僕が知りたかったのは、建玉一覧の取得方法でした。
以下のようにコードを書いたら取得できましたので、同じところで躓いている人がいたら参考にしてください。
///建玉一覧があったときに入る構造体 private struct POSITION_ITEM { public decimal decAppraisalPL; //評価損益 public decimal decCurrentPrice; //現在値 public string strLastTradeDate; //取引最終日 public string strOpenDate; //建日 public decimal decOpenPrice; //建単価(これ重要) public int intOpenQuantity; //建数量 public int intOrderQuantity; //注文中数量 public OrderWorkable owOrderWorkable; //取引(注文)可能フラグ(Unworkable:取引不可 Workable:取引可能) public string strSecCode; //証券コード public TradeDivision trTradeDiv; //売買区分(Sell or Buy) } /// 建玉一覧があったときに入る構造体 POSITION_ITEM[] S_POSITION_ITEM = new POSITION_ITEM[99]; /// 建玉の存在チェック(建玉リストの取得) private bool GetPositionList() { try { //建玉一覧取得イベント発生 this.m_blnIsProcessing = false; FutureTradeService.Instance.RequestFuturePositionList( this.iHandlerPositionGet ); return true; } catch { return false; } } /// 建玉一覧取得した時のイベントハンドラ /// 非同期で動く private void iHandlerPositionGet(object sender, ServiceResponseEventArgs<futurepositionlistresponse> args) { try { //ポジションリストクラス生成 FuturePositionListResponse fuPoList = args.Response; int i = 0; foreach (FuturePositionListResponse.PositionItem item in fuPoList.Positions) { this.S_POSITION_ITEM[i].decAppraisalPL = item.AppraisalPL; //評価損益 this.S_POSITION_ITEM[i].decCurrentPrice = item.CurrentPrice; //現在値 this.S_POSITION_ITEM[i].strLastTradeDate = item.LastTradeDate.ToString(); //取引最終日 this.S_POSITION_ITEM[i].strOpenDate = item.OpenDate.ToString(); //建日 this.S_POSITION_ITEM[i].decOpenPrice = item.OpenPrice; //建単価(これ重要) this.S_POSITION_ITEM[i].intOpenQuantity = item.OpenQuantity; //建数量 this.S_POSITION_ITEM[i].intOrderQuantity = item.OrderQuantity; //注文中数量 this.S_POSITION_ITEM[i].owOrderWorkable = item.OrderWorkable; //取引(注文)可能フラグ(Unworkable:取引不可 Workable:取引可能) this.S_POSITION_ITEM[i].strSecCode = item.SecurityCode; //証券コード this.S_POSITION_ITEM[i].trTradeDiv = item.TradeDivision; //売買区分(Sell or Buy) i++; } return; } catch (Exception ex) { } }
このサンプルは建玉一覧ですが、同様にして注文一覧の取得もできるかと思います。