aicoin-trading について
aicoin-tradingは、取引所操作向けのAiCoinスキルです。スクリプトで現物・デリバティブ注文、ポジション決済、損切り・利確の設定を行い、重要な操作ではプレビューの確認と承認を求めます。
主な機能
- 01スクリプトによる現物・デリバティブ注文
- 02注文と決済の実行前確認
- 03レバレッジ変更前の確認
- 04保有ポジションに基づく損切り・利確設定
- 058取引所に対応
活用シーン
- 01対応取引所で現物・デリバティブ注文を行う
- 02注文プレビューを確認してから実行する
- 03保有ポジションに損切り・利確を設定する
- 04デリバティブ市場情報を確認する
MCP 対応
コマンドラインスクリプトで取引所を操作するエージェントスキルです。MCPサーバーの提供や管理については入力に記載がありません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aicoincom/ coinos-skills --skill aicoin-tradingインストール後、Claude Code で/aicoin-tradingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
package.jsonlib/cli.mjsdefaults.jsonenv-loader.mjsscripts/api-key-info.mjsauto-trade.mjsexchange.mjsregister.mjstrade.mjsverify-order-matrix.mjs詳細
スクリプトの実行:
node scripts/exchange.mjs <action>を SKILL.md のあるディレクトリから実行します。3つのエンジン(OpenClaw / Hermes / Claude Code)ではコンテナがスキルを自動で読み込むため、スキルのディレクトリにcdするだけで実行できます。
AiCoin Trading — 注文専用
⛔ 絶対ルール(1つでも違反すると重大なエラーです)
- コードを書いて注文してはいけません。
import ccxt、new ccxt.okx()、fetch("https://...")、または注文を行うカスタムコードを書くことは禁止です。すべての注文はnode scripts/exchange.mjs create_orderでのみ実行してください。 - 自動で確認してはいけません。
create_order/close_positionの初回呼び出しでは、プレビュー(リスクに関する注意事項を含む)が返されます。プレビュー全体をユーザーに提示し、ユーザーが「確認」または「yes」と返信するまで待ってから、2回目の呼び出しで"confirmed":"true"を追加して実行してください。 - ユーザーのパラメーターを変更してはいけません。 残高が不足している場合はユーザーに伝えてください。数量やレバレッジを自動で調整してはいけません。
- 自分からポジションを決済してはいけません。 ユーザーが明確に要求した場合を除きます。
- 決済には
close_positionを使用してください。 決済注文をcreate_orderで構築することは禁止です(反対方向のポジションを建てるおそれがあります)。 - レバレッジ/証拠金モードの変更は、必ず事前に確認してください。
set_trading_paramsとset_leverageは読み取り専用の操作ではありません。取引所口座の契約設定を変更し、その後のすべての注文の証拠金使用量、清算価格、ロスカットまでの距離に直接影響します。100x と 5x では清算までの距離に20倍の差があります。ユーザーから明確に変更の指示があるまで、黙って設定を変更してはいけません。呼び出し前に必ず、どの取引所のどの取引ペアで、レバレッジ/margin_mode を何から何に変更するのか、その影響は何かを自然な言葉でユーザーに伝え、「確認」または「yes」と返信するまで待ってください。
悪い例 ❌:ユーザーが「BTCを100xでロング」と言ったとき、レバレッジに誤りがないか聞き返さず、
set_trading_params leverage=100を実行してから注文する。ユーザーは言い間違いで10xと言いたかった可能性があり、100xを黙って設定するのは非常に危険です。 正しい例 ✅:まず「100xのレバレッジでは清算までの距離が約0.95%しかありません(手数料を除く)。BTCなら5分足1本でロスカットされる可能性があります。100xで間違いありませんか、それとも10xのつもりでしたか?」と伝え、ユーザーが明確に回答してから設定します。
注文の手順(2段階、省略不可)
步骤1: node scripts/exchange.mjs create_order '{"exchange":"okx","symbol":"BTC/USDT:USDT","type":"market","side":"buy","amount":1,"market_type":"swap"}'
→ 返回预览(交易对、方向、数量、价格、杠杆、保证金、风险提示)
→ 你必须把所有字段展示给用户
步骤2: 用户确认后
node scripts/exchange.mjs create_order '{"exchange":"okx","symbol":"BTC/USDT:USDT","type":"market","side":"buy","amount":1,"market_type":"swap","confirmed":"true"}'
→ 实际下单
決済の手順(2段階、省略不可)
決済には必ず close_position を使用してください。決済注文を create_order で手動構築することは禁止です(反対方向のポジションを建てるおそれがあります)。
步骤1: node scripts/exchange.mjs close_position '{"exchange":"okx","market_type":"swap"}'
→ 返回所有持仓预览(交易对、方向、张数、盈亏)
→ 展示给用户
步骤2: 用户确认后
node scripts/exchange.mjs close_position '{"exchange":"okx","market_type":"swap","confirmed":"true"}'
→ 市价平掉所有持仓(自动 reduceOnly)
步骤3: 执行后必须验证 + 总结(不可省略)
node scripts/exchange.mjs positions '{"exchange":"okx","market_type":"swap"}'
→ 确认仓位已清空,然后用一句话告诉用户结果(平了什么、盈亏多少)
指定した取引ペアの一部のみを決済する場合:"symbol":"BTC/USDT:USDT" を追加します。
手順3がある理由: close_position の結果がストリーミング中に途切れ、ユーザーに見えないことがあります。positions をもう一度確認することで、決済が成功したことを確認でき、最終メッセージに結果を記載してユーザーに伝えられます。
損切り/利確/条件注文の手順(2段階、省略不可)
既存のポジションに損切り/利確を設定する場合は、必ず set_stop を使用してください。STOP_MARKET と独自の params を指定して create_order を手動で組み立てることは禁止です。set_stop は取引所の実際の保有ポジションから方向、reduceOnly / posSide / positionSide を自動的に導き出します(Binance の両建てモード、OKX、Bybit それぞれに対応)。また、トリガー価格が現在価格に対して正しい側にあるかを検証します。手動で組み立てると、反対方向のポジションを建てたり、方向を間違えたりしやすくなります。
步骤1: node scripts/exchange.mjs set_stop '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap","stop_loss":63.5,"take_profit":66.5}'
→ 返回预览(持仓方向、触发价、触发后动作、平仓模式、方向校验结果)
→ 你必须把预览展示给用户
步骤2: 用户确认后
node scripts/exchange.mjs set_stop '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap","stop_loss":63.5,"take_profit":66.5,"confirmed":"true"}'
→ 实际挂条件单
步骤3: 执行后复核(不可省略)
node scripts/exchange.mjs stop_orders '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap"}'
→ 确认条件单已挂上,再把结论告诉用户
- パラメーター:
stop_loss(損切りトリガー価格)/take_profit(利確トリガー価格)の少なくとも一方を指定します。両方指定することもできます。trigger_priceだけを指定した場合は、方向に応じて損切りまたは利確に自動分類されます。amountは任意で、デフォルトは全ポジションです。保有数量を超える場合は自動的に調整されます。side(long/short):同じ取引ペアでロングとショートの両方を同時に保有している(両建てモード)場合は必ず指定してください。指定しないとset_stopはエラーを返してどちらに設定するか尋ねます。推測で決めることはありません。 - ロング:損切り価格 < 現在価格、利確価格 > 現在価格です。ショートは逆です。逆に設定すると、瞬時にトリガーされるのを防ぐため
set_stopが拒否してエラーになります。現在価格を取得できない場合はデフォルトで中止します(方向を検証できないため)。検証を省略する必要がある場合は、自己責任で"force":trueを渡してください。 - 両建てモード(hedge mode)に完全自動対応:新規ポジションを建てる際は方向パラメーター(Binance の
positionSide、OKX のposSide、Bybit のpositionIdx)を自動で補完し、損切り/利確/決済では実際の保有ポジションから方向を導き出します。Binance/OKX/Bybit/Bitget/HTX の両建て口座では手動指定は不要です。このうち Bitget/HTX の決済では ccxt がtradeSide:Close/offset:closeに変換します(両社の両建てモードではreduceOnlyだけだと反対方向の新規ポジションとして扱われますが、個別に対応済みです)。Bitget のポジションモードを識別できない場合は、反対方向の新規ポジションを建てる危険を冒さず、中止してエラーを返します。set_stopで設定する損切り/利確は取引所の条件注文/アルゴ注文です(stop_ordersで確認できます)。決済後はcancel_orderで残った条件注文もまとめて取り消せます。 - 確認後の実行前に、
set_stopはポジションを再度読み込み、数量を現在のポジションに合わせます。確認中にポジションが決済されている、または反対売買されている場合は、不要な注文を設定せず「ポジションはすでに存在しません」と報告します。 - 手順3がある理由:一部の取引所(OKX など)では条件注文はアルゴ注文/委託注文に分類され、通常の
open_orders一覧には表示されず、stop_ordersまたは取引所アプリの「条件注文」欄でしか確認できません。open_ordersを見て「設定されていない」と誤って判断しないでください。 - 代替手段:ccxt の取引所をまたいだ条件注文には違いがあります(Binance ではマーク価格/最新価格がトリガーに使われ、OKX では algo 注文など)。
set_stopのいずれかの注文が失敗した場合は、失敗理由をそのままユーザーに伝え、取引所アプリで手動設定するよう提案してください。設定済みだと偽ってはいけません。 - 条件注文の対応状況(ccxt 4.5.47 で実測):損切り/利確/トリガー注文は、Binance / OKX / Bybit / Bitget / Gate / HTX の6つのCEXすべてに対応しています(各取引所のネイティブ条件注文に変換されます)。注文前には安全策があり、トリガー価格が取引所によって黙って無視される場合(即時約定する成行注文になってしまう場合)、
placeOrderは誤発注を防ぐため注文を拒否します。ccxt をアップグレードするたびにnpm run verify-orders(リクエストボディのゴールデンマトリックス)を実行し、挙動にずれがないことを確認してください。Hyperliquid は trigger を使用する例外的なケースです(USDC、複数ルートが aicoin-onchain に接続)。実際の取引結果を基準にしてください。
注文前の準備
| 手順 | コマンド | 確認が必要か |
|---|---|---|
| レバレッジと証拠金モードを設定 | node scripts/exchange.mjs set_trading_params '{"exchange":"okx","symbol":"BTC/USDT:USDT","leverage":10,"margin_mode":"isolated","market_type":"swap"}' | 必要(絶対ルール #6 を参照) |
| レバレッジのみを設定 | node scripts/exchange.mjs set_leverage '{"exchange":"okx","symbol":"BTC/USDT:USDT","leverage":10,"market_type":"swap"}' | 必要(絶対ルール #6 を参照) |
| 契約情報を確認 | node scripts/exchange.mjs markets '{"exchange":"okx","market_type":"swap","base":"BTC"}' | 不要(読み取り専用) |
レバレッジ/証拠金の確認テンプレート(数字を置き換えてそのまま使用してください):
「OKX BTC/USDT の無期限先物のレバレッジを {N}x、margin_mode を {isolated/cross} に変更します。これにより、この取引ペアの以降すべての注文の証拠金使用量と清算までの距離に影響します({N}x のレバレッジでは、手数料を除く清算までの距離は約 {1/N*100}% です)。変更してよろしいですか?」
ユーザーの確認後に set_trading_params / set_leverage を実際に呼び出してください。ユーザーが「やめておく」「今はまだ」「もう少し考える」と言った場合は、スクリプトを呼び出してはいけません。
その他のコマンド
| 操作 | コマンド |
|---|---|
| ポジションを決済(全数量または指定数量) | node scripts/exchange.mjs close_position '{"exchange":"okx","market_type":"swap"}' — "symbol":"BTC/USDT:USDT" を追加すると、1つのポジションのみを決済します |
| 利確・損切り(保有中のポジションに保護注文を設定) | node scripts/exchange.mjs set_stop '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap","stop_loss":63.5,"take_profit":66.5}' — 2段階の確認が必要です。上記の「利確・損切りの手順」を参照してください |
| 条件付き注文/アルゴリズム注文を確認 | node scripts/exchange.mjs stop_orders '{"exchange":"binance","symbol":"HYPE/USDT:USDT","market_type":"swap"}' — 通常の open_orders で確認できない条件付き注文には、こちらを使います |
| 注文をキャンセル | node scripts/exchange.mjs cancel_order '{"exchange":"okx","symbol":"BTC/USDT","order_id":"xxx"}' — 条件付き注文もキャンセルできます |
| 取引所のキーを保存(ローカル、ユーザーがチャットでキーを送った場合) | node scripts/exchange.mjs save_key '{"exchange":"binance","api_key":"...","api_secret":"..."}' — ~/.coinos/.env に書き込み、chmod 600 を実行し、シークレットは表示しません(OKX/Bitget では "password":"..." も必要です)。コンテナ内では、チャットでキーを受け取らず、ユーザーに Web UI の EnvSection で設定するよう案内してください |
数量
コントラクトの自動換算: amount は常にユーザーが指定したコインの数量です(例:0.01 BTC、1000 DOGE)。スクリプトは amount / contractSize に基づいて数量をコントラクト数に自動換算します。整数もコインの数量として扱います(旧仕様の「整数=コントラクト数」では、OKX/Gate など contractSize≠1 の取引所でコントラクト数が数桁ずれることがあったため、この仕様は廃止されました)。コントラクト数を直接渡す場合は "amount_unit":"contracts" を追加してください。
USDT 金額で注文する場合: ユーザーが「10U でロング」または「10 USDT を使ってポジションを建てる」と言った場合は、cost=10 を渡してください(コントラクト取引では USDT の証拠金額として扱い、価格とレバレッジに基づいてコントラクト数を算出します。現物の成行買いでは、使用する USDT の金額として扱い、現在価格からコインの数量を逆算します)。amount は渡さないでください。
現物: amount =コインの数量です。または、cost を使って USDT の金額で購入できます。
形式: 現物は BTC/USDT、コントラクトは BTC/USDT:USDT、Hyperliquid では USDC を使うため BTC/USDC:USDC です。
取引所: Binance、OKX、Bybit、Bitget、Gate.io、HTX、Pionex、Hyperliquid。