先日、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)
{
}
}
このサンプルは建玉一覧ですが、同様にして注文一覧の取得もできるかと思います。