botter開始の日記3(bitget編)
無事、私のショートはこんがり焼かれました。1000ドル近く持っていかれました。
BTCの連れ高かと思いますが痛い。。。
というわけでbotの続きをやっていくのですが、海外のヤフー掲示板みたいなところにbitgetの先物オーダーを質問している人がいて、ソースもあげてくれてたのでそちらを試してみました。
そしたらオーダー通りました👏👏
先物のほうに資金を用意しまして、USDT-Mというところですね。
こんな感じで先物のショートをするオーダーを通しました。note用に少し整理してます。
#ライブラリをインポート
import ccxt
from config import bitget # 設定ファイルからbitgetの情報をインポート
# Bitgetのインスタンスを作成
bitget = ccxt.bitget({
'apiKey': bitget['apiKey'],
'secret': bitget['secret'],
'password': bitget['password'], # Bitgetではパスフレーズも必要
'enableRateLimit': True # レート制限の有効化
})
#--- Parameter -------------------------------------------------------------
bitget.options["defaultType"] = "swap" #先物の時はこれが必要
# シンボルの設定 (例: BTC/USDT)
symbol = 'NEIRO/USDT'
symbol_nosl = symbol.replace("/", "")
# 指値注文を出したいUSDTの額と価格
usdt_amount = 50 # 50 USDT分をショートしたい
price = 0 # 指値価格
#--- Sell Order -------------------------------------------------------------
def execute_order(side): #先物注文を実行
try:
price = bitget.fetchTicker(symbol_nosl)['last']
amount = round(usdt_amount / price, 3) # 数量を計算
amount = amount *10 # レバレッジ補正
if side == 'buy':
hold_side = 'long'
elif side == 'sell':
hold_side = 'short'
parms = {
'holdSide': hold_side,
'marginMode': 'isolated',
'marginCoin': 'USDT',
'posSide': hold_side,
'tradeSide': 'open',
'productType': 'USDT-FUTURES'
}
response = bitget.create_order(symbol_nosl, 'limit', side, amount, price, parms)
except Exception as e:
error_message = f"An unexpected error occurred: {e}"
print(error_message)
return None
#--- メイン処理-------------------------------------------------------------
price = bitget.fetchTicker(symbol_nosl)['last'] # 現在値の取得
positions = bitget.fetch_position(symbol_nosl) # ポジションの確認
if positions['contracts'] is not None: #ポジションがある場合
print("{}ポジション:".format(symbol_nosl), positions['contracts'])
#---ショートポジションの指値注文を作成 (売り注文)---
else:
execute_order('sell')
print(response)
土台が自分用なので固定値と変数値はバラバラに見えると思います。
前提として、対象のトークンの設定がされていること(レバレッジ、分離/クロスなど)。このpyファイルと同じフォルダ内にbitgetの情報を入れたconfigファイルがあること。
これでショートのオーダーが通りました。何が必要で何を省略していいのかわかってないのでこれをフォーマットとして使っていこうと思います。