DEX(分散型取引所)の中でも出来高上位につけているdydX、bot作成の過程で詰まった箇所があったのでメモがてら残しておきます。
dydXについて

普通の取引所ではなくDEX(分散型取引所)になるので、Metamaskなどのウォレットアプリが必要です。
管理者がいる取引所(CEX)では口座を作り、取引所のアドレスに仮想通貨を送って使いますが、DEXは本人確認などは不要です。持ってるウォレットと直接繋いで使います。
dxdyのAPI
最新版はバージョン4ですが、一つ前のバージョン3と、まるで使い方が異なります。RESTではなくWebsocketだけになったのが大きいです。
使い方は公式のウェブマニュアルに書いてあるんだけど、そのまま実施するとエラーになります。また、APIkeyの取得方法も詳しく書いてないから、ここもハマるポイント。
マニュアル通りに設定
マニュアルのサイドバーからGuideより、「Setting up Raspberry Pi for API Trading」というページがあります。ここに1からの設定方法がまとめられています。

エンドポイント設定
公式ではエンドポイントがtestnet

testnetなんだけど、繋がるのかいなと思ったら案の定、404(存在しない)が返ってきました。

公式の中を、検索しても引っかからないし、途方にくれてました。ふと、Xで検索したら、即解決!
mainnetのエンドポイントの設定、まとめてくれてました。
この設定後に再度実施したら、無事に動きました。

ショートカットは必須
説明が端折られていて、ここもハマるポイント。Githubから環境をcloneしたら、そのフォルダがある場所で以下を実施します。lnコマンドでv4dydxcli.pyに対してショートカットを作成します。

これで、実行ファイルのショートカットを作成します。手順書にも書いてあるんだけどね、サラっと書いてあって見逃してしまうポイントです。これを作らないと、エラーになります。
APIkeyの取得方法
実施環境と同フォルダ内にAPIkeyを書いたファイルを作成します。取得方法は明記されていなかったのでまとめ。
APIKeyの取得は、dydXにてウォレットと繋いだ状態で右上より、メニューを表示して「シークレットフレーズをエクスポート」を選択

普通の取引所と違って、dydXが要求するAPIkeyはdydXでの22単語のシークレットフレーズになります。

これをコピーして、以下の形式で、拡張子は.pyで保存します。そのままpythonの変数で読み込まれる形です。

実行コマンドの戻りで判断
コマンドラインで実施し、引数が命令になります。非常に使い勝手か独特。API 叩いて戻るかんじではなく、ファイル実行結果になります。
下記は、USDTのウォレットバランス表示のコマンド


os.systemは使わない
コマンドの戻りを確認する必要があるため、linuxコマンドで、一般的に使われるos.systemは使わないほうが良いです。実施はできるけど、戻りが成功か否かしか返ってこないからです。
subprocess.runしかない
使い勝手にくせがありますが、subprocess.runを使うしかないですね。
引数に、stdout=subprocess.PIPEを入れると、戻りのstdoutに文字列で戻るので解析可能に





ご質問はコメント欄からお願いします