# 簡易プログラム実行
- Python
- C#
- Java
- C++
- Proto
- JavaScript
# Python サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:Python API のダウンロード
方法1:cmd で直接 pip を使用してインストール。
- 初回インストール:Windows
$ pip install futu-api、Linux/Mac$ pip3 install futu-api。 - アップグレード:Windows
$ pip install futu-api --upgrade、Linux/Mac$ pip3 install futu-api --upgrade。
- 初回インストール:Windows
方法2:最新バージョンの Python API パッケージをダウンロードしてください。
# ステップ3:新規プロジェクトの作成
PyCharm を開き、Welcome to PyCharm ウィンドウで New Project をクリックします。既にプロジェクトを作成済みの場合は、そのプロジェクトを開いてください。

# ステップ4:新規ファイルの作成
プロジェクト配下に新しい Python ファイルを作成し、以下のサンプルコードをファイルにコピーします。
サンプルコードの機能は、相場スナップショットの確認とデモ取引の発注です。
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111) # 相場オブジェクトの作成
print(quote_ctx.get_market_snapshot('HK.00700')) # 香港株 HK.00700 のスナップショットデータを取得
quote_ctx.close() # オブジェクトをクローズ。接続数の枯渇を防止
trd_ctx = OpenSecTradeContext(host='127.0.0.1', port=11111) # 取引オブジェクトの作成
print(trd_ctx.place_order(price=500.0, qty=100, code="HK.00700", trd_side=TrdSide.BUY, trd_env=TrdEnv.SIMULATE)) # デモ取引で発注(本番環境の場合は事前に取引パスワードのロック解除が必要)
trd_ctx.close() # オブジェクトをクローズ。接続数の枯渇を防止
2
3
4
5
6
7
8
9
10
11
# ステップ5:ファイルの実行
右クリックで実行すると、以下のような成功時の戻り情報が表示されます。
2020-11-05 17:09:29,705 [open_context_base.py] _socket_reconnect_and_wait_ready:255: Start connecting: host=127.0.0.1; port=11111;
2020-11-05 17:09:29,705 [open_context_base.py] on_connected:344: Connected : conn_id=1;
2020-11-05 17:09:29,706 [open_context_base.py] _handle_init_connect:445: InitConnect ok: conn_id=1; info={'server_version': 218, 'login_user_id': 7157878, 'conn_id': 6730043337026687703, 'conn_key': '3F17CF3EEF912C92', 'conn_iv': 'C119DDDD6314F18A', 'keep_alive_interval': 10, 'is_encrypt': False};
(0, code update_time last_price open_price high_price ... after_high_price after_low_price after_change_val after_change_rate after_amplitude
0 HK.00700 2020-11-05 16:08:06 625.0 610.0 625.0 ... N/A N/A N/A N/A N/A
[1 rows x 132 columns])
2020-11-05 17:09:29,739 [open_context_base.py] _socket_reconnect_and_wait_ready:255: Start connecting: host=127.0.0.1; port=11111;
2020-11-05 17:09:29,739 [network_manager.py] work:366: Close: conn_id=1
2020-11-05 17:09:29,739 [open_context_base.py] on_connected:344: Connected : conn_id=2;
2020-11-05 17:09:29,740 [open_context_base.py] _handle_init_connect:445: InitConnect ok: conn_id=2; info={'server_version': 218, 'login_user_id': 7157878, 'conn_id': 6730043337169705045, 'conn_key': 'A624CF3EEF91703C', 'conn_iv': 'BF1FF3806414617B', 'keep_alive_interval': 10, 'is_encrypt': False};
(0, code stock_name trd_side order_type order_status ... dealt_avg_price last_err_msg remark time_in_force fill_outside_rth
0 HK.00700 腾讯控股 BUY NORMAL SUBMITTING ... 0.0 DAY N/A
[1 rows x 16 columns])
2020-11-05 17:09:32,843 [network_manager.py] work:366: Close: conn_id=2
(0, code stock_name trd_side order_type order_status ... dealt_avg_price last_err_msg remark time_in_force fill_outside_rth
0 HK.00700 腾讯控股 BUY ABSOLUTE_LIMIT SUBMITTED ... 0.0 DAY N/A
[1 rows x 16 columns])
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# C# サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:C# API のダウンロード
C# API のダウンロードとアップグレードには2つの方法があります。いずれかをお選びください。
方法1:cmd で nuget を使用してダウンロードまたはアップグレード
$ dotnet add package futu-api(nuget は C# API ソースコードのダウンロードのみサポート。より多くのサンプルコードが必要な場合は方法2を参照してください)。方法2:最新バージョンの C# API パッケージをダウンロードしてください。ダウンロードした FTAPI ファイルを解凍します。
/FTAPI4NETが C# API のディレクトリです。具体的なディレクトリ構造は FTAPI4NET ディレクトリ構造を参照してください。
# FTAPI4NET ディレクトリ構造
+---FTAPI4Net FTAPI4NETのソースコード。使用中の.NETバージョンと互換性がない場合はソースコードから再コンパイル可能
+---lib
+---net4.5 .NET 4.5 の依存ライブラリ
| FTAPI4Net.dll OpenAPI の C# バージョン
| Google.ProtocolBuffers.dll サードパーティライブラリ。protobufデータの解析に使用
| Google.ProtocolBuffers.Serialization.dll サードパーティライブラリ。protobufデータの解析に使用
|
+---netcore2.1 .NET Core 2.1 の依存ライブラリ
| FTAPI4Net.dll OpenAPI の C# バージョン
| Google.ProtocolBuffers.dll サードパーティライブラリ。protobufデータの解析に使用
| Google.ProtocolBuffers.Serialization.dll サードパーティライブラリ。protobufデータの解析に使用
|
FTAPIChannel FTAPI4NETが依存するCダイナミックライブラリ。APIとOpenDの通信に使用。各OS名のディレクトリに格納。.NETプログラム実行前に、対応するプラットフォームのダイナミックライブラリをプログラム実行ディレクトリにコピーしてください。
+---Sample サンプルプロジェクト
+---tools サードパーティツール。protoプロトコルをC#コードに変換。このディレクトリ内の readme.md を参照
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# ステップ3:サンプルプロジェクトのインポート
Visual Studio 開発環境を開き、ディレクトリ内のプロジェクトファイル FTAPI4NetCore.sln をインポートします。
# ステップ4:実行
まず、サンプルプログラムで使用するAPI設定が OpenD の設定と一致しているか確認します。
次に、Sample プロジェクト内の Program.cs ファイルの Main 関数で実行する機能を確認します。実行後、以下のような出力情報が表示されます。
InitConnected
Send QotGetUserSecurity: 3
{"staticInfoList":[{"basic":{"security":{"market":1,"code":"08311"},"id":69179038244983,"lotSize":10000,"secType":3,"name":"\u5706\u7f8e\u5149\u7535","listTime":"2014-02-07","delisting":false,"listTimestamp":1391702400}},{"basic":{"security":{"market":1,"code":"02127"},"id":79925046413391,"lotSize":2000,"secType":3,"name":"\u6c47\u68ee\u5bb6\u5c45","listTime":"2020-12-
29","delisting":false,"listTimestamp":1609171200}},{"basic":{"security":{"market":1,"code":"EVG2101"},"id":71002729,"lotSize":2000,"secType":10,"name":"\u4e2d\u56fd\u6052\u5927\u96c6\u56e22101","listTime":"","delisting":false},"futureExData":{"lastTradeTime":"2021-01-28","lastTradeTimestamp":1611820800,"isMainContract":false}},{"basic":{"security":{"market":1,"code":"0
2333"},"id":53257594472733,"lotSize":500,"secType":3,"name":"\u957f\u57ce\u6c7d\u8f66","listTime":"2003-12-15","delisting":false,"listTimestamp":1071417600}},{"basic":{"security":{"market":1,"code":"06993"},"id":79882096745297,"lotSize":500,"secType":3,"name":"\u84dd\u6708\u4eae\u96c6\u56e2","listTime":"2020-12-16","delisting":false,"listTimestamp":1608048000}},{"basic
":{"security":{"market":1,"code":"01810"},"id":76033806042898,"lotSize":200,"secType":3,"name":"\u5c0f\u7c73\u96c6\u56e2-W","listTime":"2018-07-09","delisting":false,"listTimestamp":1531065600}},{"basic":{"security":{"market":1,"code":"09992"},"id":79869211846408,"lotSize":200,"secType":3,"name":"\u6ce1\u6ce1\u739b\u7279","listTime":"2020-12-11","delisting":false,"list
Timestamp":1607616000}},{"basic":{"security":{"market":1,"code":"03948"},"id":66709432045420,"lotSize":100,"secType":3,"name":"\u4f0a\u6cf0\u7164\u70ad","listTime":"2012-07-12","delisting":false,"listTimestamp":1342022400}},{"basic":{"security":{"market":1,"code":"01398"},"id":57754425230710,"lotSize":1000,"secType":3,"name":"\u5de5\u5546\u94f6\u884c","listTime":"2006-
10-27","delisting":false,"listTimestamp":1161878400}},{"basic":{"security":{"market":1,"code":"06618"},"id":79843442039258,"lotSize":50,"secType":3,"name":"\u4eac\u4e1c\u5065\u5eb7","listTime":"2020-12-08","delisting":false,"listTimestamp":1607356800}},{"basic":{"security":{"market":1,"code":"09698"},"id":79693118186978,"lotSize":100,"secType":3,"name":"\u4e07\u56fd\u6
570\u636e-SW","listTime":"2020-11-02","delisting":false,"listTimestamp":1604246400}},{"basic":{"security":{"market":1,"code":"03690"},"id":76364518526570,"lotSize":100,"secType":3,"name":"\u7f8e\u56e2-W","listTime":"2018-09-20","delisting":false,"listTimestamp":1537372800}},{"basic":{"security":{"market":1,"code":"09988"},"id":78224239372036,"lotSize":100,"secType":3,"
name":"\u963f\u91cc\u5df4\u5df4-SW","listTime":"2019-11-26","delisting":false,"listTimestamp":1574697600}},{"basic":{"security":{"market":1,"code":"800000"},"id":800000,"lotSize":0,"secType":6,"name":"\u6052\u751f\u6307\u6570","listTime":"1970-01-01","delisting":false,"listTimestamp":0}},{"basic":{"security":{"market":1,"code":"00005"},"id":5,"lotSize":400,"secType":3,
"name":"\u6c47\u4e30\u63a7\u80a1","listTime":"1970-01-01","delisting":false,"listTimestamp":0}},{"basic":{"security":{"market":1,"code":"00175"},"id":4930622455983,"lotSize":1000,"secType":3,"name":"\u5409\u5229\u6c7d\u8f66","listTime":"1973-02-23","delisting":false,"listTimestamp":99244800}},{"basic":{"security":{"market":1,"code":"09677"},"id":79598628906445,"lotSize
":1000,"secType":3,"name":"\u5a01\u6d77\u94f6\u884c","listTime":"2020-10-12","delisting":false,"listTimestamp":1602432000}},{"basic":{"security":{"market":1,"code":"06055"},"id":77494094927783,"lotSize":1000,"secType":3,"name":"\u4e2d\u70df\u9999\u6e2f","listTime":"2019-06-12","delisting":false,"listTimestamp":1560268800}},{"basic":{"security":{"market":1,"code":"00788
"},"id":76175539962644,"lotSize":2000,"secType":3,"name":"\u4e2d\u56fd\u94c1\u5854","listTime":"2018-08-08","delisting":false,"listTimestamp":1533657600}},{"basic":{"security":{"market":1,"code":"02318"},"id":54082228193550,"lotSize":500,"secType":3,"name":"\u4e2d\u56fd\u5e73\u5b89","listTime":"2004-06-24","delisting":false,"listTimestamp":1088006400}},{"basic":{"secur
ity":{"market":1,"code":"BK1011"},"id":10001011,"lotSize":0,"secType":7,"name":"\u5316\u80a5\u53ca\u519c\u7528\u5316\u5408\u7269","listTime":"1970-01-01","delisting":false,"listTimestamp":0}},{"basic":{"security":{"market":1,"code":"BK1095"},"id":10001095,"lotSize":0,"secType":7,"name":"\u697c\u5b87\u5efa\u9020","listTime":"1970-01-01","delisting":false,"listTimestamp"
:0}},{"basic":{"security":{"market":1,"code":"01328"},"id":59274843653424,"lotSize":10000,"secType":3,"name":"\u91d1\u6d8c\u6295\u8d44","listTime":"2007-10-16","delisting":false,"listTimestamp":1192464000}},{"basic":{"security":{"market":1,"code":"00900"},"id":40312563041156,"lotSize":2000,"secType":3,"name":"AEON\u4fe1\u8d37","listTime":"1995-09-14","delisting":false,
"listTimestamp":811008000}},{"basic":{"security":{"market":1,"code":"00030"},"id":34144990003230,"lotSize":2000,"secType":3,"name":"\u4e07\u9686\u63a7\u80a1\u96c6\u56e2","listTime":"1991-10-09","delisting":false,"listTimestamp":686937600}},{"basic":{"security":{"market":1,"code":"00028"},"id":26989574488092,"lotSize":1000,"secType":3,"name":"\u5929\u5b89","listTime":"1
987-03-18","delisting":false,"listTimestamp":542995200}},{"basic":{"security":{"market":1,"code":"00519"},"id":25447681229319,"lotSize":5000,"secType":3,"name":"\u5b9e\u529b\u5efa\u4e1a","listTime":"1986-03-24","delisting":false,"listTimestamp":511977600}},{"basic":{"security":{"market":1,"code":"00276"},"id":4140348473620,"lotSize":3000,"secType":3,"name":"\u8499\u53e
4\u80fd\u6e90","listTime":"1972-08-23","delisting":false,"listTimestamp":83347200}},{"basic":{"security":{"market":1,"code":"06862"},"id":76385993366222,"lotSize":1000,"secType":3,"name":"\u6d77\u5e95\u635e","listTime":"2018-09-26","delisting":false,"listTimestamp":1537891200}},{"basic":{"security":{"market":1,"code":"00451"},"id":34866544509379,"lotSize":2000,"secType
":3,"name":"\u534f\u946b\u65b0\u80fd\u6e90","listTime":"1992-03-25","delisting":false,"listTimestamp":701452800}},{"basic":{"security":{"market":1,"code":"02899"},"id":53291954211667,"lotSize":2000,"secType":3,"name":"\u7d2b\u91d1\u77ff\u4e1a","listTime":"2003-12-23","delisting":false,"listTimestamp":1072108800}},{"basic":{"security":{"market":1,"code":"08133"},"id":71
098888626117,"lotSize":20000,"secType":3,"name":"\u94f8\u80fd\u63a7\u80a1","listTime":"2015-04-30","delisting":false,"listTimestamp":1430323200}},{"basic":{"security":{"market":1,"code":"01432"},"id":69857643070872,"lotSize":1000,"secType":3,"name":"\u4e2d\u56fd\u5723\u7267","listTime":"2014-07-15","delisting":false,"listTimestamp":1405353600}},{"basic":{"security":{"m
arket":1,"code":"09933"},"id":78426102834893,"lotSize":4000,"secType":3,"name":"GHW INTL","listTime":"2020-01-21","delisting":false,"listTimestamp":1579536000}},{"basic":{"security":{"market":1,"code":"07500"},"id":77494094929228,"lotSize":100,"secType":4,"name":"\u5357\u65b9\u4e24\u500d\u770b\u7a7a\u6052\u6307","listTime":"2019-05-28","delisting":false,"listTimestamp"
:1558972800}},{"basic":{"security":{"market":1,"code":"00981"},"id":53661321397205,"lotSize":500,"secType":3,"name":"\u4e2d\u82af\u56fd\u9645","listTime":"2004-03-18","delisting":false,"listTimestamp":1079539200}}]}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ご注意
- FTAPIChannel ダイナミックライブラリが見つからない場合は、lib フォルダ内の対応するプラットフォームの FTAPIChannel ファイルをプログラム実行ディレクトリにコピーしてください。
# Java サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:Java API のダウンロード
Java API のダウンロードとアップグレードには2つの方法があります。いずれかをお選びください。
# 方法1:maven リポジトリで設定
- maven で最新の futu-api バージョンを選択し、クリックして進みます。
- ページ右側の関連設定をコピーしてプロジェクト設定に追加します。
例:Apache Maven でプロジェクト管理を行うユーザーは、下図の赤枠内のコードをプロジェクト設定にコピーできます。
# 方法2:Java API のダウンロード
- 最新バージョンの Java API パッケージをダウンロードしてください。
- ダウンロードした FTAPI ファイルを解凍します。
/FTAPI4Jが Java API のディレクトリです。FTAPI4J ディレクトリ構造内の/lib/futu-api-.x.y.z.jarをプロジェクト設定に追加してください。
# FTAPI4J ディレクトリ構造
+---ftapi4j futu-apiのソースコード。使用中のJDKバージョンと互換性がない場合はこのプロジェクトから再コンパイル可能
+---lib 共有ライブラリファイルの格納先
| futu-api-x.y.z.jar Futu API の Java バージョン
| bcprov-jdk15on-1.68.jar サードパーティライブラリ。暗号化・復号に使用
| bcpkix-jdk15on-1.68.jar サードパーティライブラリ。暗号化・復号に使用
| protobuf-java-3.5.1.jar サードパーティライブラリ。protobufデータの解析に使用
+---sample サンプルプロジェクト
+---resources mavenプロジェクトのデフォルト生成ディレクトリ
2
3
4
5
6
7
8
# ステップ3:futu-api プロジェクトの作成
IntelliJ IDEA での例:
新規プロジェクトの作成:

maven プロジェクトの選択:

プロジェクトパスの選択:

maven ツールの選択。ここでは IDEA 組み込みツールを使用します:

プロジェクトに入り、初期化完了を待ちます。完了後、下部ウィンドウに "BUILD SUCCESS" と表示されます:

futu-api の設定
maven リポジトリで設定した場合:
pom.xml ファイルを直接編集し、dependencies に futu-api の依存を追加します(x.y.z をバージョン番号に置き換えてください):

公式サイトから Java API をダウンロードした場合:
(1)プロジェクト内に /lib/ ディレクトリを作成し、/FTAPI4J/lib/futu-api-x.y.z.jar ファイルを /lib/ ディレクトリにコピーします(例:下図の futu-api-5.4.1607.jar)。
(2)pom.xml ファイルを編集し、dependencies に futu-api の依存を追加します。

# ステップ4:サンプルプロジェクトのインポート
サンプルには maven コンパイルスクリプトが含まれています。maven をサポートする IDE で /sample ディレクトリのプロジェクトをインポートできます。
# ステップ5:実行
main.java ファイル内のサンプルプログラムの設定が OpenD の設定と一致しているか確認します。
/sampleディレクトリの main.java ファイルを実行すると、以下のような成功時の戻り情報が表示されます。
Qot onInitConnect: ret=true desc=Succeed! connID=6750011030360491012
onReply_GetMarketState: retType: 0
retMsg: ""
errCode: 0
s2c {
marketInfoList {
security {
market: 1
code: "00700"
}
name: "\350\205\276\350\256\257\346\216\247\350\202\241"
marketState: 6
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
ご注意
- FTAPIChannel ダイナミックライブラリが見つからない場合は、
/libフォルダ内の対応するプラットフォームの FTAPIChannel ファイルをプログラム実行ディレクトリにコピーしてください。
# C++ サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:C++ API のダウンロード
最新バージョンの C++ API パッケージをダウンロードしてください。
ダウンロードした FTAPI ファイルを解凍します。/FTAPI4CPP が C++ API のディレクトリです。具体的なディレクトリ構造は FTAPI4CPP ディレクトリ構造を参照してください。
# FTAPI4CPP ディレクトリ構造
+---Bin 各OS向けデフォルトコンパイル環境でビルドされた共有ライブラリ
+---Include 共有ヘッダファイルおよびprotoプロトコルから生成された.h/.ccファイルの格納ディレクトリ
+---Sample サンプルプロジェクト
+---Src ソースコード
+---FTAPI FTAPIソースコード
+---protobuf protobufソースコード
2
3
4
5
6
# ステップ3:サンプルプロジェクトのインポート
サンプルには Visual Studio と XCode のプロジェクトファイルが含まれています。Visual Studio または XCode 開発環境で Sample プロジェクトをインポートできます。
# ステップ4:実行
simpleSample.cpp ファイル内のサンプルプログラムのAPI設定が OpenD の設定と一致しているか確認します。
実行後、以下のような成功時の戻り情報が表示されます。
Run GetSecuritySnapshotDemo
InitQot, suc = 1
GetHKEqtySecList, count = 2698
GetSecuritySnapshot, i = 0
GetSecuritySnapshot, i = 1
GetSecuritySnapshot, i = 2
GetSecuritySnapshot, i = 3
GetSecuritySnapshot, i = 4
GetSecuritySnapshot, i = 5
GetSecuritySnapshot, i = 6
GetSecuritySnapshot, i = 7
GetSecuritySnapshot, i = 8
GetSecuritySnapshot, i = 9
GetSecuritySnapshot, i = 10
GetSecuritySnapshot, i = 11
GetSecuritySnapshot, i = 12
GetSecuritySnapshot, i = 13
ParseHKEqtySecQot, first = (HK.00001, 56.65)
GetSecuritySnapshotDemo End
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
最新バージョンの Protobuf API パッケージをダウンロードしてください。
# JavaScript サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:JavaScript API のダウンロード
方法1:cmd で直接 npm を使用してインストールまたはアップグレード(npm は JavaScript API ソースコードのダウンロードのみサポート。より多くのサンプルコードが必要な場合は方法2を参照してください)。
- 初回インストール:
$ npm install --save futu-api。 - アップグレード:
$ npm update futu-api。
- 初回インストール:
方法2:最新バージョンの JavaScript API パッケージをダウンロードしてください。
ダウンロードした FTAPI ファイルを解凍します。/FTAPI4JS が JavaScript API のディレクトリです。ディレクトリ構成の詳細は FTAPI4JS ディレクトリ構成をご参照ください。
# FTAPI4JS ディレクトリ構成
+---Sample サンプルプロジェクト
+---src ソースコード
2
# ステップ3:サンプルの実行
Visual Studio Code でサンプルコードディレクトリ
FTAPI4JS/sampleを開きます。各 Demo ファイルの WebSocket 起動関連コードを、下図のように OpenD の設定に変更します(ご注意:GUI 版 OpenD はデフォルトで WebSocket を起動しますが、コマンドライン OpenD は設定パラメータで手動起動する必要があります)。

Visual Studio Code コンソールで
npm installを入力し、プロジェクトの依存関係をインストールします。
Visual Studio Code コンソールで
npm run serveを入力し、プロジェクトを実行します。
プロジェクトの実行に成功したら、対応するサービスアドレスを開きます。

ページ上で関連機能をお試しください。

- Python
- C#
- Java
- C++
- Proto
- JavaScript
# Python サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:Python API のダウンロード
方法1:cmd で直接 pip を使用してインストール。
- 初回インストール:Windows
$ pip install moomoo-api、Linux/Mac$ pip3 install moomoo-api。 - アップグレード:Windows
$ pip install moomoo-api --upgrade、Linux/Mac$ pip3 install moomoo-api --upgrade。
- 初回インストール:Windows
方法2:moomoo 公式サイトから最新バージョンの Python API をダウンロードしてください。
# ステップ3:新規プロジェクトの作成
PyCharm を開き、Welcome to PyCharm ウィンドウで New Project をクリックします。既にプロジェクトを作成済みの場合は、そのプロジェクトを開いてください。

# ステップ4:新規ファイルの作成
プロジェクト配下に新しい Python ファイルを作成し、以下のサンプルコードをファイルにコピーします。
サンプルコードの機能は、相場スナップショットの確認とデモ取引の発注です。
from moomoo import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111) # 相場オブジェクトの作成
print(quote_ctx.get_market_snapshot('HK.00700')) # 香港株 HK.00700 のスナップショットデータを取得
quote_ctx.close() # オブジェクトをクローズ。接続数の枯渇を防止
trd_ctx = OpenSecTradeContext(host='127.0.0.1', port=11111) # 取引オブジェクトの作成
print(trd_ctx.place_order(price=500.0, qty=100, code="HK.00700", trd_side=TrdSide.BUY, trd_env=TrdEnv.SIMULATE)) # デモ取引で発注(本番環境の場合は事前に取引パスワードのロック解除が必要)
trd_ctx.close() # オブジェクトをクローズ。接続数の枯渇を防止
2
3
4
5
6
7
8
9
10
11
# ステップ5:ファイルの実行
右クリックで実行すると、以下のような成功時の戻り情報が表示されます。
2020-11-05 17:09:29,705 [open_context_base.py] _socket_reconnect_and_wait_ready:255: Start connecting: host=127.0.0.1; port=11111;
2020-11-05 17:09:29,705 [open_context_base.py] on_connected:344: Connected : conn_id=1;
2020-11-05 17:09:29,706 [open_context_base.py] _handle_init_connect:445: InitConnect ok: conn_id=1; info={'server_version': 218, 'login_user_id': 7157878, 'conn_id': 6730043337026687703, 'conn_key': '3F17CF3EEF912C92', 'conn_iv': 'C119DDDD6314F18A', 'keep_alive_interval': 10, 'is_encrypt': False};
(0, code update_time last_price open_price high_price ... after_high_price after_low_price after_change_val after_change_rate after_amplitude
0 HK.00700 2020-11-05 16:08:06 625.0 610.0 625.0 ... N/A N/A N/A N/A N/A
[1 rows x 132 columns])
2020-11-05 17:09:29,739 [open_context_base.py] _socket_reconnect_and_wait_ready:255: Start connecting: host=127.0.0.1; port=11111;
2020-11-05 17:09:29,739 [network_manager.py] work:366: Close: conn_id=1
2020-11-05 17:09:29,739 [open_context_base.py] on_connected:344: Connected : conn_id=2;
2020-11-05 17:09:29,740 [open_context_base.py] _handle_init_connect:445: InitConnect ok: conn_id=2; info={'server_version': 218, 'login_user_id': 7157878, 'conn_id': 6730043337169705045, 'conn_key': 'A624CF3EEF91703C', 'conn_iv': 'BF1FF3806414617B', 'keep_alive_interval': 10, 'is_encrypt': False};
(0, code stock_name trd_side order_type order_status ... dealt_avg_price last_err_msg remark time_in_force fill_outside_rth
0 HK.00700 腾讯控股 BUY NORMAL SUBMITTING ... 0.0 DAY N/A
[1 rows x 16 columns])
2020-11-05 17:09:32,843 [network_manager.py] work:366: Close: conn_id=2
(0, code stock_name trd_side order_type order_status ... dealt_avg_price last_err_msg remark time_in_force fill_outside_rth
0 HK.00700 腾讯控股 BUY ABSOLUTE_LIMIT SUBMITTED ... 0.0 DAY N/A
[1 rows x 16 columns])
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# C# サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:C# API のダウンロード
C# API のダウンロードとアップグレードには2つの方法があります。いずれかをお選びください。
方法1:cmd で nuget を使用してダウンロードまたはアップグレード
$ dotnet add package moomoo-api(nuget は C# API ソースコードのダウンロードのみサポート。より多くのサンプルコードが必要な場合は方法2をご参照ください)。方法2:moomoo 公式サイトから最新版の C# API をダウンロードしてください。ダウンロードした MMAPI ファイルを解凍します。
/MMAPI4NETが C# API のディレクトリです。ディレクトリ構成の詳細は MMAPI4NET ディレクトリ構成をご参照ください。
# MMAPI4NET ディレクトリ構成
+---MMAPI4Net MMAPI4NETのソースコード。使用中の.NETバージョンと互換性がない場合はソースコードから再コンパイル可能
+---lib
+---net4.5 .NET 4.5 の依存ライブラリ
| MMAPI4Net.dll OpenAPI の C# バージョン
| Google.ProtocolBuffers.dll サードパーティライブラリ。protobufデータの解析に使用
| Google.ProtocolBuffers.Serialization.dll サードパーティライブラリ。protobufデータの解析に使用
|
+---netcore2.1 .NET Core 2.1 の依存ライブラリ
| MMAPI4Net.dll OpenAPI の C# バージョン
| Google.ProtocolBuffers.dll サードパーティライブラリ。protobufデータの解析に使用
| Google.ProtocolBuffers.Serialization.dll サードパーティライブラリ。protobufデータの解析に使用
|
MMAPIChannel MMAPI4NETが依存するCダイナミックライブラリ。APIとOpenDの通信に使用。各OS名のディレクトリに格納。.NETプログラム実行前に、対応するプラットフォームのダイナミックライブラリをプログラム実行ディレクトリにコピーしてください。
+---Sample サンプルプロジェクト
+---tools サードパーティツール。protoプロトコルをC#コードに変換。このディレクトリ内の readme.md を参照
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# ステップ3:サンプルプロジェクトのインポート
Visual Studio 開発環境を開き、ディレクトリ内のプロジェクトファイル mmAPI4NetCore.sln をインポートします。
# ステップ4:実行
まず、サンプルプログラムで使用するAPI設定が OpenD の設定と一致しているか確認します。
次に、Sample プロジェクト内の Program.cs ファイルの Main 関数で実行する機能を確認します。実行後、以下のような出力情報が表示されます。
InitConnected
Send QotGetUserSecurity: 3
{"staticInfoList":[{"basic":{"security":{"market":1,"code":"08311"},"id":69179038244983,"lotSize":10000,"secType":3,"name":"\u5706\u7f8e\u5149\u7535","listTime":"2014-02-07","delisting":false,"listTimestamp":1391702400}},{"basic":{"security":{"market":1,"code":"02127"},"id":79925046413391,"lotSize":2000,"secType":3,"name":"\u6c47\u68ee\u5bb6\u5c45","listTime":"2020-12-
29","delisting":false,"listTimestamp":1609171200}},{"basic":{"security":{"market":1,"code":"EVG2101"},"id":71002729,"lotSize":2000,"secType":10,"name":"\u4e2d\u56fd\u6052\u5927\u96c6\u56e22101","listTime":"","delisting":false},"futureExData":{"lastTradeTime":"2021-01-28","lastTradeTimestamp":1611820800,"isMainContract":false}},{"basic":{"security":{"market":1,"code":"0
2333"},"id":53257594472733,"lotSize":500,"secType":3,"name":"\u957f\u57ce\u6c7d\u8f66","listTime":"2003-12-15","delisting":false,"listTimestamp":1071417600}},{"basic":{"security":{"market":1,"code":"06993"},"id":79882096745297,"lotSize":500,"secType":3,"name":"\u84dd\u6708\u4eae\u96c6\u56e2","listTime":"2020-12-16","delisting":false,"listTimestamp":1608048000}},{"basic
":{"security":{"market":1,"code":"01810"},"id":76033806042898,"lotSize":200,"secType":3,"name":"\u5c0f\u7c73\u96c6\u56e2-W","listTime":"2018-07-09","delisting":false,"listTimestamp":1531065600}},{"basic":{"security":{"market":1,"code":"09992"},"id":79869211846408,"lotSize":200,"secType":3,"name":"\u6ce1\u6ce1\u739b\u7279","listTime":"2020-12-11","delisting":false,"list
Timestamp":1607616000}},{"basic":{"security":{"market":1,"code":"03948"},"id":66709432045420,"lotSize":100,"secType":3,"name":"\u4f0a\u6cf0\u7164\u70ad","listTime":"2012-07-12","delisting":false,"listTimestamp":1342022400}},{"basic":{"security":{"market":1,"code":"01398"},"id":57754425230710,"lotSize":1000,"secType":3,"name":"\u5de5\u5546\u94f6\u884c","listTime":"2006-
10-27","delisting":false,"listTimestamp":1161878400}},{"basic":{"security":{"market":1,"code":"06618"},"id":79843442039258,"lotSize":50,"secType":3,"name":"\u4eac\u4e1c\u5065\u5eb7","listTime":"2020-12-08","delisting":false,"listTimestamp":1607356800}},{"basic":{"security":{"market":1,"code":"09698"},"id":79693118186978,"lotSize":100,"secType":3,"name":"\u4e07\u56fd\u6
570\u636e-SW","listTime":"2020-11-02","delisting":false,"listTimestamp":1604246400}},{"basic":{"security":{"market":1,"code":"03690"},"id":76364518526570,"lotSize":100,"secType":3,"name":"\u7f8e\u56e2-W","listTime":"2018-09-20","delisting":false,"listTimestamp":1537372800}},{"basic":{"security":{"market":1,"code":"09988"},"id":78224239372036,"lotSize":100,"secType":3,"
name":"\u963f\u91cc\u5df4\u5df4-SW","listTime":"2019-11-26","delisting":false,"listTimestamp":1574697600}},{"basic":{"security":{"market":1,"code":"800000"},"id":800000,"lotSize":0,"secType":6,"name":"\u6052\u751f\u6307\u6570","listTime":"1970-01-01","delisting":false,"listTimestamp":0}},{"basic":{"security":{"market":1,"code":"00005"},"id":5,"lotSize":400,"secType":3,
"name":"\u6c47\u4e30\u63a7\u80a1","listTime":"1970-01-01","delisting":false,"listTimestamp":0}},{"basic":{"security":{"market":1,"code":"00175"},"id":4930622455983,"lotSize":1000,"secType":3,"name":"\u5409\u5229\u6c7d\u8f66","listTime":"1973-02-23","delisting":false,"listTimestamp":99244800}},{"basic":{"security":{"market":1,"code":"09677"},"id":79598628906445,"lotSize
":1000,"secType":3,"name":"\u5a01\u6d77\u94f6\u884c","listTime":"2020-10-12","delisting":false,"listTimestamp":1602432000}},{"basic":{"security":{"market":1,"code":"06055"},"id":77494094927783,"lotSize":1000,"secType":3,"name":"\u4e2d\u70df\u9999\u6e2f","listTime":"2019-06-12","delisting":false,"listTimestamp":1560268800}},{"basic":{"security":{"market":1,"code":"00788
"},"id":76175539962644,"lotSize":2000,"secType":3,"name":"\u4e2d\u56fd\u94c1\u5854","listTime":"2018-08-08","delisting":false,"listTimestamp":1533657600}},{"basic":{"security":{"market":1,"code":"02318"},"id":54082228193550,"lotSize":500,"secType":3,"name":"\u4e2d\u56fd\u5e73\u5b89","listTime":"2004-06-24","delisting":false,"listTimestamp":1088006400}},{"basic":{"secur
ity":{"market":1,"code":"BK1011"},"id":10001011,"lotSize":0,"secType":7,"name":"\u5316\u80a5\u53ca\u519c\u7528\u5316\u5408\u7269","listTime":"1970-01-01","delisting":false,"listTimestamp":0}},{"basic":{"security":{"market":1,"code":"BK1095"},"id":10001095,"lotSize":0,"secType":7,"name":"\u697c\u5b87\u5efa\u9020","listTime":"1970-01-01","delisting":false,"listTimestamp"
:0}},{"basic":{"security":{"market":1,"code":"01328"},"id":59274843653424,"lotSize":10000,"secType":3,"name":"\u91d1\u6d8c\u6295\u8d44","listTime":"2007-10-16","delisting":false,"listTimestamp":1192464000}},{"basic":{"security":{"market":1,"code":"00900"},"id":40312563041156,"lotSize":2000,"secType":3,"name":"AEON\u4fe1\u8d37","listTime":"1995-09-14","delisting":false,
"listTimestamp":811008000}},{"basic":{"security":{"market":1,"code":"00030"},"id":34144990003230,"lotSize":2000,"secType":3,"name":"\u4e07\u9686\u63a7\u80a1\u96c6\u56e2","listTime":"1991-10-09","delisting":false,"listTimestamp":686937600}},{"basic":{"security":{"market":1,"code":"00028"},"id":26989574488092,"lotSize":1000,"secType":3,"name":"\u5929\u5b89","listTime":"1
987-03-18","delisting":false,"listTimestamp":542995200}},{"basic":{"security":{"market":1,"code":"00519"},"id":25447681229319,"lotSize":5000,"secType":3,"name":"\u5b9e\u529b\u5efa\u4e1a","listTime":"1986-03-24","delisting":false,"listTimestamp":511977600}},{"basic":{"security":{"market":1,"code":"00276"},"id":4140348473620,"lotSize":3000,"secType":3,"name":"\u8499\u53e
4\u80fd\u6e90","listTime":"1972-08-23","delisting":false,"listTimestamp":83347200}},{"basic":{"security":{"market":1,"code":"06862"},"id":76385993366222,"lotSize":1000,"secType":3,"name":"\u6d77\u5e95\u635e","listTime":"2018-09-26","delisting":false,"listTimestamp":1537891200}},{"basic":{"security":{"market":1,"code":"00451"},"id":34866544509379,"lotSize":2000,"secType
":3,"name":"\u534f\u946b\u65b0\u80fd\u6e90","listTime":"1992-03-25","delisting":false,"listTimestamp":701452800}},{"basic":{"security":{"market":1,"code":"02899"},"id":53291954211667,"lotSize":2000,"secType":3,"name":"\u7d2b\u91d1\u77ff\u4e1a","listTime":"2003-12-23","delisting":false,"listTimestamp":1072108800}},{"basic":{"security":{"market":1,"code":"08133"},"id":71
098888626117,"lotSize":20000,"secType":3,"name":"\u94f8\u80fd\u63a7\u80a1","listTime":"2015-04-30","delisting":false,"listTimestamp":1430323200}},{"basic":{"security":{"market":1,"code":"01432"},"id":69857643070872,"lotSize":1000,"secType":3,"name":"\u4e2d\u56fd\u5723\u7267","listTime":"2014-07-15","delisting":false,"listTimestamp":1405353600}},{"basic":{"security":{"m
arket":1,"code":"09933"},"id":78426102834893,"lotSize":4000,"secType":3,"name":"GHW INTL","listTime":"2020-01-21","delisting":false,"listTimestamp":1579536000}},{"basic":{"security":{"market":1,"code":"07500"},"id":77494094929228,"lotSize":100,"secType":4,"name":"\u5357\u65b9\u4e24\u500d\u770b\u7a7a\u6052\u6307","listTime":"2019-05-28","delisting":false,"listTimestamp"
:1558972800}},{"basic":{"security":{"market":1,"code":"00981"},"id":53661321397205,"lotSize":500,"secType":3,"name":"\u4e2d\u82af\u56fd\u9645","listTime":"2004-03-18","delisting":false,"listTimestamp":1079539200}}]}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ご注意
- MMAPIChannel ダイナミックライブラリが見つからない場合は、lib フォルダ内の対応プラットフォームの MMAPIChannel ファイルを、プログラム実行時のカレントディレクトリにコピーしてください。
# Java サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:Java API のダウンロード
Java API のダウンロードとアップグレードには2つの方法があります。いずれかをお選びください。
# 方法1:maven リポジトリで設定
- maven で最新の moomoo-api バージョンを選択し、クリックして開きます。
- ページ右側の関連設定をコピーしてプロジェクト設定に追加します。
例:Apache Maven でプロジェクト管理を行うユーザーは、下図の赤枠内のコードをプロジェクト設定にコピーできます。
# 方法2:公式サイトから Java API をダウンロード
- moomoo 公式サイトから最新バージョンの Java API をダウンロードしてください。
- ダウンロードした MMAPI ファイルを解凍します。
/MMAPI4Jが Java API のディレクトリです。MMAPI4J ディレクトリ構成の/lib/moomoo-api-.x.y.z.jarをプロジェクトに設定してください。
# MMAPI4J ディレクトリ構成
+---mmapi4j moomoo-apiのソースコード。使用中のJDKバージョンと互換性がない場合はこのプロジェクトから再コンパイル可能
+---lib 共有ライブラリファイルの格納先
| moomoo-api-x.y.z.jar moomoo API の Java バージョン
| bcprov-jdk15on-1.68.jar サードパーティライブラリ。暗号化・復号に使用
| bcpkix-jdk15on-1.68.jar サードパーティライブラリ。暗号化・復号に使用
| protobuf-java-3.5.1.jar サードパーティライブラリ。protobufデータの解析に使用
+---sample サンプルプロジェクト
+---resources mavenプロジェクトのデフォルト生成ディレクトリ
2
3
4
5
6
7
8
# ステップ3:moomoo-api プロジェクトの作成
IntelliJ IDEA での例:
新規プロジェクトの作成:

maven プロジェクトの選択:

プロジェクトパスの選択:

maven ツールの選択。ここでは IDEA 組み込みツールを使用します:

プロジェクトに入り、初期化完了を待ちます。完了後、下部ウィンドウに "BUILD SUCCESS" と表示されます:

設定 moomoo-api
maven リポジトリで設定した場合:
pom.xml ファイルを直接編集し、dependencies に moomoo-api の依存を追加します(x.y.z をバージョン番号に置き換えてください):

公式サイトから Java API をダウンロードした場合:
(1)プロジェクト配下に /lib/ ディレクトリを作成し、/MMAPI4J/lib/moomoo-api-x.y.z.jar ファイルを /lib/ ディレクトリにコピーします(例:下図の moomoo-api-5.4.1607.jar)。
(2)pom.xml ファイルを編集し、dependencies に moomoo-api 依存関係を追加します。

# ステップ4:サンプルプロジェクトのインポート
サンプルには maven コンパイルスクリプトが含まれています。maven をサポートする IDE で /sample ディレクトリのプロジェクトをインポートできます。
# ステップ5:実行
main.java ファイル内のサンプルプログラムの設定が OpenD の設定と一致しているか確認します。
/sampleディレクトリの main.java ファイルを実行すると、以下のような成功時の戻り情報が表示されます。
Qot onInitConnect: ret=true desc=Succeed! connID=6750011030360491012
onReply_GetMarketState: retType: 0
retMsg: ""
errCode: 0
s2c {
marketInfoList {
security {
market: 1
code: "00700"
}
name: "\350\205\276\350\256\257\346\216\247\350\202\241"
marketState: 6
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
ご注意
- MMAPIChannel ダイナミックライブラリが見つからない場合は、
/libフォルダ内の対応プラットフォームの MMAPIChannel ファイルを、プログラム実行時のカレントディレクトリにコピーしてください。
# C++ サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:C++ API のダウンロード
moomoo 公式サイトから最新バージョンの C++ API をダウンロードしてください。
ダウンロードした MMAPI ファイルを解凍します。/MMAPI4CPP が C++ API のディレクトリです。ディレクトリ構成の詳細は MMAPI4CPP ディレクトリ構成をご参照ください。
# MMAPI4CPP ディレクトリ構成
+---Bin 各OS向けデフォルトコンパイル環境でビルドされた共有ライブラリ
+---Include 共有ヘッダファイルおよびprotoプロトコルから生成された.h/.ccファイルの格納ディレクトリ
+---Sample サンプルプロジェクト
+---Src ソースコード
+---MMAPI MMAPIソースコード
+---protobuf protobufソースコード
2
3
4
5
6
# ステップ3:サンプルプロジェクトのインポート
サンプルには Visual Studio と XCode のプロジェクトファイルが含まれています。Visual Studio または XCode 開発環境で Sample プロジェクトをインポートできます。
# ステップ4:実行
simpleSample.cpp ファイル内のサンプルプログラムのAPI設定が OpenD の設定と一致しているか確認します。
実行後、以下のような成功時の戻り情報が表示されます。
Run GetSecuritySnapshotDemo
InitQot, suc = 1
GetHKEqtySecList, count = 2698
GetSecuritySnapshot, i = 0
GetSecuritySnapshot, i = 1
GetSecuritySnapshot, i = 2
GetSecuritySnapshot, i = 3
GetSecuritySnapshot, i = 4
GetSecuritySnapshot, i = 5
GetSecuritySnapshot, i = 6
GetSecuritySnapshot, i = 7
GetSecuritySnapshot, i = 8
GetSecuritySnapshot, i = 9
GetSecuritySnapshot, i = 10
GetSecuritySnapshot, i = 11
GetSecuritySnapshot, i = 12
GetSecuritySnapshot, i = 13
ParseHKEqtySecQot, first = (HK.00001, 56.65)
GetSecuritySnapshotDemo End
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
moomoo 公式サイトから最新版の Protobuf API をダウンロードできます。
# JavaScript サンプル
# ステップ1:OpenD のダウンロード・インストール・ログイン
こちらを参考に、OpenD のダウンロード、インストール、ログインを完了してください。
# ステップ2:JavaScript API のダウンロード
方法1:cmd で直接 npm を使用してインストールまたはアップグレード(npm は JavaScript API ソースコードのダウンロードのみサポート。より多くのサンプルコードが必要な場合は方法2を参照してください)。
- 初回インストール:
$ npm install --save moomoo-api。 - アップグレード:
$ npm update moomoo-api。
- 初回インストール:
方法2:moomoo 公式サイトから最新バージョンの JavaScript API をダウンロードしてください。
ダウンロードした MMAPI ファイルを解凍します。/MMAPI4JS が JavaScript API のディレクトリです。ディレクトリ構成の詳細は MMAPI4JS ディレクトリ構成をご参照ください。
# MMAPI4JS ディレクトリ構成
+---Sample サンプルプロジェクト
+---src ソースコード
2
# ステップ3:サンプルの実行
Visual Studio Code でサンプルコードディレクトリ
MMAPI4JS/sampleを開きます。各 Demo ファイルの WebSocket 起動関連コードを、下図のように OpenD の設定に変更します(ご注意:GUI 版 OpenD はデフォルトで WebSocket を起動しますが、コマンドライン OpenD は設定パラメータで手動起動する必要があります)。

Visual Studio Code コンソールで
npm installを入力し、プロジェクトの依存関係をインストールします。
Visual Studio Code コンソールで
npm run serveを入力し、プロジェクトを実行します。
プロジェクトの実行に成功したら、対応するサービスアドレスを開きます。

ページ上で関連機能をお試しください。
