# OpenD 関連

# Q1:OpenD が「アンケート評価・契約確認」未完了のため自動終了する

A: OpenD を使用するには関連するアンケート評価と契約確認を完了する必要があります。先にこちらで完了させてください。

# Q2:OpenD が「プログラム同梱データが存在しない」で終了する

A: 通常、権限の問題により同梱データのコピーに失敗しています。プログラムディレクトリ内の Appdata.dat を解凍し、プログラムデータディレクトリにコピーしてみてください。

  • windows プログラムデータディレクトリ:%appdata%/com.moomoo.OpenD/F3CNN
  • 非 windows プログラムデータディレクトリ:~/.com.moomoo.OpenD/F3CNN

# Q3:OpenD のサービス起動に失敗する

A: 以下を確認してください。

  1. 設定したポートが他のプログラムに占有されていないか。
  2. 同じポートを設定した別の OpenD が既に実行されていないか。

# Q4:SMS認証コードの認証方法は?

A: OpenD の画面上、または Telnet でポートに接続し、コマンド input_phone_verify_code -code=123456 を入力します。

ご注意

  • 123456 は受信した SMS認証コードです
  • -code=123456 の前にスペースが必要です

# Q5:他のプログラミング言語はサポートされていますか?

A: OpenD は Socket ベースのプロトコルを公開しています。現在、Python、C++、Java、C#、JavaScript のインターフェースを提供・メンテナンスしています。ダウンロードはこちら

上記の言語でもニーズを満たせない場合は、Protobuf プロトコルを直接実装できます。

# Q6:同一デバイスで複数回デバイスロックの認証が求められる

A: デバイス識別子はランダム生成され、以下のファイルに保存されます。

windows: %appdata%/com.moomoo.OpenD/F3CNN/Device.dat ファイル内。 非windows: ~/.com.moomoo.OpenD/F3CNN/Device.dat

ご注意

  1. ファイルが削除または破損した場合、OpenD は新しいデバイス識別子を再生成し、デバイスロック認証が再度必要になります。
  2. イメージコピーでデプロイしたユーザーは注意が必要です。複数のマシンで Device.dat の内容が同一の場合、それらのマシンで複数回デバイスロック認証が発生します。Device.dat ファイルを削除することで解決できます。

# Q7:OpenD の Docker イメージは提供されていますか?

A: 現在提供していません。

# Q8:1つのアカウントで複数の OpenD にログインできますか?

A: 1つのアカウントで複数のマシン上の OpenD や他のクライアント端末にログインでき、最大10の OpenD 端末が同時ログイン可能です。ただし「相場キックアウト」の制限があり、最高権限相場を取得できるのは1つの OpenD のみです。例:同一アカウントで2つの端末にログインした場合、1つは香港株 LV2 行情、もう1つは香港株 BMP 行情となります。

# Q9:OpenD と他のクライアント(デスクトップ端末・モバイル端末)の相場権限をどう制御しますか?

A: 取引所の規定により、複数端末が同時オンラインの場合「相場キックアウト」の制限があり、最高権限相場を取得できるのは1つの端末のみです。コマンドライン OpenD の起動パラメータには auto_hold_quote_right パラメータが組み込まれており、相場権限を柔軟に設定できます。このオプションが有効な場合、OpenD は相場権限がキックアウトされた後に自動で取り戻します。10秒以内に再度キックアウトされた場合、他の端末が最高相場権限を取得します(OpenD は再取得しません)。

# Q10:OpenD の相場権限を優先的に確保するには?

A:

  1. OpenD 起動パラメータ auto_hold_quote_right を 1 に設定します。
  2. モバイル端末またはデスクトップ端末の moomoo で、10秒以内に2回連続で最高権限を奪取しないでください(ログインが1回目、「行情再起動」のクリックが2回目にカウントされます)。

quote-right-kick

# Q11:モバイル端末(またはデスクトップ端末)の相場権限を優先的に確保するには?

A: OpenD 起動パラメータ auto_hold_quote_right を 0 に設定し、モバイル端末またはデスクトップ端末の moomoo を OpenD の後にログインしてください。

# Q12:GUI版 OpenD でパスワード保存ログインを使用後、長時間稼働で接続切断が通知され、再ログインが必要になる?

A: GUI版 OpenD でパスワード保存ログインを選択した場合、ローカルに記録されたトークンが使用されます。トークンには有効期限があり、期限切れ後にネットワーク変動やバックエンド更新が発生すると、バックエンドとの接続が切断された後に自動再接続できない場合があります。そのため、GUI版 OpenD で長時間稼働させる場合は、パスワードを手動入力してログインし、OpenD に自動処理させることを推奨します。

# Q13:製品のバグを発見した場合、moomoo のエンジニアにログ調査を依頼するには?

A:

  1. カスタマーサポートに問題の詳細を伝えてください:エラー発生時刻、OpenD バージョン番号、API バージョン番号、スクリプト言語名、API名またはプロトコル番号、詳細な入力パラメータと戻り値を含むコードスニペットまたはスクリーンショット。

  2. カスタマーサポートが製品バグと確認後、さらなるログ調査が必要な場合はエンジニアから連絡します。

  3. 一部の問題には OpenD ログの提供が必要です。取引関連は info ログレベル、相場関連は debug ログレベルが必要です。ログレベル log_level は OpenD.xml設定でき、設定後は OpenD の再起動が必要です。問題が再現した後、該当ログを圧縮して moomoo エンジニアに送信してください。

ご注意

ログパス:
windows:%appdata%/com.moomoo.OpenD/Log

非 windows:~/.com.moomoo.OpenD/Log

# Q14:スクリプトが OpenD に接続できない

A: まず以下を確認してください。

  1. スクリプトの接続ポートと OpenD で設定したポートが一致しているか。
  2. OpenD の接続上限は 128 のため、不要な接続が未クローズでないか。
  3. 監視アドレスが正しいか確認してください。スクリプトと OpenD が同一マシンにない場合、OpenD の監視アドレスを 0.0.0.0 に設定する必要があります。

# Q15:接続後しばらくして切断される

A: プロトコルを自分で実装している場合、定期的なハートビート送信で接続を維持しているか確認してください。

# Q16:Linux で multiprocessing モジュールを使用して Python スクリプトをマルチプロセスで実行すると、OpenD に接続できない?

A: Linux/Mac 環境でデフォルト方式でプロセス作成後、親プロセス内の py-moomoo-api で作成されたスレッドが子プロセスで消失し、プログラム内部の状態が不正になります。
spawn 方式でプロセスを起動してください。

import multiprocessing as mp
mp.set_start_method('spawn')
p = mp.Process(target=func)
1
2
3

# Q17:1台のPCで2つの OpenD に同時ログインするには?

A: GUI版 OpenD は未サポートですが、コマンドライン OpenD はサポートしています。

  1. 公式サイトからダウンロードしたファイルを解凍し、コマンドライン OpenD フォルダ全体(例:OpenD_5.2.1408_Windows)をコピーしてコピーを作成します(ここでは Windows の例ですが、他の OS でも同様の操作が可能です)。

file-page

  1. 2つのコマンドライン OpenD フォルダでそれぞれ OpenD.xml ファイルを設定します。

1つ目の設定ファイルパラメータ:api_port = 11111、login_account = ログインアカウント1、login_pwd = ログインパスワード1

2つ目の設定ファイルパラメータ:api_port = 11112、login_account = ログインアカウント2、login_pwd = ログインパスワード2

order-page

  1. 設定完了後、2つの OpenD プログラムをそれぞれ起動します。

fod-page

  1. APIを呼び出す際、パラメータ port(OpenD 監視ポート)が OpenD.xml ファイルのパラメータ api_port と対応関係にあることにご注意ください
    例:
from moomoo import *

# アカウント1でログインした OpenD にリクエスト
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111, is_encrypt=False)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。

# アカウント2でログインした OpenD にリクエスト
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11112, is_encrypt=False)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
1
2
3
4
5
6
7
8
9

# Q18:相場権限が他のクライアントにキックアウトされた場合、スクリプトで権限取得の運用コマンドを実行するには?

A:

  1. OpenD の起動パラメータで、Telnet アドレスと Telnet ポートを設定します。 telnet_GUI telnet_CMD
  2. OpenD を起動します(Telnet も同時に起動されます)。
  3. 相場権限がキックアウトされたことを検出した後、以下のコードサンプルを参考に、Telnet 経由で OpenD に request_highest_quote_right コマンドを送信できます。
from telnetlib import Telnet
with Telnet('127.0.0.1', 22222) as tn:  # Telnet アドレス:127.0.0.1、Telnet ポート:22222
    tn.write(b'request_highest_quote_right\r\n')
    reply = b''
    while True:
        msg = tn.read_until(b'\r\n', timeout=0.5)
        reply += msg
        if msg == b'':
            break
    print(reply.decode('gb2312'))
1
2
3
4
5
6
7
8
9
10

# Q19:OpenD の自動アップグレードに失敗する

A: update コマンドで OpenD の自動更新に失敗した場合、考えられる原因:

  • ファイルが他のプロセスに占有されている:他の OpenD プロセスを終了するか、システムを再起動してから再度 update を実行してください 上記でも解決しない場合は、公式サイトから手動でダウンロード・更新してください。

# Q20:Ubuntu 22 でGUI版 OpenD を起動できない?

A: 一部の Linux ディストリビューション(例:Ubuntu 22.04)でGUI版 OpenD を実行すると、dlopen(): error loading libfuse.so.2 と表示される場合があります。 これは、これらのシステムに libfuse がデフォルトでインストールされていないためです。通常は手動インストールで解決できます。例えば Ubuntu 22.04 の場合、コマンドラインで以下を実行してください。

sudo apt update
sudo apt install -y libfuse2
1
2

インストール成功後、GUI版 OpenD を正常に実行できます。詳細は https://docs.appimage.org/user-guide/troubleshooting/fuse.html をご参照ください。

# Q21:Linux でコマンドライン OpenD をバックグラウンドで実行するには?

A:OpenD があるディレクトリに移動し、OpenD.xml を設定した後、以下のコマンドを実行してください

nohup ./moomoo OpenD &
1