TP/SL -2021 対応:低価格アルトコイン支援の技術的課題
2026年1月
問題の発見
2026年1月、GALA、JASMY など低価格アルトで TP(利確)注文が失敗する事象が判明しました。エラーは -2021: Order would immediately trigger でした。
これは単純なバグではなく、価格精度処理とTP方向検証の構造的問題でした。高価格コイン(BTC、ETH等)では問題なく、低価格アルトで継続的に発生しました。
発生内容:
- GALA(価格:約 $0.02)で TP 失敗
- JASMY(価格:約 $0.01)で TP 失敗
- 他の低価格アルトでも同様
- 高価格コインでは問題なし
根本原因の分析
原因1:キー名不一致による価格精度の固定化
第一の原因は `trader.py` のキー名不一致でした。
問題のコード:
# trader.py
price_prec = exchange_info.get('pricePrecision', 2) # キー名 'pricePrecision'
# 実際のレスポンスは 'price_precision' の場合もある
# 結果: price_prec が常に 2 に固定
# 低価格コインは精度 3〜4 桁なのに 2 桁固定で誤計算Binance API の取引所情報で価格精度が pricePrecision または price_precision のどちらでも返る可能性があり、コードは一方しか見ていませんでした。その結果 精度が常に 2 に固定され、低価格コインで正しい価格計算ができませんでした。
原因2:TP方向検証の欠落
第二の原因は `binance_client.py` で TP 方向の検証がなかったことです。
問題の状況:
- LONG:TP は現在価格より高い必要がある
- SHORT:TP は現在価格より低い必要がある
- 問題:SHORT で TP > 現在価格のケースを検出できていなかった
価格精度の誤りで算出された誤った TP が、ポジション方向と矛盾しても検証を通過し、Binance が -2021 を返していました。
対応内容
対応1:キー名の互換処理
両方のキー形式をサポートするよう修正しました。
修正コード:
# trader.py
# 両形式をサポート
price_prec = (
exchange_info.get('pricePrecision') or
exchange_info.get('price_precision') or
2 # デフォルト
)
# 正しい価格精度を取得可能にこれによりどちらのレスポンスでも正しい価格精度を得られます。
対応2:低価格コインの自動検出と精度の強制調整
低価格コインを自動検出し、適切な精度を強制適用します。
ロジック:
- 現在価格が 0.001〜0.02 の範囲なら低価格コインと判定
- 低価格の場合は価格精度を 3〜4 桁に強制
- TP/SL 計算に正しい精度を適用
これで低価格コインでも正確な TP/SL 計算が可能になりました。
対応3:TP方向検証の追加
ポジション方向に応じた TP 方向検証を追加しました。
検証ロジック:
# binance_client.py
def validate_tp_sl_direction(position_side, current_price, tp_price):
"""
TP 方向検証
- LONG: TP > 現在価格
- SHORT: TP < 現在価格
"""
if position_side == 'LONG':
if tp_price <= current_price:
raise ValueError(f"LONG: TP({tp_price}) は現在({current_price})より高く")
elif position_side == 'SHORT':
if tp_price >= current_price:
raise ValueError(f"SHORT: TP({tp_price}) は現在({current_price})より低く")
return True誤った方向の TP は事前にブロックし、Binance API エラーを防ぎます。
効果と検証
効果
対応後:
- GALA で TP 成功
- JASMY で TP 成功
- 低価格アルト全般で正確な TP/SL
- TP 方向検証で誤注文を事前ブロック
- 高価格コインは従来どおり正常
検証方法
- 複数の低価格コイン:GALA、JASMY 等でテスト
- 価格帯:0.001〜0.02 の各レンジ
- 方向:LONG / SHORT 双方
- 実環境:実取引所での検証
技術的教訓
1. API レスポンス形式の多様性
外部 API の形式は変わり得ます。同一情報でもキー名が異なる場合があり、可能な限り互換を取る必要があります。
2. エッジケーステストの重要性
エッジケース(低価格コイン等)を十分にテストする必要があります。高価格では問題なくても低価格で顕在化しました。
3. 多層検証
単一の検証だけでは不十分です。価格精度に加え、TP 方向、ポジション状態など多段で安全性を確保します。
4. 資産中立設計
あらゆる資産クラスで同じ安全装置が機能すべきです。低価格アルトも高価格コインも、TP/SL は正確に動作する必要があり、資産中立の金融 AI 運用エンジンの原則です。
今後の改善
1. 自動精度検出の強化
- 動的精度:取引所 API の精度情報を動的に利用
- 価格帯別調整:レンジに応じた自動選択
- 取引所別ルール:各所の規則を反映
2. 検証ロジックの統合
- 統合モジュール:検証を一箇所に集約
- 検証チェーン:順次実行
- 失敗時の自動修復:妥当な値への補正
3. 資産タイプ別の特性
- コイン特性のデータベース化
- 取引履歴からの学習
- 事前アラート
政府R&D・投資家の視点
こうした技術対応は政府R&Dと投資の両面で価値があります。
- 運用安定性:多様な条件下でも安定動作
- 拡張性:低価格コイン以外の資産にも適用可能
- 検証可能性:対応過程が明確に記録される
- 再現性:構造的に再発を防ぐ
- 信頼性:エッジまで考慮した設計
単なるバグ修正ではなく、安定性と信頼性を高める構造的改善です。
結論
TP/SL -2021 対応は単なるバグ修正ではなく、金融 AI の安定性・信頼性を高める構造改善でした。
キー互換、低価格コイン自動検出、TP 方向検証により、あらゆる資産で同じ安全装置が正確に動くようになりました。資産中立の運用エンジンの原則を前進させる一歩です。
今後も多様な資産・状況で安定して動く金融 AI を目指して改善を続けます。