# 取引オブジェクト
- Python
- Proto
- C#
- Java
- C++
- JavaScript
# 接続の作成
OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUSECURITIES)
OpenFutureTradeContext(host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUSECURITIES)
概要
取引カテゴリに応じて口座を選択し、対応する取引オブジェクトを作成します。
実例 口座 OpenSecTradeContext 証券口座 株式、ETFs、ワラント、CBBC、株式および指数のオプションはこの口座を使用しますOpenFutureTradeContext 先物口座 先物、先物オプションはこの口座を使用しますパラメータ
パラメータ 型 説明 filter_trdmarket TrdMarket 対応する取引市場権限の口座をフィルタ - このパラメータは OpenSecTradeContext にのみ適用されます
- このパラメータは口座のフィルタにのみ使用され、取引接続には影響しません
host str OpenD がリスニングしている IP アドレス port int OpenD がリッスンする IP ポート is_encrypt bool 暗号化を有効にするかどうか デフォルト None は enable_proto_encrypt の設定を使用することを意味しますsecurity_firm SecurityFirm 所属証券会社 Example
from futu import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUSECURITIES)
trd_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 接続のクローズ
close()
概要
取引オブジェクトを閉じます。デフォルトでは、moomoo API が内部で作成したスレッドがプロセスの終了をブロックするため、すべての Context を close した後にのみプロセスが正常終了できます。ただし、set_all_thread_daemon ですべての内部スレッドを daemon スレッドに設定すると、Context の close を呼び出さなくてもプロセスを正常終了できます。
Example
from futu import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111)
trd_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 接続の作成
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
message C2S
{
required int32 clientVer = 1; //クライアントバージョン番号。clientVer = "."以前の数値 × 100 + "."以後の数値。例:1.1のclientVerは1 × 100 + 1 = 101、2.21は2 × 100 + 21 = 221
required string clientID = 2; //クライアント一意識別子。具体的な生成ルールはなく、クライアント側で一意性を保証すればよい
optional bool recvNotify = 3; //この接続でマーケット状態変化や取引のロック解除要求等のイベント通知を受信するかどうか。trueで受信(OpenDがこの接続に通知をプッシュ)、falseで非受信
//通信を暗号化する場合、まずOpenDとクライアントの両方でRSA鍵を設定する必要がある。未設定の場合は常に暗号化なし
//RSA鍵が設定済みかつ指定の暗号化アルゴリズムがPacketEncAlgo_None以外の場合に暗号化される(未設定でもRSA鍵があればデフォルトの暗号化方式を採用)。デフォルトはFTAES_ECBアルゴリズム
optional int32 packetEncAlgo = 4; //パケット暗号化アルゴリズムを指定。Common.PacketEncAlgoの列挙定義を参照
optional int32 pushProtoFmt = 5; //この接続上のプッシュプロトコル形式を指定。未指定の場合は push_proto_type 設定項目を使用
optional string programmingLanguage = 6; //API プログラミング言語。言語選好の統計に使用
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 戻り値
message S2C
{
required int32 serverVer = 1; //OpenD のバージョン番号
required uint64 loginUserID = 2; //OpenD にログインしたユーザー ID
required uint64 connID = 3; //この接続の接続 ID。接続の一意識別子
required string connAESKey = 4; //この接続の後続 AES 暗号化通信の Key。16バイト固定長文字列
required int32 keepAliveInterval = 5; //ハートビート保持間隔
optional string aesCBCiv = 6; //AES 暗号化通信 CBC モードの iv。16バイト固定長文字列
}
message Response
{
required int32 retType = 1 [default = -400]; //戻り値。Common.RetType の列挙定義を参照
optional string retMsg = 2; //戻り値の説明
optional int32 errCode = 3; //エラーコード。クライアントは通常 retType と RetMsg で結果と詳細を判断。errCode はログ記録用で、一部のプロトコル失敗時の照合にのみ使用
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- API 呼び出し結果,構造は~を参照: RetType
プロトコル ID
1001
# 接続の作成
bool InitConnect(String ip, short port, bool isEnableEncrypt)
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 ip str penD リスニングアドレス port int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 戻り値
- ret:実行を開始したかどうか。接続結果を示すものではなく、結果は OnInitConnect コールバックで通知されます
Example
public class Program : FTSPI_Trd, FTSPI_Conn {
FTAPI_Trd trd = new FTAPI_Trd();
public Program() {
trd.SetClientInfo("csharp", 1); //クライアント情報の設定
trd.SetConnCallback(this); //接続コールバックの設定
}
public void Start() {
trd.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(FTAPI_Conn client, long errCode, String desc)
{
Console.Write("Trd onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
}
public void OnDisconnect(FTAPI_Conn client, long errCode) {
Console.Write("Trd onDisConnect: {0}\n", errCode);
}
public static void Main(String[] args) {
FTAPI.Init();
Program trd = new Program();
trd.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
- Output
Trd onInitConnect: ret=0 desc= connID=6826804060126078029
# 接続の破棄
void Close()
概要
接続の破棄
Example
FTAPI_Trd trd = new FTAPI_Trd();
trd.InitConnect("127.0.0.1", (ushort)11111, false);
trd.Close();
2
3
# 接続の作成
boolean initConnect(String ip, short port, boolean isEnableEncrypt)
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 ip str OpenD リスニングアドレス port int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 戻り値
- ret:実行を開始したかどうか。接続結果を示すものではなく、結果は onInitConnect コールバックで通知されます
Example
public class TrdDemo implements FTSPI_Trd, FTSPI_Conn {
FTAPI_Conn_Trd trd = new FTAPI_Conn_Trd();
public TrdDemo() {
trd.setClientInfo("javaclient", 1); //クライアント情報の設定
trd.setConnSpi(this); //接続コールバックの設定
}
public void start() throws IOException {
trd.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(FTAPI_Conn client, long errCode, String desc)
{
System.out.printf("Trd onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
}
@Override
public void onDisconnect(FTAPI_Conn client, long errCode) {
System.out.printf("Trd onDisConnect: %d\n", errCode);
}
public static void main(String[] args) throws IOException {
FTAPI.init();
TrdDemo trd = new TrdDemo();
trd.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 接続の破棄
void close()
概要
接続の破棄
Example
FTAPI_Conn_Trd trd = new FTAPI_Conn_Trd();
trd.initConnect("127.0.0.1", (short)11111, false);
trd.close();
2
3
# 接続の作成
FTAPI_Trd* CreateTrdApi();
bool InitConnect(const char* szIPAddr, Futu::u16_t nPort, bool bEnableEncrypt);
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 szIPAddr str OpenD リスニングアドレス nPort int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 Example
FTAPI_Trd *m_pTrdApi = FTAPI::CreateTrdApi();
m_pTrdApi->InitConnect("127.0.0.1", 11111, false);
FTAPI::ReleaseTrdApi(m_pTrdApi);
2
3
# 接続の破棄
void ReleaseTrdApi(FTAPI_Trd* pTrd);
概要
接続の破棄
戻り値
- pTrd:接続実例
Example
FTAPI_Trd *m_pTrdApi = FTAPI::CreateTrdApi();
m_pTrdApi->InitConnect("127.0.0.1", 11111, false);
FTAPI::ReleaseTrdApi(m_pTrdApi);
2
3
# 接続の作成
start(ip, port, ssl, key)
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 ip str OpenD がリスニングしている WebSocket アドレス port int OpenD がリスニングしている WebSocket ポート ssl bool SSL 暗号化を有効にするかどうか。WebSocket 関連を参照 key str 接続キー(未指定の場合は接続タイムアウトが発生します)。OpenD の起動パラメータで設定できます。GUI 版 OpenD では WebSocket キーが未設定の場合、ランダムに割り当てられます Example
import ftWebSocket from "@/components/ft-websocket/main.js";
class Example {
example() {
this.websocket = new ftWebSocket();
this.websocket.start("127.0.0.1", 33333, false, null);
}
}
2
3
4
5
6
7
# 接続のクローズ
close()
概要
接続のクローズ
Example
import ftWebSocket from "@/components/ft-websocket/main.js";
class Example {
example() {
this.websocket = new ftWebSocket();
this.websocket.start("127.0.0.1", 33333, false, null);
this.websocket.close();
}
}
2
3
4
5
6
7
8
- Python
- Proto
- C#
- Java
- C++
- JavaScript
# 接続の作成
OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUSECURITIES)
OpenFutureTradeContext(host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUSECURITIES)
概要
取引カテゴリに応じて口座を選択し、対応する取引オブジェクトを作成します。
実例 口座 OpenSecTradeContext 証券口座 株式、ETFs、ワラント、CBBC、株式および指数のオプションはこの口座を使用しますOpenFutureTradeContext 先物口座 先物、先物オプションはこの口座を使用しますパラメータ
パラメータ 型 説明 filter_trdmarket TrdMarket 対応する取引市場権限の口座をフィルタ - このパラメータは OpenSecTradeContext にのみ適用されます
- このパラメータは口座のフィルタにのみ使用され、取引接続には影響しません
host str OpenD がリスニングしている IP アドレス port int OpenD がリッスンする IP ポート is_encrypt bool 暗号化を有効にするかどうか デフォルト None は enable_proto_encrypt の設定を使用することを意味しますsecurity_firm SecurityFirm 所属証券会社 Example
from moomoo import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.US, host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUINC)
trd_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 接続のクローズ
close()
概要
取引オブジェクトを閉じます。デフォルトでは、moomoo API が内部で作成したスレッドがプロセスの終了をブロックするため、すべての Context を close した後にのみプロセスが正常終了できます。ただし、set_all_thread_daemon ですべての内部スレッドを daemon スレッドに設定すると、Context の close を呼び出さなくてもプロセスを正常終了できます。
Example
from moomoo import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.US, host='127.0.0.1', port=11111, is_encrypt=None, security_firm=SecurityFirm.FUTUINC)
trd_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 接続の作成
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
message C2S
{
required int32 clientVer = 1; //クライアントバージョン番号。clientVer = "."以前の数値 × 100 + "."以後の数値。例:1.1のclientVerは1 × 100 + 1 = 101、2.21は2 × 100 + 21 = 221
required string clientID = 2; //クライアント一意識別子。具体的な生成ルールはなく、クライアント側で一意性を保証すればよい
optional bool recvNotify = 3; //この接続でマーケット状態変化や取引のロック解除要求等のイベント通知を受信するかどうか。trueで受信(OpenDがこの接続に通知をプッシュ)、falseで非受信
//通信を暗号化する場合、まずOpenDとクライアントの両方でRSA鍵を設定する必要がある。未設定の場合は常に暗号化なし
//RSA鍵が設定済みかつ指定の暗号化アルゴリズムがPacketEncAlgo_None以外の場合に暗号化される(未設定でもRSA鍵があればデフォルトの暗号化方式を採用)。デフォルトはFTAES_ECBアルゴリズム
optional int32 packetEncAlgo = 4; //パケット暗号化アルゴリズムを指定。Common.PacketEncAlgoの列挙定義を参照
optional int32 pushProtoFmt = 5; //この接続上のプッシュプロトコル形式を指定。未指定の場合は push_proto_type 設定項目を使用
optional string programmingLanguage = 6; //API プログラミング言語。言語選好の統計に使用
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 戻り値
message S2C
{
required int32 serverVer = 1; //OpenD のバージョン番号
required uint64 loginUserID = 2; //OpenD にログインした moomoo ユーザー ID
required uint64 connID = 3; //この接続の接続 ID。接続の一意識別子
required string connAESKey = 4; //この接続の後続 AES 暗号化通信の Key。16バイト固定長文字列
required int32 keepAliveInterval = 5; //ハートビート保持間隔
optional string aesCBCiv = 6; //AES 暗号化通信 CBC モードの iv。16バイト固定長文字列
}
message Response
{
required int32 retType = 1 [default = -400]; //戻り値。Common.RetType の列挙定義を参照
optional string retMsg = 2; //戻り値の説明
optional int32 errCode = 3; //エラーコード。クライアントは通常 retType と RetMsg で結果と詳細を判断。errCode はログ記録用で、一部のプロトコル失敗時の照合にのみ使用
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- API 呼び出し結果,構造は~を参照: RetType
プロトコル ID
1001
# 接続の作成
bool InitConnect(String ip, short port, bool isEnableEncrypt)
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 ip str OpenD リスニングアドレス port int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 戻り値
- ret:実行を開始したかどうか。接続結果を示すものではなく、結果は OnInitConnect コールバックで通知されます
Example
public class Program : MMSPI_Trd, MMSPI_Conn {
MMAPI_Trd trd = new MMAPI_Trd();
public Program() {
trd.SetClientInfo("csharp", 1); //クライアント情報の設定
trd.SetConnCallback(this); //接続コールバックの設定
}
public void Start() {
trd.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(MMAPI_Conn client, long errCode, String desc)
{
Console.Write("Trd onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
}
public void OnDisconnect(MMAPI_Conn client, long errCode) {
Console.Write("Trd onDisConnect: {0}\n", errCode);
}
public static void Main(String[] args) {
MMAPI.Init();
Program trd = new Program();
trd.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
- Output
Trd onInitConnect: ret=0 desc= connID=6826804060126078029
# 接続の破棄
void Close()
概要
接続の破棄
Example
MMAPI_Trd trd = new MMAPI_Trd();
trd.InitConnect("127.0.0.1", (ushort)11111, false);
trd.Close();
2
3
# 接続の作成
boolean initConnect(String ip, short port, boolean isEnableEncrypt)
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 ip str OpenD リスニングアドレス port int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 戻り値
- ret:実行を開始したかどうか。接続結果を示すものではなく、結果は onInitConnect コールバックで通知されます
Example
public class TrdDemo implements MMSPI_Trd, MMSPI_Conn {
MMAPI_Conn_Trd trd = new MMAPI_Conn_Trd();
public TrdDemo() {
trd.setClientInfo("javaclient", 1); //クライアント情報の設定
trd.setConnSpi(this); //接続コールバックの設定
}
public void start() throws IOException {
trd.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(MMAPI_Conn client, long errCode, String desc)
{
System.out.printf("Trd onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
}
@Override
public void onDisconnect(MMAPI_Conn client, long errCode) {
System.out.printf("Trd onDisConnect: %d\n", errCode);
}
public static void main(String[] args) throws IOException {
MMAPI.init();
TrdDemo trd = new TrdDemo();
trd.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 接続の破棄
void close()
概要
接続の破棄
Example
MMAPI_Conn_Trd trd = new MMAPI_Conn_Trd();
trd.initConnect("127.0.0.1", (short)11111, false);
trd.close();
2
3
# 接続の作成
MMAPI_Trd* CreateTrdApi();
bool InitConnect(const char* szIPAddr, moomoo::u16_t nPort, bool bEnableEncrypt);
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 szIPAddr str OpenD リスニングアドレス nPort int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 Example
MMAPI_Trd *m_pTrdApi = MMAPI::CreateTrdApi();
m_pTrdApi->InitConnect("127.0.0.1", 11111, false);
MMAPI::ReleaseTrdApi(m_pTrdApi);
2
3
# 接続の破棄
void ReleaseTrdApi(MMAPI_Trd* pTrd);
概要
接続の破棄
戻り値
- pTrd:接続実例
Example
MMAPI_Trd *m_pTrdApi = MMAPI::CreateTrdApi();
m_pTrdApi->InitConnect("127.0.0.1", 11111, false);
MMAPI::ReleaseTrdApi(m_pTrdApi);
2
3
# 接続の作成
start(ip, port, ssl, key)
概要
取引オブジェクトを作成し、取引接続を初期化します
パラメータ
パラメータ 型 説明 ip str OpenD がリスニングしている WebSocket アドレス port int OpenD がリスニングしている WebSocket ポート ssl bool SSL 暗号化を有効にするかどうか。WebSocket 関連を参照 key str 接続キー(未指定の場合は接続タイムアウトが発生します)。OpenD の起動パラメータで設定できます。GUI 版 OpenD では WebSocket キーが未設定の場合、ランダムに割り当てられます Example
import mmWebSocket from "@/components/mm-websocket/main.js";
class Example {
example() {
this.websocket = new mmWebSocket();
this.websocket.start("127.0.0.1", 33333, false, null);
}
}
2
3
4
5
6
7
# 接続のクローズ
close()
概要
接続のクローズ
Example
import mmWebSocket from "@/components/mm-websocket/main.js";
class Example {
example() {
this.websocket = new mmWebSocket();
this.websocket.start("127.0.0.1", 33333, false, null);
this.websocket.close();
}
}
2
3
4
5
6
7
8
← 取引API一覧 取引口座リストの取得 →