moomoo-grid-strategy について
moomoo OpenAPIを使い、単一銘柄のグリッド取引プログラムを設計・実装するスキルです。パラメーター検査、価格と注文の計算、状態保存、注文照合ループを定め、初期設定はペーパートレードです。
主な機能
- 01割合または値幅で段階価格を計算
- 02手数料、資金、呼値、設定を検査
- 03グリッド設定と実行状態を保存
- 04注文とポジションを継続的に照合
- 05ペーパートレードを初期設定に採用
活用シーン
- 01グリッド設定が検査に通るか確認
- 02単一銘柄やETF向けのグリッドを構築
- 03再起動後も基準価格を維持
- 04約定や切断後に注文を照合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ moomooopen/ moomoo-agent-hub --skill moomoo-grid-strategyインストール後、Claude Code で/moomoo-grid-strategyを入力して読み込まれたか確認します。
詳細
moomoo グリッド戦略の実装
ユーザーはすでに、moomoo OpenAPI の llms.md を使って注文の発注、変更、キャンセル、気配値の照会ができます。このスキルでは、それらの操作を 1 つのグリッドプログラムにまとめる方法を追加します。パラメーターで実行可能か、各レベルの価格をどう計算するか、再起動後に基準価格と注文をどう一致させるか、プログラムをいつ停止するかを説明します。
エンドポイント、フィールド名、列挙値については、ユーザーの OpenAPI llms.md を開いて確認します(公開インデックス:https://open.moomoo.com/zh-cn/llms.txt)。該当するページを開いてから、リクエストを送信します。このファイルにはリクエスト本文を記載していません。呼び出し先は webapi.moomoo.com の製品ラインです。
1. 初期バージョンの対象範囲
- 銘柄は 1 つ。市場プレフィックス付きの株式または ETF:
HK.00700、US.AAPL、SH.600519、SZ.000001 - 基準価格グリッド、間隔はパーセンテージ(ユーザーが明示的に希望した場合に限り価格差を使用)
- 指値注文。当日限り有効です。グリッドは照合ループを通じて翌日以降も注文を再配置します
- 市場:香港、米国、上海、深圳
- 取引環境:ペーパートレード。ユーザーが現在の会話で明示的に希望した場合(例:「实盘を使用」)に限り、ライブ取引のページに切り替えます。ドキュメントで必須とされている 2 回目の確認と取引パスワードは引き続き必要です。パスワード、AppKey、秘密鍵、トークンをリポジトリに書き込んだり、ログに出力したりしないでください
対象外:レンジグリッド、下限を割った後の購入数量の追加、オプション、先物、暗号資産、複数銘柄、成行注文、手数料を無視した利益の提示。
2. 実装の順序
以下の順序で進めます。最初に失敗した手順で停止してください。
- パラメーターを収集します。株式基本情報エンドポイントの
lot_sizeから 1 ロットあたりの株数を取得します。見つからない場合はユーザーに尋ねてください。100 と推測してはいけません。 - セクション 5 の 6 つのチェックを実行します。FAIL が 1 つでもある場合は、修正内容と計算式を提示します。取引コードを書いたり、注文を発注したりしてはいけません。
- WARN のみの場合は、まずパラメーターカードと警告を提示します。ユーザーが承諾した後に限り、コードを書きます。
- プログラムを書きます。構成にはセクション 6、動作にはセクション 7 を使用します。ユーザーの既存プロジェクトと同じ言語を使います。プロジェクトがない場合は、1 回だけ尋ねてください。ユーザーから回答がない場合は Go を使用します。
- セクション 9 の受け入れチェックを実行します。テストに失敗した場合、プログラムの準備ができたとユーザーに伝えてはいけません。
- ユーザーから実行を依頼された場合は、ペーパーアカウントにのみ接続します。
3. パラメーター
| フィールド | 意味 | 省略時 |
|---|---|---|
| 銘柄 | 市場プレフィックス付き | 必ず尋ねます。ユーザーに代わって銘柄を選んではいけません |
| 初期基準価格 | グリッドの中心 P0 | 気配値スナップショットの最新価格を使用します。状態ファイルに書き込んだ後は、再起動時にその値を読み取ります |
| 変動タイプ | パーセンテージまたは価格差 | パーセンテージ |
| 押し目買い、上昇時の売り | ユーザーが指定した 1.5% は、計算式では 0.015 です | 日足バーが 120 本以上ある場合は、平均日次値幅 × 0.67 を使用します。それ以外の場合は尋ねます |
片側あたりのレベル数 N | 上下それぞれのレベル数。範囲は 3~50 | 5。ただし、チェックに合格する必要があります |
| 1 レベルあたりのロット数 | 正の整数 | 1 ロット。出力でその旨を伝えます |
| 予算 | 任意 | 指定がない場合は、必要資金のみを報告し、G3 を「予算未確認」とします |
| ドローダウン停止 | グリッドの建玉コストに対する比率。任意 | 1 回だけ尋ねます。ユーザーが断った場合は未設定のままにし、その旨を出力で伝えます |
パーセンテージの場合:P_down[i] = P0 / (1+a)^i、P_up[i] = P0 × (1+b)^i。価格差の場合:P_down[i] = P0 − i×d、P_up[i] = P0 + i×d。a、b、d は小数です。買い価格はティック単位で切り下げ、売り価格はティック単位で切り上げます。丸め後の間隔は、ユーザーが指定した間隔以上でなければなりません。
1 レベルあたりの株数 = 1 レベルあたりのロット数 × lot_size。1 レベルあたりの金額 A = 1 レベルあたりの株数 × P0。往復幅 w = min(a, b)。非対称グリッドでコストを過小評価しないよう、手数料は w を基準に計算します。
4. 最小価格刻み
基本情報にティック項目はありません。注文価格と G1 には以下の表を使用し、出力にはこれが現物株式で一般的なティックテーブルであると記載してください。実運用を開始する前に、取引所の最新のティックスケジュールを確認してください。
香港:気配値が該当する価格帯に基づきます。
| 価格の上限(未満) | ティック |
|---|---|
| 0.25 | 0.001 |
| 0.50 | 0.005 |
| 10 | 0.01 |
| 20 | 0.02 |
| 100 | 0.05 |
| 200 | 0.10 |
| 500 | 0.20 |
| 1000 | 0.50 |
| 2000 | 1 |
| 5000 | 2 |
| 9995 | 5 |
| 上記以外 | 5 |
米国:価格が 1 未満の場合は 0.0001、それ以外は 0.01 を使用します。上海と深圳:0.01。市場がこの表にない場合は、処理を中止して理由を説明してください。
5. 6 つのチェック
手数料率は概算値です。出力には「実運用を開始する前に、ブローカーの最新の手数料体系を確認してください」と記載してください。照合には使用しないでください。
| 市場 | 片道の手数料率 | 注文ごとの固定手数料 | 日中の往復取引 |
|---|---|---|---|
| 香港 | 0.14% | 15 HKD | 許可 |
| 米国 | 0.005% | 1 USD | 許可 |
| 上海 / 深圳 | 0.026%、売却時に印紙税 0.05% を加算 | 5 CNY | 不可。売却数量は売却可能数量に制限されます |
G1 ティック比率 = tick / (P0 × w)。≤ 10% は PASS、10%~20% は WARN、> 20% は FAIL です。FAIL の場合は、グリッド幅を tick / (P0 × 0.1) より大きくするか、銘柄を変更してください。
G2 粗利益に占める手数料の割合 = (2 × one-side rate × A + stamp-duty rate × A + 2 × fixed fee) / (A × w)。≤ 25% は PASS、25%~40% は WARN、> 40% は FAIL です。
G3 必要資金 = すべての買いレベルについて、price × shares per level の合計 × 1.15。予算が設定されており、必要額が予算以下なら PASS。それ以外は FAIL とし、不足額を記載してください。予算がない場合は必要額のみを報告し、結果を「未チェック」としてください。
G4 直近 120 取引日の終値の P10 と P90 を使用します。下限は最も低い買いレベル、上限は最も高い売りレベルです。両側が範囲内なら PASS、片側のみなら WARN、どちらも範囲内でなければ FAIL です。日足バーが 120 本未満の場合は「未チェック」としてください。また、N × w も報告してください。これが 10% 未満の場合は、半年以内に一方向へのブレイクアウトが起きる可能性が高いと記載してください。
G5 = w / average daily range。平均日中値幅は、直近 120 取引日における (high − low) / close の中央値です。0.5~0.7 は PASS、0.4~0.5 または 0.7~0.8 は WARN、< 0.4 または ≥ 0.8 は FAIL です。日足バーが 120 本ない場合は「未チェック」としてください。
G6:N < 3 または N > 50 の場合は FAIL、N > 10 の場合は WARN、それ以外は PASS です。
過去 K 線エンドポイントの日足バーを使用し、調整基準を一貫させてください。データが不十分な場合、G4 と G5 は省略してかまいません。結果には「未チェック」と記載してください。推定値を埋めて PASS としないでください。
数値の自己チェック(香港の手数料の概算値、lot_size = 100):HK.00700、基準価格 410.40、間隔 1%、5 レベル、1 ロット。ティック = 0.20。G1 = 4.9% PASS、G2 = 35.3% WARN、5 つの買いレベルの想定元本は約 199,000 HKD、必要資金は約 229,000 HKD です。取引ループを書く前に、プログラム内の純粋関数がこれらの数値と一致することを確認してください。
6. プログラムを4つの部分に分割する
- グリッド:価格レベル、6つのチェック項目、必要資金を扱います。ネットワークアクセスは行いません。
- 状態ファイル:ローカル JSON です。少なくとも、銘柄、値動きの種類、下方向の間隔、上方向の間隔、レベル数、ロット数、1ロットあたりの株数、基準価格、停止状態かどうか、停止理由、起動時に口座にすでにあった株数、その株数を記録済みかどうか、保存時刻の各フィールドを含める必要があります。
- ブローカーアダプター:アカウント、資金、ポジション、注文発注、注文取消、未約定注文、注文詳細、気配値スナップショット、気配値プッシュ、取引プッシュに関する
llms.mdのページだけをラップします。フィールドは各ページに従います。 - ループ:起動時に照合し、その後はプッシュとタイマーで起動して、再度照合します。
基準価格のルール:
- 指定したパラメーターセットで初めて起動したときは、基準価格を状態ファイルに書き込みます。
- 次回以降の起動時に、銘柄、値動きの種類、間隔、レベル数、ロット数が変更されていなければ、ファイル内の基準価格を使い続けます。
- パラメーターが変更されている場合は、注文の発注を停止します。以前の基準価格が新しいパラメーターと一致しないことをユーザーに伝え、ユーザーの判断を待ちます。最新価格から黙って再計算してはいけません。
- 状態が停止中で、ユーザーが明示的に続行を指示していない場合は、注文の照会だけを行います。新しい注文は発注しません。
注文マークには短い ASCII を使用します:g1b、g1s。数字はレベル、b は買い、s は売りを表します。注文を発注する前に、注文ページで remark の長さ制限を確認します。同じ銘柄の未約定注文のうち、マークがこの戦略に属するものだけを取り消します。口座内の他の注文には手を加えません。
起動時にポジションを読み込み、その時点ですでに保有していた株数を状態ファイルに記録します。それらの株式を売る注文は発注せず、ドローダウンの確認にもその取得コストを使用しません。グリッド上のポジション = 現在のポジション − 起動時の保有株数(0を下限とします)。
7. 照合ループ
気配値のプッシュ通知と取引のプッシュ通知は、ループを起動するだけです。切断、重複通知、部分約定の後は、次の注文照会とポジション照会に基づいて、どの注文を出すかを決めます。また、約20秒ごとに照合してください。レート制限エラーが発生した場合は、バックオフし、そのラウンドでは代替注文を出さないでください。
価格が最安買い水準を下回るか、最高売り水準を上回った場合は、停止理由を記録し、この戦略の未約定注文を取り消して、ポジションは維持し、状態を保存します。水準を下方にも上方にも追加しないでください。
ユーザーがドローダウン停止を設定した場合は、保有中の株式の買い水準価格からグリッドのポジションコストを推定してください。口座全体の平均取得コストは使用しないでください。(cost − latest price) / cost がしきい値に達したら、停止してポジションを維持します。
各水準で、照合1回につき注文を変更できるのは最大1回です。その売買方向で同一の未約定注文(売買方向、価格、数量、マークがすべて同一)がすでに1件ある場合は、そのまま維持します。同じ水準・売買方向の注文が2件ある場合は、余分な注文を取り消し、次のラウンドで置き換えるかどうかを判断します。
水準 i(i は 1 から N)について:
- 買値は下方の
i番目の水準、売値は上方のi番目の水準です。数量は各水準の株数です。 - この水準の純ポジション = この水準で約定した買い株数 − 約定した売り株数です。部分約定では約定数量を使用します。取り消された未約定分はポジションに含めません。
- 純ポジション > 0:この水準の買い注文を取り消し、売却可能数量の範囲で売り注文を出します。売り数量は1ロット未満を切り捨てます。各水準の株数または売却可能数量を超えてはいけません。売却可能数量が不足している場合は、次のラウンドまで待ちます。
- 純ポジションが0に戻り、この水準で売りが約定している場合:最新価格がその水準の売値を上抜けるまで、買い注文を再度出さないでください。
- 純ポジションが0で、新たに買い注文を出せる場合:買値は最新価格を下回っている必要があります。下回っていない場合は、待機中の買い注文を取り消し、新しい買い注文は出さないでください。
- 売る前に売却可能数量を確認してください。上海または深圳で当日買い付けた株式は、まだ売却可能として扱うことはできません。
プロセス終了時には、この戦略の未約定注文を取り消し、ポジションを維持して、状態ファイルを書き込みます。
8. ユーザーに提示する前に、これを表示する
コードを書くか注文を出す前に、以下の4つのブロックを表示してください。チェック項目にFAILが1つでもある場合、最初のブロックに「実装を開始」と書かないでください。
- パラメータカード:銘柄、基準価格、変動タイプ、両方の間隔、水準数、1ロット当たりの株数、1水準当たりのロット数、予算、ドローダウン停止、ペーパーまたはライブ。デフォルト値はすべて表示してください。
- チェック表:G1~G6の数値と、PASS/WARN/FAIL/未チェックを表示してください。
- 計算根拠:ユーザー自身の言葉に含まれていない数値ごとに、計算式を1行で示してください。
- リスク:このパラメータセットで最も損失につながりやすい状況(下限まで下落した場合、各買い水準と下限の価格差に各水準の株数を掛けた額)、未チェックの項目、次のステップがパラメータの変更、先にテストの実行、ペーパー口座への接続のどれかを示してください。
このスキルはプログラムを生成し、その動作を制約します。収益を予測するものではなく、ユーザーの取引判断に代わるものでもありません。
9. 受け入れ条件
ネットワークにアクセスしないテストとして、以下の確認項目を実装します。すべてに合格した場合にのみ、プログラムが完成したと伝えてください。
- セクション 5 の
HK.00700セルフチェックで、G1、G2、および必要資金が一致すること。 - 買値は切り下げ、売値は切り上げること。丸めた後の価格は、基準価格からの距離が丸める前より大きくなること。
- 同じパラメーターで状態ファイルを再度読み込んでも、基準価格が変わらないこと。
- パラメーターを変更しても、新しい基準価格が生成されないこと。
- 同じ水準、同じ売買区分で、同じマークが付いた未約定注文が 2 件ある場合、整合性チェック後に 1 件だけ残ること。
- ある水準の買い注文が全約定した後、次のラウンドでその水準の売値に売り注文が出ること。約定価格付近に注文を移動しないこと。
- 最新価格が最も低い買い水準を下回った後、状態が停止し、新しい買い注文が生成されないこと。
- 起動時点ですでに保有している株式に対して、売り注文が生成されないこと。
- 上海または深圳で売却可能数量が 0 の場合、売り注文が出ないこと。
ユーザーが明示的に実行を依頼した場合は、ペーパー口座の口座、資金、保有銘柄、注文の各ページを使用します。ユーザーが「使用実盤」などと伝えた後にのみ、実口座で注文を出します。
10. いかなる場合も拒否する
依頼が以下のいずれかに該当する場合は、理由を説明して中止してください。
- 水準数が 3 未満、または 50 を超える
- 確認項目がまだ FAIL なのに、ユーザーがそのまま注文するよう求める
- 下限を下回った後にロット数を増やす、または下方向に水準を追加する
- 上海または深圳で、同日買い・同日売りを行うグリッドを設計する
- 手数料計算を省略する、または最後に推定手数料を 1 回だけ総利益から差し引く
- ある期間のバックテストで停止により利益を逃したことを理由に、範囲外での停止をなくす
- この戦略のマークが付いていない注文をキャンセルまたは変更する
- 会話内で取引パスワードやキーを求める、復唱する、または書き込む