# 相場オブジェクト
- Python
- Proto
- C#
- Java
- C++
- JavaScript
# 接続の作成
OpenQuoteContext(host='127.0.0.1', port=11111, is_encrypt=None)
概要
相場接続の作成と初期化
パラメータ
パラメータ 型 説明 host str OpenD がリスニングしている IP アドレス port int OpenD がリスニングしているポート is_encrypt bool 暗号化を有効にするかどうか - デフォルトは None で、enable_proto_encrypt の設定を使用します
- True:強制暗号化
False:強制非暗号化
Example
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111, is_encrypt=False)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 接続のクローズ
close()
概要
相場 API クラスオブジェクトをクローズします。デフォルトでは、moomoo API 内部で作成されたスレッドがプロセスの終了を妨げるため、すべての Context を close した後にのみプロセスが正常終了できます。ただし set_all_thread_daemon ですべての内部スレッドを daemon スレッドに設定すれば、Context の close を呼び出さなくてもプロセスを正常終了できます。
Example
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 起動
start()
概要
プッシュデータの非同期受信を開始
# 停止
stop()
概要
プッシュデータの非同期受信を停止
# InitConnect.proto
概要
接続プロトコルの初期化
パラメータ
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
- 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 : FTSPI_Qot, FTSPI_Conn {
FTAPI_Qot qot = new FTAPI_Qot();
public Program() {
qot.SetClientInfo("csharp", 1); //クライアント情報の設定
qot.SetConnCallback(this); //接続コールバックの設定
}
public void Start() {
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(FTAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
}
public void OnDisconnect(FTAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public static void Main(String[] args) {
FTAPI.Init();
Program qot = new Program();
qot.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
31
32
- Output
Qot onInitConnect: ret=0 desc= connID=6825318240991318111
# 接続の破棄
void Close()
概要
接続の破棄
Example
FTAPI_Qot qot = new FTAPI_Qot();
qot.InitConnect("127.0.0.1", (ushort)11111, false);
qot.Close();
2
3
# 接続の作成
boolean initConnect(String ip, short port, boolean isEnableEncrypt)
概要
接続の初期化。接続して初期化する
パラメータ
パラメータ 型 説明 ip str OpenD リスニングアドレス port int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 戻り値
- ret:実行が開始されたかどうか,不代表接続結果,結果から onInitConnect コールバック
Example
public class QotDemo implements FTSPI_Qot, FTSPI_Conn {
FTAPI_Conn_Qot qot = new FTAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1); //クライアント情報の設定
qot.setConnSpi(this); //接続コールバックの設定
}
public void start() throws IOException {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(FTAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
}
@Override
public void onDisconnect(FTAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
public static void main(String[] args) throws IOException {
FTAPI.init();
QotDemo qot = new QotDemo();
qot.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_Qot qot = new FTAPI_Conn_Qot();
qot.initConnect("127.0.0.1", (short)11111, false);
qot.close();
2
3
# 接続の作成
FTAPI_Qot* CreateQotApi();
bool InitConnect(const char* szIPAddr, Futu::u16_t nPort, bool bEnableEncrypt);
概要
接続の作成と初期化
パラメータ
パラメータ 型 説明 szIPAddr str OpenD リスニングアドレス nPort int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 Example
FTAPI_Qot *m_pQotApi = FTAPI::CreateQotApi();
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
FTAPI::ReleaseQotApi(m_pQotApi);
2
3
# 接続の破棄
void ReleaseTrdApi(FTAPI_Qot* pTrd);
概要
接続の破棄
戻り値
- pQot:接続インスタンス
Example
FTAPI_Qot *m_pQotApi = FTAPI::CreateQotApi();
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
FTAPI::ReleaseQotApi(m_pQotApi);
2
3
# 接続の作成
start(ip, port, ssl, key)
概要
接続の初期化。接続して初期化する
パラメータ
パラメータ 型 説明 ip str OpenD がリスニングしている WebSocket アドレス port int OpenD がリスニングしている WebSocket ポート ssl bool SSL 暗号化を有効にするかどうか。WebSocket 関連を参照 key str 接続のキー。指定しない場合は接続タイムアウトになります。キーはOpenDで設定可能で、GUI版では未指定時にランダムに割り当てられます 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
# 接続のクローズ
stop()
概要
接続のクローズ
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.stop();
}
}
2
3
4
5
6
7
8
- Python
- Proto
- C#
- Java
- C++
- JavaScript
# 接続の作成
OpenQuoteContext(host='127.0.0.1', port=11111, is_encrypt=None)
概要
相場接続の作成と初期化
パラメータ
パラメータ 型 説明 host str OpenD がリスニングしている IP アドレス port int OpenD がリスニングしているポート is_encrypt bool 暗号化を有効にするかどうか - デフォルトは None で、enable_proto_encrypt の設定を使用します
- True:強制暗号化
False:強制非暗号化
Example
from moomoo import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111, is_encrypt=False)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 接続のクローズ
close()
概要
相場 API クラスオブジェクトをクローズします。デフォルトでは、moomoo API 内部で作成されたスレッドがプロセスの終了を妨げるため、すべての Context を close した後にのみプロセスが正常終了できます。ただし set_all_thread_daemon ですべての内部スレッドを daemon スレッドに設定すれば、Context の close を呼び出さなくてもプロセスを正常終了できます。
Example
from moomoo import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
# 起動
start()
概要
プッシュデータの非同期受信を開始
# 停止
stop()
概要
プッシュデータの非同期受信を停止
# InitConnect.proto
概要
接続プロトコルの初期化
パラメータ
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
- 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_Qot, MMSPI_Conn {
MMAPI_Qot qot = new MMAPI_Qot();
public Program() {
qot.SetClientInfo("csharp", 1); //クライアント情報の設定
qot.SetConnCallback(this); //接続コールバックの設定
}
public void Start() {
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(MMAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
}
public void OnDisconnect(MMAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public static void Main(String[] args) {
MMAPI.Init();
Program qot = new Program();
qot.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
31
32
- Output
Qot onInitConnect: ret=0 desc= connID=6825318240991318111
# 接続の破棄
void Close()
概要
接続の破棄
Example
MMAPI_Qot qot = new MMAPI_Qot();
qot.InitConnect("127.0.0.1", (ushort)11111, false);
qot.Close();
2
3
# 接続の作成
boolean initConnect(String ip, short port, boolean isEnableEncrypt)
概要
接続の初期化。接続して初期化する
パラメータ
パラメータ 型 説明 ip str OpenD リスニングアドレス port int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 戻り値
- ret:実行が開始されたかどうか,不代表接続結果,結果から onInitConnect コールバック
Example
public class QotDemo implements MMSPI_Qot, MMSPI_Conn {
MMAPI_Conn_Qot qot = new FTAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1); //クライアント情報の設定
qot.setConnSpi(this); //接続コールバックの設定
}
public void start() throws IOException {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(MMAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
}
@Override
public void onDisconnect(MMAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
public static void main(String[] args) throws IOException {
MMAPI.init();
QotDemo qot = new QotDemo();
qot.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_Qot qot = new MMAPI_Conn_Qot();
qot.initConnect("127.0.0.1", (short)11111, false);
qot.close();
2
3
# 接続の作成
MMAPI_Qot* CreateQotApi();
bool InitConnect(const char* szIPAddr, moomoo::u16_t nPort, bool bEnableEncrypt);
概要
接続の作成と初期化
パラメータ
パラメータ 型 説明 szIPAddr str OpenD リスニングアドレス nPort int OpenD リスニングポート bEnableEncrypt bool を有効にするかどうか暗号化 Example
MMAPI_Qot *m_pQotApi = MMAPI::CreateQotApi();
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
MMAPI::ReleaseQotApi(m_pQotApi);
2
3
# 接続の破棄
void ReleaseTrdApi(MMAPI_Qot* pTrd);
概要
接続の破棄
戻り値
- pQot:接続インスタンス
Example
MMAPI_Qot *m_pQotApi = MMAPI::CreateQotApi();
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
MMAPI::ReleaseQotApi(m_pQotApi);
2
3
# 接続の作成
start(ip, port, ssl, key)
概要
接続の初期化。接続して初期化する
パラメータ
パラメータ 型 説明 ip str OpenD がリスニングしている WebSocket アドレス port int OpenD がリスニングしている WebSocket ポート ssl bool SSL 暗号化を有効にするかどうか。WebSocket 関連を参照 key str 接続のキー。指定しない場合は接続タイムアウトになります。キーはOpenDで設定可能で、GUI版では未指定時にランダムに割り当てられます 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
# 接続のクローズ
stop()
概要
接続のクローズ
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.stop();
}
}
2
3
4
5
6
7
8