こんにちはICHIKENです。
2021年6月中旬から$3,000で開始したラズパイPythonでの暗号資産自動取引も早5ヶ月経ちました。150日間壊れずに24時間稼働し続けています。ラズパイやるね〜。
10月末までの取引実績と資産推移をまとめます。果たして結果は如何に!?
自動取引ソフトの設計図はこちら
Python暗号資産自動取引ソフトの設計図前提条件
まず前提条件となる私の環境です。
自動取引を実行しているラズパイの環境はこちら。
取引所 | Binance US |
---|---|
Raspberry Pi | 4 Model B 2GB |
OS | Raspbian GNU/Linux 10 (buster) |
VSCode | 1.55.2 |
Python | 3.7.3 |
python-binance | 1.0.10 |
グラフ作成環境はこちら
PC | MacBook Air (M1, 2020) |
---|---|
macOS | 12.0.1 |
VSCode | 1.55.2 |
Python | 3.8.2 |
pandas | 1.3.0.dev0+1761.ga811c9694a |
matplotlib | 3.4.2 |
openpyxl | 3.0.7 |
mplfinance | 0.12.7a17 |
Appleシリコンへ主要ツールを入れる方法はこちら。
M1Macにnumpy | matplotlib | pandasをインストール10月下旬までの収支報告
では本題の収支報告に行きましょう。
取引実績
自動取引の結果はこのようになりました。3ヶ月分のデータになります。
手数料引くと利益マイナスやないかーい。自動売買による合計取引回数は4246回。取引差分利益は-23$。9月の暴落に合わせて仕込み動作に入り、買いが先行した結果だと信じている。
各通貨ごとの利益と売買回数はこのようになりました。
ADAとBNBの現物キープ量を8月に増やしたため、ADAとBNBがマイナスとなってしまいました。逆にETCとBCHはポートフォリオから外して全売却したためこれらの差分はプラスになっていますね。SOLは新規に組み込んでゼロから購入 → 現物保有中にもかかわらず売買差分がプラスなのは驚きのパフォーマンスですね。
保有資産推移
資産推移はこのようになりました。
取引差分自体はマイナスでしたが保有価値が上がっているのでOK。初期$3,000から見ると+$1,300くらいになりました。大暴落の波も破綻せずに乗り越えてくれてます。やるじゃないか!ラズパイ!
自動取引ソフトの設計図はこちら
Python暗号資産自動取引ソフトの設計図ローソク足グラフの作り方はこちら
Pythonでローソク足チャート作成 | シミュレーション出力サンプルコード付きグラフのサンプルコード
BinanceUSから取得できる取引履歴から取引結果やグラフを出力するためのサンプルコードです。
解説はこちらのページを参考にしてください。
Pandasピボットテーブルを使ってBinance US取引履歴Excelデータから利益計算
import pandas as pd
import matplotlib.pyplot as plt
import mplfinance as mpf
# Excelの取り込みはopenpyxl
# BinanceのExcelデータ読み込み
dir = 'エクセルのファイルパス'
df = pd.read_excel(dir, index_col=[0])
print('--- 取引履歴Excelファイルの中身 ---')
print(df)
# 末尾のUSDとUSDTを消去
a = pd.Series(df['Market'])
a = a.str.replace('USDT', '')
df['Market'] = a.str.replace('USD', '')
print(df)
# 通貨ごとに売買の合計を算出
df_pivot_sum = pd.pivot_table(df, index='Market', columns='Type', values='Total', aggfunc='sum')
print('--- 通貨ごとの売買合計ピボット ---')
print(df_pivot_sum)
# SELLとBUYの差分計算
df_pivot_sum['DIFF'] = df_pivot_sum['SELL'] - df_pivot_sum['BUY']
print('--- 売りと買いの差分列を追加 ---')
print(df_pivot_sum)
# 損益計算
order_diff = df_pivot_sum['DIFF'].sum()
buy_total = df_pivot_sum['BUY'].sum()
sell_total = df_pivot_sum['SELL'].sum()
fee = (buy_total + sell_total) * 0.075 * 0.01 # 手数料0.075%をBNB支払い
profit = order_diff - fee
# 各通貨ペアごとの取引回数
df_pivot_count = pd.pivot_table(df, index='Market', columns='Type', values='Total', aggfunc='count', margins=True, margins_name='TTL')
df_pivot_count2 = pd.pivot_table(df, index='Market', columns='Type', values='Total', aggfunc='count', margins=False)
print('--- 各オーダー回数 ---')
print(df_pivot_count)
print('--- 評価 ---')
print(f'BUY TTL: $ {buy_total}')
print(f'SELL TTL: $ {sell_total}')
print(f'Diff: $ {order_diff}')
print(f'Fee: $ {fee}')
print(f'Profit: $ {profit}')
# グラフウィンドウ1
fig1 = plt.figure(figsize=(6,6))
# グラフ1
ax1 = fig1.add_subplot(2,1,1)
ax1.bar(df_pivot_sum.index, df_pivot_sum['DIFF'])
ax1.set_xlabel('Market')
ax1.set_ylabel('Profit ($)')
ax1.set_title('Profit of each cryptocurrency')
ax1.grid(axis='y')
# グラフ2
ax2 = fig1.add_subplot(2,1,2)
ax2.bar(df_pivot_count2.index, df_pivot_count2['BUY'], align='edge', width=-0.3, label='Buy')
ax2.bar(df_pivot_count2.index, df_pivot_count2['SELL'], align='edge', width=0.3, label='Sell')
ax2.set_xlabel('Market')
ax2.set_ylabel('Times')
ax2.set_title('Number of buys and sells of each cryptocurrency')
ax2.legend()
ax2.grid(axis='y')
plt.subplots_adjust(hspace=0.6)
plt.show()
最後に
いかがでしたか?
もし役に立ったよーって方でBinanceUSにこれから登録されるのでしたら、こちらのコードから登録していただけるとうれしいです。
BinanceUS登録: https://accounts.binance.us/en/register?ref=54270085
0 件のコメント:
コメントを投稿