独自の取引ボットを作る方法

作者: リン・ハーン優しさ, 作成日:2019-03-16 10:29:22, 更新日:2019-03-16 10:29:54

前言

私は確かに偉大なプログラマーではありませんが,このプロジェクトを書いて,私は多くのことを学びました (そして私を保持しました).私のコードのほとんどは,FMZ.COMPython のコードをリファクタリングする場合は,よりオブジェクト指向モデルを使用します. それでも,私は結果に愉快に驚きました.

何をするの? これはアービトラージボットです.つまり,それは2つの (またはそれ以上の) 取引所の価格の違いを取引することでお金を稼ぐということです.現在では,単方向で,EtherdeltaとBittrexの間だけ取引しています.彼らは約20のeth/トークンペアを共有しています.これがどのように動作するかを示す図です:img括弧が続く単語は,スマートコントラクトの関数呼び出しを呼んでいるイーサリアム取引です.

コード

私は使えなかったfmz.com取引と関数呼び出しを作成するためにプラットフォームのpythonエディタが必要で,それはかなり簡単だったでしょう.私はより信頼性の高いものが必要でした.失敗したトランザクションはお金を失うことを意味します.私のGETリクエストのすべては,TCPパケットが失われたり,Webサーバーが一時的にダウンしたとしても,返信が必要でした.したがって,私は自分のpython etherscan APIラッパーを実装し,トランザクションを作成し,それを公開するためにpythereumを使用することにしました.私はまた,自分の request.get decoratorを書きました.これは返信が満足度に達したときにのみ終了する一時ループです.

これはEtherdelta json APIの応答を hexadecimal,rlpで暗号化された Ethereumトランザクションとしてコードするために使用したコードです (弱心者のためではありません):img

底辺の閉ざしの原生十六進数値は,各関数に対応する関数署名である.関数署名は関数とその引数のkeccakから派生する.トランザクションのデータパラメータに添付され,その後に引数を構成するデータが付属しなければならない.合計で私のコードは約400行長で,5つの異なるファイルに含まれています.

結果

グラフを作りました. グラフは,img img img

結論

プロジェクト全体で,私は学校で私の空き時間に約2週間かかり,それはすべてのラウンドで爆発でした.私は,激しくコーディングから休憩を取って現在,計画中です 代引ボット v2. 次のバージョンは86の異なる取引所と取引ペアをたくさん含むつもりです.

月まで!


もっと