Origami Techで2層構成の先物向け暗号資産取引ボットを構築する方法

はじめに
このガイドでは、ポジションを認識する先物ボットをOrigami Techでゼロから構築します。この戦略は、1分足のRSIデータを使ってロングまたはショートのポジションを建て、価格が一定幅動いた後に既存ポジションへ買い増し(売り増し)を行い、指定した利益目標でポジション全体を決済します。
ロジックは2つのグリッドレイヤーに分かれています。
- エントリーとナンピンを担当するレイヤー
- 決済を担当するReduce Onlyレイヤー
このように分けることで、取引ボット戦略の各部分を設定・テスト・管理しやすくなります。
このガイドで学べること:
- ワークスペースを作成し、取引所アカウントを接続する
- One Wayポジションモードで先物向け暗号資産取引ボットを作成する
- 買いと売りの出力を設定する
- 1分足のRSIシグナルを使う
- ボットが現在のポジションに応じて動作するようにする
- 損益分岐価格を基準にしたナンピンロジックを追加する
- 決済用に別のReduce Onlyレイヤーを作成する
- シミュレーションを確認してボットを稼働させる
始める前に、暗号資産取引ボットが自動化するのは執行であって、結果ではないことを覚えておいてください。RSIのしきい値、ナンピンのルール、利益目標は、利益を保証するものではありません。ロジックを慎重にテストし、失っても問題のない金額で運用してください。
Origami Techにおけるグリッドレイヤーの仕組み
Origami Techにおけるグリッドとは、戦略ロジックのレイヤーのことです。価格帯に多数の固定注文を配置する一般的なグリッド取引戦略を意味するとは限りません。
各レイヤーは、それぞれ別のタスクを担うことができます。たとえば、あるレイヤーは市場価格の近くに注文を提示し、別のレイヤーはより広い価格帯に注文を配置し、3つ目のレイヤーは利確やリスク管理を担当する、といった使い方です。各レイヤーは個別に有効化・無効化することもできます。
このガイドのボットでは、エントリーと決済で求められる要件が異なるため、2つのレイヤーを使用します。1つ目のレイヤーはエクスポージャーを増やすことができ、2つ目のレイヤーはエクスポージャーを減らすことしかできません。
この構成は、すべての条件・価格・数量・ポジションチェックを1つの大きな式に詰め込まずに済むため、先物グリッドボットを構築する際に便利です。
このガイドで使用する取引ボット戦略
この例は、One Wayポジションモードを使用し、Extended上のPUMP暗号資産取引ペアの先物市場向けに作成されました。
ボットは次のルールに従います。
- 1分足でRSIを評価します。
- RSIが30以下のときにロングエントリーを準備します。
- RSIが70以上のときにショートエントリーを準備します。
- 買い注文と売り注文をそれぞれ1件ずつ発注します。
- この例では、初回の各注文は約$20相当です。
- すでにポジションがある場合、価格が損益分岐価格から1%離れ、かつ該当するRSI条件を満たすと、ボットはそのポジションに追加することがあります。
- 2つ目のレイヤーが、設定可能な利益目標でポジション全体を決済します。
- 決済レイヤーはReduce Onlyを使用するため、決済注文によって反対方向のエクスポージャーが新たに発生することはありません。
これらの値はワークフローを示すためのものであり、すべての市場に推奨される設定ではありません。
ステップ1:ワークスペースを作成する
Origami Techに登録したら、ワークスペースを作成します。
ワークスペースは、特定の暗号資産取引の構成で使用するアカウント、ボット、レイアウト、権限をまとめるものです。チームメンバーには、Admin、Editor、Viewer、Analystのいずれかのロールを割り当てられます。Adminはボットの管理やアカウントの追加が可能です。
すでにワークスペースがある場合は、それを開いてアカウント設定に進んでください。

ステップ2:取引所アカウントを接続する
アカウントメニューを開き、Add Accountをクリックします。使用する取引所を選択し、接続手順を完了します。
具体的な手順は取引所によって異なります。
- 中央集権型取引所では、API認証情報が必要になり、Origami TechのIPアドレスをホワイトリストに追加する必要がある場合があります。
- 対応している分散型取引所では、通常ウォレット接続を使用します。
ボットを作成する前に、アカウントに十分な利用可能残高があること、そして選択した市場で先物の暗号資産取引が有効になっていることを確認してください。
ステップ3:先物向け暗号資産取引ボットを作成する
Botsページに移動し、Add Botをクリックします。
次の設定を選択します。
- 市場タイプ:先物(Futures)
- アカウント:接続済みのExtendedアカウント
- ポジションモード:One Way
- 暗号資産取引ペア:PUMP/USD
- 証拠金モード:クロスマージン(Cross)
- ボット名:戦略がわかる任意の名前
- レバレッジ:この例では10倍
次にContinueをクリックします。

ポジションモードは重要です。One Wayモードでは、銘柄ごとに1つのネットポジションを保持します。Hedge Modeでは、対応している取引所でロングとショートのポジションを同時に保持できます。このガイドのロジックはOne Wayモード向けに設計されているため、ポジションチェックを調整せずにHedge Modeへ流用しないでください。
この構成において、Extendedはマルチマージンやクロス担保に対応していません。各市場はその決済資産に対して取引されるため、ボットを開始する前に、アカウントに該当する決済資産を十分に保有しておく必要があります。
この例で使用している10倍のレバレッジは設定方法を示すためのものであり、推奨値として扱うべきではありません。
ステップ4:プリセットから始めるか、ゼロから構築する
Origami Techには、インポートして調整できる取引戦略のプリセットが用意されています。プリセットは、利用可能な入力・関数・出力を理解するのに役立ちますが、リターンを約束するものとして扱うべきではありません。
このガイドでは、戦略をゼロから作成します。ボットエディターを開き、必要に応じて既存のグリッドレイヤーを削除してから、新しいグリッドレイヤーを追加します。
独自の設定を構築する前に、Futures | One Way | RSI Pivot Grid MMプリセットを確認するのもおすすめです。このプリセットは1分足のRSIピボットを使用し、エクスポージャーの変化に応じてスプレッドと注文サイズを調整し、損益分岐価格の周辺に小さな利確幅で決済注文を配置します。

ステップ5:必須のグリッド出力を設定する
すべてのグリッドレイヤーには、次の4つの出力が必要です。
- Execute Price
- Order Amounts
- Buy Order Count
- Sell Order Count
まず、買いと売りの価格と数量について、それぞれ別の変数を作成します。次に、注文サイドに応じて出力を振り分けます。execute_price出力は、買い注文にはprice_buyを、売り注文にはprice_sellを使用します。対応する数量はexecute_volumeを通じて返されます。
この例では、買い注文数と売り注文数をどちらも1に設定します。

この段階では、式で未定義変数のエラーが表示されることがあります。ローソク足、RSI、価格、数量の変数を追加するまでは想定どおりの挙動です。
ステップ6:1分足のRSIシグナルを追加する
candles_futures('m1')を使って1分足の先物ローソク足を参照するcandles_変数を作成します。ローソク足の系列を一度定義しておくことで、残りの式を短く、確認しやすくできます。
次に、2つのRSIしきい値を定義します。
- ロングのしきい値:30
- ショートのしきい値:70
RSIの計算を使って、各しきい値に対応する価格を求めます。買いサイドはロングのしきい値に、売りサイドはショートのしきい値に反応するようにします。

サイド間で式を複製する際は注意してください。売りの式がロングのしきい値を参照していると、Grid Simulationで買いと売りの価格が同じになることがあります。買いの式ではロングのしきい値を、売りの式ではショートのしきい値を使用する必要があります。
だからこそ、意味のある変更を加えるたびにシミュレーションを確認すべきなのです。
ステップ7:注文額を設定し、数量を計算する
この例ではquote_usdを20と定義しているため、各注文は約$20相当になります。
Origami Techは、数量を固定のドル額ではなく、トークン数または契約数として送信します。amount_buyをquote_usd / execute_priceとして計算し、amount_sellにも同じ計算を適用します。算出される数量は執行価格によって決まります。買いと売りの価格が異なる場合、どちらの注文もほぼ同じ金額であっても、数量はそれぞれ異なります。
数量の変数を定義したら、Grid Simulationを更新します。計算された価格と数量を持つ買い注文1件と売り注文1件が表示されるはずです。

これでレイヤーは注文を生成できるようになりましたが、まだポジションを認識していません。追加の条件がなければ、現在のエクスポージャーに関係なく同じエントリー注文を出し続ける可能性があります。
ステップ8:現在のポジションを読み取る
現在のポジション変数を position('one_way', 'cross')として作成します。戦略はその後、利用可能なポジション数量を使って、ポジションなし、ロングポジション、ショートポジションのどれが現在保有されているかを判断します。
戦略は、利用可能なポジション数量を使って次の3つの状態を区別します。
- ゼロ:ポジションなし
- ゼロより大きい:ロングポジションを保有中
- ゼロより小さい:ショートポジションを保有中
価格の式では、position_available_quantity == 0かどうかを確認します。条件が真の場合、ボットは初回のRSIエントリーロジックを使用します。偽の場合は、ポジションの損益分岐価格を基準としたナンピンロジックに切り替わります。
このポジションチェックによって、1つ目のレイヤーは同じシグナルを繰り返し出すだけのものから、ポジションを認識するグリッド取引ボットへと変わります。
ステップ9:板データで初回エントリーを制限する
RSIから算出した価格は、相場が急変する局面では適切でなくなる場合があります。不利な水準で初回注文を出してしまわないよう、シグナル価格と現在の板(オーダーブック)データを組み合わせます。
ロングサイドでは、RSIに基づくエントリー価格を現在の最良買い気配と比較し、より適切な買い水準を使用します。ショートサイドでは、現在の最良売り気配を使って逆のロジックを適用します。
これで執行リスクがなくなるわけではありません。インジケーターの価格だけに頼るのではなく、エントリーロジックがリアルタイムの板を考慮するようになるというだけです。
ステップ10:損益分岐価格を基準にしたナンピンを追加する
すでにポジションを保有している場合、1つ目のレイヤーは元のエントリー価格を使うのをやめ、ポジションの損益分岐価格を基準に次の注文を計算する必要があります。
ナンピン幅を1%に設定します。
- ロングポジションの場合、次の買い水準は損益分岐価格の1%下です。
- ショートポジションの場合、次の売り水準は損益分岐価格の1%上です。
該当するRSI条件は引き続き満たす必要があります。つまり、ロングのナンピン注文にはロングのRSI条件が、ショートのナンピン注文にはショートのRSI条件が必要です。
計算された価格が現在の買い気配・売り気配と整合するよう、板による制限も再度適用されます。

エントリー・ナンピン用グリッドをコピーする
以下のブロックには、エントリーとナンピンのグリッド全体が含まれています。Post Onlyを有効にし、Reduce Onlyは無効のままにしてください。
execute_price = price_buy if side == 'buy' else price_sell
execute_volume = amount_buy if side == 'buy' else amount_sell
buy_orders_count = 1
sell_orders_count = 1
candles_ = candles_futures('m1')
price_buy = min(rsi_to_price(candles_, rsi_long_open), orderbook_futures().bid[0].price) if position_available_quantity == 0 else min(position_breakeven_price * (1 - gap), rsi_to_price(candles_, rsi_long_open), orderbook_futures().bid[0].price)
quote_usd = 20
amount_buy = quote_usd / execute_price
price_sell = max(rsi_to_price(candles_, rsi_short_open), orderbook_futures().ask[0].price) if position_available_quantity == 0 else max(position_breakeven_price * (1 + gap), rsi_to_price(candles_, rsi_short_open), orderbook_futures().ask[0].price)
amount_sell = quote_usd / execute_price
rsi_long_open = 30
rsi_short_open = 70
position_ = position('one_way', 'cross')
gap = 0.01
ナンピンはエクスポージャーを増やすため、相場がポジションに不利な方向へ動き続けた場合、損失が拡大する可能性があります。ナンピンの頻度だけでは、完全なグリッド取引戦略にはなりません。ポジション上限、利用可能残高、清算リスク、手数料、相場環境もあわせて考慮する必要があります。
ステップ11:Reduce Only決済レイヤーを追加する
これで1つ目のレイヤーが初回エントリーとナンピンを担当するようになりましたが、利益の出ているポジションを決済する機能はありません。決済用に2つ目のグリッドレイヤーを追加し、Reduce Onlyを有効にします。
決済レイヤーは、ポジションが存在する場合にのみ注文を出すようにします。
- ポジション数量がゼロより小さい場合、ボットはショートポジションを決済するために買い注文を出すことができます。
- ポジション数量がゼロより大きい場合、ボットはロングポジションを決済するために売り注文を出すことができます。
- ポジション数量がゼロの場合、このレイヤーは注文を出しません。
決済価格は、ポジションの損益分岐価格と、小数で表した設定可能な利益目標から計算します。take_profitを0.002に設定します。これは0.2%に相当します。
ロングポジションの場合は、売り価格を損益分岐価格 ×(1 + take_profit)として計算します。ショートポジションの場合は、買い価格を損益分岐価格 ×(1 - take_profit)として計算します。数量は、利用可能なポジション全体を決済するように設定します。
ここではReduce Onlyが不可欠です。これがないと、サイズが大きすぎる決済注文や繰り返された決済注文によって、ポジションがクローズされた後に反対方向の新しいポジションが建ってしまう可能性があります。

Reduce Only決済グリッドをコピーする
このレイヤーでは、Post OnlyとReduce Onlyの両方を有効にしてください。
execute_price = price_buy if side == 'buy' else price_sell
execute_volume = position_available_quantity
buy_orders_count = 1 if position_available_quantity < 0 else 0
sell_orders_count = 1 if position_available_quantity > 0 else 0
position_ = position('one_way', 'cross')
price_buy = position_breakeven_price * (1 - take_profit)
price_sell = position_breakeven_price * (1 + take_profit)
take_profit = 0.002
ステップ12:Grid Simulationを確認する
ボットを保存する前に、Grid Simulationを更新します。
次の点を確認してください。
- 1つ目のレイヤーが返す注文は、買い1件と売り1件以下であること。
- 買いサイドがロングのRSIしきい値を使用していること。
- 売りサイドがショートのRSIしきい値を使用していること。
- 注文額が想定どおりの契約数量に換算されていること。
- 初回エントリーがポジションのない場合にのみ表示されること。
- ナンピン価格が損益分岐価格から計算されていること。
- ロングとショートの各サイドが正しい買い気配・売り気配のデータを使用していること。
- 決済レイヤーがポジションの存在する場合にのみ動作すること。
- 決済数量がポジション数量全体と一致していること。
- 決済レイヤーでReduce Onlyが有効になっていること。
シミュレーションは、その時点でレイヤーが返す内容を表します。ボットを開始する前に、未定義の変数、重複した条件、誤ったサイド、想定外の価格を検出するのに役立ちますが、取引ボットの将来のリターンを予測するものではありません。
ステップ13:ボットを保存して稼働させる
両方のレイヤーが意図した出力を返すようになったら、設定を保存してRun Botをクリックします。
取引ターミナルを開き、ボットビューに切り替えます。有効な注文がチャートと注文テーブルに表示され、価格、数量、金額を確認できます。

戦略によって生成された注文を手動でキャンセルしても、条件が有効なままであれば、ボットが再び発注する場合があります。注文を再作成させたくない場合は、該当するレイヤーを停止または調整してください。
起動後も、ポジション、有効な注文、利用可能残高、手数料、ボットのステータスを引き続きモニタリングしてください。自動化によって手作業の繰り返しはなくなりますが、監視の必要性がなくなるわけではありません。
まとめ
この先物向け暗号資産取引ボットは、ポジションの一連のサイクルを2つのグリッドレイヤーに分けています。
1つ目のレイヤーは1分足のRSIデータを読み取り、ロングとショートのエントリーを準備し、すでにポジションがある場合はナンピンロジックに移行します。2つ目のレイヤーは、損益分岐価格と設定可能な利益目標を使って、Reduce Onlyモードでポジション全体を決済します。
エントリー、ナンピン、決済のルールが論理的に分かれているため、1つの大きな式よりもワークフローを確認しやすくなります。さらにGrid Simulationによって、ボットを本番稼働させる前に各レイヤーが返す注文を最終確認できます。
この例は完成した推奨設定ではなく、出発点となる構成として活用してください。市場、しきい値、注文額、ナンピン幅、利益目標、レバレッジ、リスク上限は、ご自身のテスト結果とアカウントの状況に合わせて調整してください。
Origami Techでスマートな取引を
強力な自動取引ターミナルで、仮想通貨取引を次のレベルへ。利益を最大化し、リスクを最小限に抑え、24時間365日市場の先を行きましょう。

.jpeg)


