🎉

Hyperliquidで動くスイングトレードボットを作る

2024/12/30に公開

はじめに

Hyperliquidは、Arbitrum上で動作する分散型デリバティブ取引所です。このガイドでは、Pythonを使用してHyperliquid上でスイングトレード戦略を実行する自動取引ボットを作成する方法を解説します。

前提条件

  • Python 3.8以上
  • web3.py
  • hyperliquid-python-sdk
  • 暗号資産取引の基礎知識
  • Arbitrumのウォレットと少量のETH

環境設定

まず必要なパッケージをインストールします:

pip install web3 hyperliquid-python-sdk python-dotenv

ボットの基本構造

以下のような構造でボットを作成していきます:

import os
from dotenv import load_dotenv
from hyperliquid import HyperliquidAPI
from datetime import datetime, timedelta
import time

# 環境変数の読み込み
load_dotenv()
PRIVATE_KEY = os.getenv('PRIVATE_KEY')

class SwingTradingBot:
    def __init__(self):
        self.api = HyperliquidAPI(
            private_key=PRIVATE_KEY,
            network="mainnet"
        )
        self.symbol = "BTC-PERP"
        self.position_size = 0.1  # BTCの取引量
        self.profit_target = 0.02  # 2%の利益目標
        self.stop_loss = 0.01     # 1%のストップロス

    def get_market_data(self):
        """
        市場データを取得する
        """
        try:
            ticker = self.api.get_ticker(self.symbol)
            return float(ticker['last'])
        except Exception as e:
            print(f"市場データの取得に失敗: {e}")
            return None

    def check_signals(self, price_history):
        """
        トレードシグナルを生成する
        """
        # 移動平均の計算
        short_ma = sum(price_history[-5:]) / 5    # 5期間の移動平均
        long_ma = sum(price_history[-20:]) / 20   # 20期間の移動平均

        # クロスオーバーの確認
        if short_ma > long_ma:
            return "BUY"
        elif short_ma < long_ma:
            return "SELL"
        return None

    def execute_trade(self, signal, current_price):
        """
        注文を実行する
        """
        try:
            if signal == "BUY":
                # ロング注文
                order = self.api.create_order(
                    symbol=self.symbol,
                    side="BUY",
                    quantity=self.position_size,
                    type="MARKET"
                )
                # 利確とストップロス注文も同時に出す
                take_profit = current_price * (1 + self.profit_target)
                stop_loss = current_price * (1 - self.stop_loss)
                
                self.api.create_order(
                    symbol=self.symbol,
                    side="SELL",
                    quantity=self.position_size,
                    type="TAKE_PROFIT",
                    price=take_profit
                )
                
                self.api.create_order(
                    symbol=self.symbol,
                    side="SELL",
                    quantity=self.position_size,
                    type="STOP",
                    price=stop_loss
                )
                
            elif signal == "SELL":
                # ショート注文も同様に実装
                pass
                
        except Exception as e:
            print(f"注文の実行に失敗: {e}")

    def run(self):
        """
        メインのボットロジック
        """
        price_history = []
        while True:
            try:
                current_price = self.get_market_data()
                if current_price:
                    price_history.append(current_price)
                    
                    # 十分なデータが集まったら分析を開始
                    if len(price_history) >= 20:
                        signal = self.check_signals(price_history)
                        if signal:
                            self.execute_trade(signal, current_price)
                
                # 価格履歴は最新の100個のみ保持
                if len(price_history) > 100:
                    price_history = price_history[-100:]
                
                time.sleep(60)  # 1分待機
                
            except Exception as e:
                print(f"エラーが発生: {e}")
                time.sleep(60)

if __name__ == "__main__":
    bot = SwingTradingBot()
    bot.run()

リスク管理

このボットには以下のリスク管理機能が組み込まれています:

  1. ポジションサイズの制限
  2. 利確注文の自動設定
  3. ストップロス注文の自動設定
  4. エラーハンドリング

カスタマイズのポイント

  1. トレードロジックの調整

    • 移動平均の期間
    • その他のテクニカル指標の追加
    • エントリー/イグジット条件の変更
  2. リスク管理パラメータの調整

    • ポジションサイズ
    • 利確幅
    • ストップロス幅
  3. 取引間隔の調整

    • 現在は1分間隔
    • 市場の状況に応じて調整可能

注意事項

  1. このボットは教育目的のサンプルコードです
  2. 実際の運用には十分なテストが必要です
  3. 暗号資産取引にはリスクが伴います
  4. APIキーは必ず安全に管理してください

まとめ

このガイドでは、Hyperliquid上でスイングトレード戦略を実行する基本的な自動取引ボットの作成方法を解説しました。実際の運用に当たっては、以下の点に注意してください:

  • 十分なバックテストを行う
  • 小額から開始する
  • リスク管理を徹底する
  • 市場の状況を常にモニタリングする

より高度な機能を実装する場合は、以下の機能を検討してください:

  • 複数の取引ペアの同時監視
  • より複雑なテクニカル指標の追加
  • Webhookによるアラート通知
  • ポジション管理の改善

このボットは基本的な機能のみを実装していますが、これをベースに各自の取引戦略に合わせてカスタマイズすることで、より実践的な取引ボットを作成することができます。

Discussion