# 取引関連

# Q1:デモ取引について

A:

# 概要

デモ取引は、実際の市場環境で仮想資金を使って取引するもので、実際のアカウントの資産に影響はありません。

# 取引時間

デモ取引は通常取引時間帯のみサポートされます。非取引時間帯、米国株プレマーケット/アフターアワーズ時間帯、A株/香港株のプレマーケット/引け後オークション時間帯での取引はサポートされません。詳細はデモ取引ルールをご覧ください。

# サポート商品

OpenAPI でサポートされるデモ取引の商品はこちらを参照してください。

# ロック解除

本番取引とは異なり、デモ取引では口座のロック解除なしで発注・注文変更・注文取消が可能です。

# 注文

  1. 注文タイプ:指値注文と成行注文。
  2. 注文変更の操作タイプ:デモ取引は有効化、無効化、削除をサポートしません。注文変更と注文取消のみサポートします。
  3. 約定:デモ取引は約定関連の操作をサポートしません。当日約定の照会過去の約定照会約定プッシュコールバックを含みます。
  4. 有効期限:デモ取引の有効期限は当日有効のみサポートします。
  5. 空売り:オプションと先物は空売りをサポート。株式は米国株のみ空売りをサポート。

# 操作プラットフォーム

  1. モバイル端末:マイページ — デモ取引

sim-page

  1. デスクトップ端末:左側のデモタブ

sim-page

  1. Web端末:デモ取引画面

  2. OpenAPI:APIを呼び出す際、パラメータの取引環境をデモ環境に設定するだけです。詳細はOpenAPI でのデモ取引方法をご覧ください。

ご注意

  • 上記4つの方法は操作プラットフォームが異なるだけで、4つの方法で操作するデモ口座は共通です。

# OpenAPI でデモ取引を行うには?

# 接続の作成

まず取引商品に応じて対応する接続を作成します。株式またはオプションの場合は OpenSecTradeContext を使用し、先物の場合は OpenFutureTradeContext を使用してください。

# 取引口座一覧の取得

取引口座一覧の取得で取引口座(デモ口座、本番口座を含む)を確認します。Python の例:戻り値の取引環境 trd_envSIMULATE の場合、デモ口座を表します。

  • Example:Stocks and Options
from futu import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
#trd_ctx = OpenFutureTradeContext(host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.get_acc_list()
if ret == RET_OK:
    print(data)
    print(data['acc_id'][0])  # get the first account id
    print(data['acc_id'].values.tolist())  # convert to list format
else:
    print('get_acc_list error: ', data)
trd_ctx.close()
1
2
3
4
5
6
7
8
9
10
11
  • Output
               acc_id   trd_env acc_type          card_num   security_firm  \
0  281756480572583411      REAL   MARGIN  1001318721909873  FUTUSECURITIES   
1             9053218  SIMULATE     CASH               N/A             N/A   
2             9048221  SIMULATE   MARGIN               N/A             N/A   

  sim_acc_type  trdmarket_auth  
0          N/A  [HK, US, HKCC]  
1        STOCK            [HK]  
2       OPTION            [HK] 
1
2
3
4
5
6
7
8
9

ご注意

  • デモ取引では株式口座とオプション口座が区別されます。株式口座では株式のみ、オプション口座ではオプションのみ取引可能です。Python の例:戻り値のデモ口座タイプ sim_acc_typeSTOCK の場合は株式口座、OPTION の場合はオプション口座を表します。
  • Example: Futures
from futu import *
#trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
trd_ctx = OpenFutureTradeContext(host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.get_acc_list()
if ret == RET_OK:
    print(data)
    print(data['acc_id'][0])  # get the first account id
    print(data['acc_id'].values.tolist())  # convert to list format
else:
    print('get_acc_list error: ', data)
trd_ctx.close()
1
2
3
4
5
6
7
8
9
10
11
  • Output
    acc_id   trd_env acc_type card_num security_firm sim_acc_type  \
0  9497808  SIMULATE   MARGIN      N/A           N/A      FUTURES   
1  9497809  SIMULATE   MARGIN      N/A           N/A      FUTURES   
2  9497810  SIMULATE   MARGIN      N/A           N/A      FUTURES   
3  9497811  SIMULATE   MARGIN      N/A           N/A      FUTURES   

          trdmarket_auth  
0  [FUTURES_SIMULATE_HK]  
1  [FUTURES_SIMULATE_US]  
2  [FUTURES_SIMULATE_SG]  
3  [FUTURES_SIMULATE_JP]  
1
2
3
4
5
6
7
8
9
10
11

# 発注

発注APIを使用する際、取引環境をデモ環境に設定するだけです。Python の例:trd_env = TrdEnv.SIMULATE

  • Example
from futu import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.place_order(price=510.0, qty=100, code="HK.00700", trd_side=TrdSide.BUY, trd_env=TrdEnv.SIMULATE)
if ret == RET_OK:
    print(data)
else:
    print('place_order error: ', data)
trd_ctx.close()
1
2
3
4
5
6
7
8
  • Output
	code	stock_name	trd_side	order_type	order_status	order_id	qty	price	create_time	updated_time	dealt_qty	dealt_avg_price	last_err_msg	remark	time_in_force	fill_outside_rth
0	HK.00700	腾讯控股	BUY	NORMAL	SUBMITTING	4642000476506964749	100.0	510.0	2021-10-09 11:34:54	2021-10-09 11:34:54	0.0	0.0			DAY	N/A
1
2

# 注文取消・注文変更

注文変更APIを使用する際、取引環境をデモ環境に設定するだけです。Python の例:trd_env = TrdEnv.SIMULATE

  • Example
from futu import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
order_id = "4642000476506964749"
ret, data = trd_ctx.modify_order(ModifyOrderOp.CANCEL, order_id, 0, 0, trd_env=TrdEnv.SIMULATE)
if ret == RET_OK:
    print(data)
else:
    print('modify_order error: ', data)
trd_ctx.close()
1
2
3
4
5
6
7
8
9
  • Output
    trd_env             order_id
0  SIMULATE  4642000476506964749
1
2

# 過去の注文照会

過去の注文照会APIを使用する際、取引環境をデモ環境に設定するだけです。Python の例:trd_env = TrdEnv.SIMULATE

  • Example
from futu import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.history_order_list_query(trd_env=TrdEnv.SIMULATE)
if ret == RET_OK:
    print(data)
else:
    print('history_order_list_query error: ', data)
trd_ctx.close()
1
2
3
4
5
6
7
8
  • Output
	code	stock_name	trd_side	order_type	order_status	order_id	qty	price	create_time	updated_time	dealt_qty	dealt_avg_price	last_err_msg	remark	time_in_force	fill_outside_rth
0	HK.00700	腾讯控股	BUY	ABSOLUTE_LIMIT	CANCELLED_ALL	4642000476506964749	100.0	510.0	2021-10-09 11:34:54	2021-10-09 11:37:08	0.0	0.0			DAY	N/A
1
2

# デモ口座のリセット方法は?

現在 OpenAPI ではデモ口座のリセットをサポートしていません。モバイル端末で復活カードを使用して指定のデモ口座をリセットできます。リセット後、口座資金は初期値に戻り、過去の注文はクリアされます。

# 具体的な操作

モバイル端末:マイページ — デモ取引 — プロフィール — アイテム — 復活カード。 sim-page

# Q2:A株の取引はサポートされていますか?

A: デモ取引は A株取引をサポートしています。ただし、本番取引は A株通経由で一部の A株のみ取引可能です。詳細はA株通銘柄一覧をご覧ください。

# Q3:各市場でサポートされる取引方向

A: 先物以外のすべての株式は BUY と SELL の2つの取引方向のみサポートしています。ポジションなしの状態で SELL を渡した場合、生成される注文の取引方向は空売りとなります。

# Q4:本番取引で各市場がサポートする注文タイプ

A:

市場 商品 指値注文 成行注文 オークション指値注文 オークション成行注文 絶対指値注文 特別指値注文 特別指値全量
約定注文
ストップロス成行注文 ストップロス指値注文 タッチ成行注文(利益確定) タッチ指値注文(利益確定) トレイリングストップ成行注文 トレイリングストップ指値注文
香港市場 有価証券(株式、ETF、
ワラント、CBBC、インラインワラントを含む)
オプション X - - - - - X X X
先物 - - - -
米国市場 有価証券(株式、ETFを含む) - - - - -
オプション - - - - -
先物 - - - - -
A株通市場 有価証券(株式、ETFを含む) X - - - - - X X X
シンガポール市場 先物 - - - - -
日本市場 先物 - - - - -

# Q5:各市場でサポートされる注文操作

A:

  • 香港株は注文変更、注文取消、有効化、無効化、削除をサポート
  • 米国株は注文変更と注文取消のみサポート
  • A株通は注文取消のみサポート
  • 先物は注文変更、注文取消、削除をサポート

# Q6:OpenD 起動パラメータ future_trade_api_time_zone の使い方は?

A:先物口座がサポートする取引商品はグローバルの複数の取引所に分散しており、取引所のタイムゾーンもそれぞれ異なるため、先物取引 API の時間表示が問題になります。
OpenD 起動パラメータに future_trade_api_time_zone パラメータが追加され、世界各地の先物トレーダーが柔軟にタイムゾーンを指定できます。デフォルトのタイムゾーンは UTC+8 で、米東時間の方が慣れている場合は UTC-5 に設定するだけです。

ご注意

  • このパラメータは先物取引APIクラスのオブジェクトにのみ有効です。香港株取引、米国株取引、A株通取引のAPIクラスオブジェクトのタイムゾーンは、引き続き取引所所在地のタイムゾーンで表示されます。
  • このパラメータが影響するAPIは、注文プッシュコールバック、約定プッシュコールバック、当日注文照会、過去の注文照会、当日約定照会、過去の約定照会、発注です。

# Q7:OpenAPI 経由の注文はアプリで確認できますか?

A:確認できます。
OpenAPI 経由で発注コマンドの送信に成功すると、アプリの取引ページで当日注文、注文状態、約定状況等を確認できます。また、メッセージ—注文メッセージで約定通知を受け取ることもできます。

# Q8:どの商品が非取引時間帯の発注をサポートしていますか?

A:すべての注文は、約定するには取引時間中である必要があります。
OpenAPI は一部の商品について非取引時間帯の発注機能をサポートしています(アプリではより多くの商品の非取引時間帯発注をサポート)。具体的には下表をご覧ください。

市場 銘柄タイプ デモ取引 本番取引
Futu HK Moomoo US Moomoo SG Moomoo AU Moomoo MY Moomoo CA Moomoo JP
香港市場 株式、ETF、ワラント、CBBC、インラインワラント X X
オプション
X X X X X X
先物 X X X X X X
米国市場 株式、ETF
オプション
先物 X X X X
A株市場 A株通株式 X X X X
非A株通株式 X X X X X X X
シンガポール市場 株式、ETF、ワラント、REIT、DLC X X X X X X X X
先物 X X X X X
日本市場 株式、ETF、REIT X X X X X X X X
先物 X X X X X X
オーストラリア市場 株式、ETF X X X X X X X X
カナダ市場 株式 X X X X X X X X

ご注意

  • ✓:非取引時間帯の発注をサポート
  • X:非取引時間帯の発注を未サポート(または取引自体を未サポート)

# Q9:発注APIにおいて、各注文タイプの必須パラメータおよび証券会社の1注文あたりの制限

A1: 各注文タイプの必須パラメータ

パラメータ 指値注文 成行注文 オークション指値注文 オークション成行注文 絶対指値注文 特別指値注文 特別指値全量
約定注文
ストップロス成行注文 ストップロス指値注文 タッチ成行注文(利益確定) タッチ指値注文(利益確定) トレイリングストップ成行注文 トレイリングストップ指値注文
price
qty
code
trd_side
order_type
trd_env
aux_price
trail_type
trail_value
trail_spread

Python ユーザー はご注意ください。place_order は price にデフォルト値を設定していないため、上記5つの注文タイプでも price の入力が必要です。price には任意の値を渡せます。

A2:各証券会社の1注文あたりの株数・金額の上限

証券会社 商品 1注文あたりの株数上限 1注文あたりの金額上限
FUTU HK A株通 1,000,000 株 ¥5,000,000
米国株 500,000 株 $5,000,000
香港株先物/オプション 3,000 枚 制限なし
moomoo US 米国株 500,000 株 $10,000,000
moomoo SG 米国株 500,000 株 $5,000,000
moomoo AU 米国株 制限なし 制限なし

# Q10:注文変更APIにおいて、注文変更時の各注文タイプの必須パラメータ

A:

パラメータ 指値注文 成行注文 オークション指値注文 オークション成行注文 絶対指値注文 特別指値注文 特別指値全量
約定注文
ストップロス成行注文 ストップロス指値注文 タッチ成行注文(利益確定) タッチ指値注文(利益確定) トレイリングストップ成行注文 トレイリングストップ指値注文
modify_order_op
order_id
price
qty
trd_env
aux_price
trail_type
trail_value
trail_spread

Python ユーザー はご注意ください。modify_order は price にデフォルト値を設定していないため、上記5つの注文タイプでも price の入力が必要です。price には任意の値を渡せます。

# Q11:取引APIが「当該証券取引口座は免責契約に同意していません」を返す?

A:
以下のリンクで契約確認を完了し、OpenD を再起動すれば取引機能を正常に使用できます。

所属証券会社 契約確認
FUTU HK こちら
Moomoo US こちら
Moomoo SG こちら
Moomoo AU こちら
Moomoo CA こちら
Moomoo MY こちら
Moomoo JP こちら

# Q12:パターンデイトレーダー(PDT)について

# 概要

moomoo証券(米国) 口座での日中取引は、米国 FINRA の規制制限を受けます(これは米国の証券会社が受ける規制要件であり、取引する株式の所属市場とは無関係です。他の国・地域の証券会社

の取引口座はこの制限を受けません)。連続5営業日以内に日中取引を3回以上行うと、パターンデイトレーダー(PDT)としてマークされます。
詳細はこちらをご覧ください

# 日中取引のフローチャート

PDT_process

# PDT としてマークされてもよく、プログラム取引を中断したくない場合、「PDT マーク防止」を無効にするには?

A:
連続5営業日以内に4回目の日中取引を行う際、無意識にPDTとしてマークされることを防ぐため、サーバーがこの取引をブロックします。意図的にPDTとしてマークされたい場合でサーバーのブロックを希望しない場合は、以下の対策を取ってください。
コマンドライン OpenD でパラメータを設定し、起動パラメータ pdt_protection の値を 0 に変更して「パターンデイトレーダーとしてマークされることを防止する」機能を無効にします。

US_para
ご注意:PDT としてマークされた場合、口座資産が $25000 未満の場合は新規建てができなくなります。

# DTCall 警告通知を無効にするには?

A:
PDT としてマークされた後は、口座の日中取引購買力(DTBP)に注意が必要です。日中取引が DTBP を超えると Day-Trading Call(DTCall)が発生します。サーバーは、残りの日中取引購買力を超える新規建て注文をブロックします。それでも発注を希望し、サーバーのブロックを望まない場合は、以下の対策を取ってください。
コマンドライン OpenD でパラメータを設定し、起動パラメータ dtcall_confirmation の値を 0 に変更して「日中取引マージンコール警告」機能を無効にします。

US_para2
ご注意:開建て注文の市場価額が残りの日中取引購買力を超え、本日中に対象銘柄を決済した場合、Day-Trading Call(DTCall)が発生し、入金のみで解除可能です。

# DTBP の値を確認するには?

A:
口座資金の照会APIで、日中取引関連の戻り値(残りの日中取引回数、初期日中取引購買力、残りの日中取引購買力等)を取得できます。

# Q13:注文の約定状態を追跡するには

A: 発注後、以下のAPIで注文の約定状態を追跡できます。

取引環境 API
本番取引 注文プッシュコールバック約定プッシュコールバック
デモ取引 注文プッシュコールバック

ご注意:非 Python ユーザーは上記2つのAPIを使用する前に、先に取引プッシュの登録を行う必要があります

# 注文プッシュコールバックの特徴:

注文全体の情報変更をフィードバックします。以下の8つのフィールドが変更された場合、注文プッシュがトリガーされます:
注文状態注文価格注文数量約定数量トリガー価格トラッキングタイプトラッキング金額/パーセンテージ指定スプレッド

したがって、発注、注文変更、注文取消、有効化、無効化の操作、または市場で高度な注文がトリガーされたり約定変動があった場合、すべて注文プッシュがトリガーされます。約定プッシュコールバックを呼び出すだけでこれらの情報を監視できます。

# 約定プッシュコールバックの特徴:

単一約定の情報のみフィードバックします。以下の1つのフィールドが変更された場合、プッシュがトリガーされます:
約定状態

例:指値注文 900 株が3回に分けて完全約定し、各回の約定がそれぞれ 200、300、400 株の場合。
example

# Q14:発注APIが「この商品の最小単位は xxx です。最小単位の整数倍に調整してから再度送信してください」を返す?

A:
市場ごとに取引所が異なる最小変動単位を要求しています。注文価格が要求を満たさない場合、注文は拒否されます。各市場の呼値ルールは以下の通りです。

# 呼値ルール

# 香港市場

香港証券取引所の公式説明に準じます。こちらをクリックしてください。

# A株市場

株式の呼値:0.01。

# 米国市場

株式の呼値:

約定価格 呼値
$1 未満 $0.0001
$1 以上 $0.01

オプションの呼値:

約定価格 呼値
$0.10 - $3.00 $0.01 または $0.05
$3.00 以上 $0.05 または $0.10

先物の呼値:合約により異なります。先物合約情報の取得APIの戻り値フィールド 最小変動の単位 で確認できます。

# 注文価格が呼値に合わない事態を避けるには?

  • 方法1:リアルタイム板情報の取得APIで正しい取引価格を取得します。取引所の板情報上の価格は必ず正しい呼値です。

  • 方法2:発注APIのパラメータ 価格微調整幅 を使用して、入力価格を自動的に正しい取引価格に調整します。

    例:テンセントホールディングスの現在の市場価格が 359.600 の場合、呼値ルールに基づく最小変動呼値は 0.200 です。

    発注時の入力注文価格が 359.678、価格微調整幅が 0.0015 の場合、入力価格を最も近い正しい呼値まで上方調整することを許可し、0.15% を超えないことを意味します。この場合、上方の最も近い正しい価格は 359.800 で、実際の調整幅は 0.034% であり、価格微調整幅の要件を満たすため、最終的な注文価格は 359.800 となります。

    価格微調整幅の設定値が実際に必要な調整幅より小さい場合、OpenD の自動価格調整は失敗し、注文はエラー「注文価格が呼値上にありません」を返します。

# Q15:購買力は十分なのに、成行注文が「購買力不足」を返すのはなぜ?

A:

# 成行注文で購買力不足と表示される理由

  • リスク管理の観点から、成行注文にはより高い購買力係数が適用されています。すべての注文パラメータが同一の場合、成行注文は指値注文よりも多くの購買力を消費します。
  • また、商品や市場状況に応じて、リスク管理システムは成行注文の購買力係数を動的に調整します。そのため、成行注文を出す際に最大購買力から最大購入可能数量を計算しても、結果は正確でない可能性が高いです。

# 正確な購入可能数量の計算方法

自分で計算することは推奨しません。最大購入・売却可能数量の照会APIで正確な購入可能数量を取得できます。

# できるだけ多く購入するには

対当て価格の指値注文で成行注文を代替して取引できます。
ここで対当て価格とは:買1価格(売り注文の場合)または 売1価格(買い注文の場合)

# Q16:API のデモ取引で発注したのに、モバイル端末で表示されないのはなぜ?

A:
モバイル端末、デスクトップ端末、Web端末の米国株デモ取引口座は、【米国株デモ口座】からより機能豊富な【米国株信用取引口座】にアップグレードされました。
OpenAPI は未アップグレード(計画中)で、現在は旧【米国株デモ口座】のみ使用可能です。旧【米国株デモ口座】は他のクライアントでは表示されません。ご利用の際はご注意ください。

# Q17:取引APIパラメータの使用説明

# 1. 取引オブジェクトとは?

プラットフォームアカウントには通常、1つのマージン総合口座が開設されており、その中に複数の取引サブ口座があります(通常2つ:総合証券口座と総合先物口座。必要に応じて総合外国為替口座等の他のサブ口座がある場合もあります)。一部の特殊ユーザーや機関投資家は、複数の証券会社で複数の総合口座を開設している場合があります。
取引オブジェクトの作成は、サブ口座の初期フィルタリングプロセスです。

  • OpenSecTradeContext で作成した取引オブジェクトは、get_acc_list 呼び出し時に証券取引口座のみ返します
  • OpenFutureTradeContext で作成した取引オブジェクトは、get_acc_list 呼び出し時に先物取引口座のみ返します

パラメータ security_firm は対応する所属証券会社の口座をフィルタし、パラメータ filter_trdmarket は対応する取引市場権限の口座をフィルタします。

# 1.1 security_firm 証券会社パラメータ

OpenAPI が現在サポートする証券会社はこちらをご覧ください。
作成した取引オブジェクトは、get_acc_list 呼び出し時に security_firm に対応する証券会社の本番口座とすべてのデモ取引口座を返します(デモ取引には証券会社の概念がないため、security_firm に何を渡してもすべてのデモ口座が返されます)。
security_firm のデフォルト値は FUTUSECURITIES で、FUTU HK 証券会社の口座はこのパラメータを省略できますが、他の証券会社の口座を取得する際は証券会社パラメータの変更が必要です。

  • Example 1
trd_ctx = OpenSecTradeContext(security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.get_acc_list()
print(data)
1
2
3
  • Output
               acc_id   trd_env acc_type      uni_card_num          card_num   security_firm sim_acc_type                  trdmarket_auth acc_status
0  281756478396547854      REAL   MARGIN  1001200163530138  1001369091153722  FUTUSECURITIES          N/A  [HK, US, HKCC, HKFUND, USFUND]     ACTIVE
1             3450309  SIMULATE     CASH               N/A               N/A             N/A        STOCK                            [HK]     ACTIVE
2             3548731  SIMULATE   MARGIN               N/A               N/A             N/A       OPTION                            [HK]     ACTIVE
3  281756455998014447      REAL   MARGIN               N/A  1001100320482767  FUTUSECURITIES          N/A                            [HK]   DISABLED
1
2
3
4
5
  • Example 2
trd_ctx = OpenSecTradeContext(security_firm=SecurityFirm.FUTUSG)
ret, data = trd_ctx.get_acc_list()
print(data)
1
2
3
  • Output
    acc_id   trd_env acc_type uni_card_num card_num security_firm sim_acc_type trdmarket_auth acc_status
0  3450309  SIMULATE     CASH          N/A      N/A           N/A        STOCK           [HK]     ACTIVE
1  3548731  SIMULATE   MARGIN          N/A      N/A           N/A       OPTION           [HK]     ACTIVE
1
2
3

# 1.2 filter_trdmarket 取引市場パラメータ

OpenAPI が現在サポートする取引市場はこちらをご覧ください。
作成した取引オブジェクトは、get_acc_list 呼び出し時に filter_trdmarket 市場の取引権限を持つすべての口座を返します。filter_trdmarket に NONE を渡すと市場フィルタなしで全口座を返します。
filter_trdmarket のデフォルトパラメータは HK で、総合口座体系では、このパラメータは異なる市場のデモ取引口座をフィルタするために使用されます。

  • Example 1
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.US)
ret, data = trd_ctx.get_acc_list()
print(data)
1
2
3
  • Output
               acc_id   trd_env acc_type      uni_card_num          card_num   security_firm sim_acc_type                  trdmarket_auth acc_status
0  281756478396547854      REAL   MARGIN  1001200163530138  1001369091153722  FUTUSECURITIES          N/A  [HK, US, HKCC, HKFUND, USFUND]     ACTIVE
1             3450310  SIMULATE   MARGIN               N/A               N/A             N/A        STOCK                            [US]     ACTIVE
2             3548732  SIMULATE   MARGIN               N/A               N/A             N/A       OPTION                            [US]     ACTIVE
3  281756460292981743      REAL   MARGIN               N/A  1001100520714263  FUTUSECURITIES          N/A                            [US]   DISABLED
1
2
3
4
5
  • Example 2
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.NONE)
ret, data = trd_ctx.get_acc_list()
print(data)
1
2
3
  • Output
                acc_id   trd_env acc_type      uni_card_num          card_num   security_firm sim_acc_type                  trdmarket_auth acc_status
0   281756478396547854      REAL   MARGIN  1001200163530138  1001369091153722  FUTUSECURITIES          N/A  [HK, US, HKCC, HKFUND, USFUND]     ACTIVE
1              3450309  SIMULATE     CASH               N/A               N/A             N/A        STOCK                            [HK]     ACTIVE
2              3450310  SIMULATE   MARGIN               N/A               N/A             N/A        STOCK                            [US]     ACTIVE
3              3450311  SIMULATE     CASH               N/A               N/A             N/A        STOCK                            [CN]     ACTIVE
4              3548732  SIMULATE   MARGIN               N/A               N/A             N/A       OPTION                            [US]     ACTIVE
5              3548731  SIMULATE   MARGIN               N/A               N/A             N/A       OPTION                            [HK]     ACTIVE
6   281756455998014447      REAL   MARGIN               N/A  1001100320482767  FUTUSECURITIES          N/A                            [HK]   DISABLED
7   281756460292981743      REAL   MARGIN               N/A  1001100520714263  FUTUSECURITIES          N/A                            [US]   DISABLED
8   281756468882916335      REAL   MARGIN               N/A  1001100610464507  FUTUSECURITIES          N/A                          [HKCC]   DISABLED
9   281756507537621999      REAL     CASH               N/A  1001100910390035  FUTUSECURITIES          N/A                        [HKFUND]   DISABLED
10  281756550487294959      REAL     CASH               N/A  1001101010406844  FUTUSECURITIES          N/A                        [USFUND]   DISABLED
1
2
3
4
5
6
7
8
9
10
11
12

ご注意

filter_trdmarket に NONE を渡すと、すべての取引口座を返します。0行目は本番口座、1~5行目はすべてデモ取引口座、6~10行目は無効化された本番口座です。これらの無効口座は単一市場口座で、現在は総合口座に置き換えられています。ただし、過去の注文と過去の約定はこれらの無効口座に残っているため、これらの口座で照会できます。
OpenFutureTradeContext オブジェクトには filter_trdmarket パラメータはなく、security_firm パラメータのみで、OpenSecTradeContext と同じ機能です。

# 2. 取引APIパラメータ

具体的な取引API(発注、注文一覧照会等)を使用する際、APIの trd_envacc_indexacc_id パラメータでまず一意の口座を特定し、その口座に対して対応するAPI操作を実行します。 acc-select

まとめ

  1. trd_env に基づいて本番口座かデモ口座かをフィルタ
  2. フィルタ結果から acc_id で指定された口座を優先選択
  3. acc_id が 0 の場合、acc_index で対応する口座を選択
  4. エラーケース:指定された acc_id が存在しない、または acc_index が範囲外

# 3. 使用例

# 3.1 総合証券口座での本番発注

trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.NONE, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.unlock_trade("123123")
if ret == RET_OK:
    print("解锁成功")
    ret, data = trd_ctx.place_order(45, 200, 'HK.00700', TrdSide.BUY,
                                    order_type=OrderType.NORMAL,
                                    trd_env=TrdEnv.REAL,  # デフォルトパラメータと同じため省略可能
                                    acc_id=0)  # デフォルトパラメータと同じため省略可能
    print(data)
1
2
3
4
5
6
7
8
9

# 3.2 総合先物口座での本番注文一覧照会

trd_ctx = OpenFutureTradeContext(security_firm=SecurityFirm.FUTUSECURITIES)

ret, data = trd_ctx.order_list_query(trd_env=TrdEnv.REAL,   # デフォルトパラメータと同じため省略可能
                                     acc_id=0)  # デフォルトパラメータと同じため省略可能
print(data)
1
2
3
4
5

# 3.3 香港株デモ現金口座の口座資金照会

# filter_trdmarket に TrdMarket.HK を指定
# trd_env に TrdEnv.SIMULATE を指定
# acc_index に 0 を指定
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK)
ret, data = trd_ctx.accinfo_query(trd_env=TrdEnv.SIMULATE, acc_index=0)
print(data)
1
2
3
4
5
6

# 3.4 米国株デモマージン口座でのオプション発注

# filter_trdmarket と trd_env でフィルタ後、2口座のみ残る
# 0番目は米国株現金口座(株式取引用)、1番目は米国株マージン口座(オプション取引用)
# acc_index に 1 を指定して米国株マージン口座を選択
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.US)
ret, data = trd_ctx.place_order(10, 1, code="US.AAPL250618P550000",trd_side=TrdSide.BUY,
                                trd_env=TrdEnv.SIMULATE,
                                acc_index=1)
print(data)
1
2
3
4
5
6
7
8

# 3.5 日本先物デモ口座の最大購入・売却可能数量照会

# get_acc_list の結果を表示すると、日本先物デモ口座の acc_id が 6271199 であることが確認できる
# 最大購入・売却可能数量のリクエスト時にこの acc_id を渡す 
trd_ctx = OpenFutureTradeContext()
ret, data = trd_ctx.acctradinginfo_query(order_type=OrderType.NORMAL,
                                         price=5000,
                                         trd_env=TrdEnv.SIMULATE,
                                         acc_id=6271199,
                                         code="JP.NK225main")
print(data)
1
2
3
4
5
6
7
8
9

# 4. OpenAPI の口座はアプリ/デスクトップ端末とどう対応するか

card-app アプリではカード番号の下4桁のみ表示されます。get_acc_listの戻り値には uni_card_num 列と card_num 列があり、それぞれ総合口座のカード番号と単一通貨口座(廃止済み)のカード番号に対応します。カード番号の下4桁でAPIで取得した口座とアプリ上の口座を対応付けできます。