こんにちはICHIKENです。
ラズパイPythonで暗号資産の自動取引を開始して約3ヶ月。(自動取引Pythonスクリプトは未公開)
8月の取引実績と資産推移をまとめます。グラフ作成コードも載せていますので参考にどうぞ。
自動取引ソフトの設計図はこちら
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 | 11.5.2 |
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をインストール8月の収支報告
では本題の収支報告に行きましょう。
取引実績
自動取引の結果はこのようになりました。
自動売買による合計取引回数は1098回。利益は+332$。8月は上げ相場の波に自動取引もうまく乗っかり、利益を出すことができました。大きめの下げと上げを破綻せずに乗り越えたので一安心です。
各通貨ごとの利益と売買回数はこのようになりました。
ADAとBNBは途中で保有量を増やすように調整したため、買いが多くなり利益が出ませんでした。当然といえば当然ですが、特にBNBは調整タイミングが悪かったですね。
保有資産推移
資産推移はこのようになりました。
ざっくり1ヶ月で20%くらい増えました。自動売買自体で利益が出たのと、そもそも上げ相場で保有してる通貨の価値が上昇したままになっているためですね。ずっとこんな調子なら苦労しないんですけどね〜w
ローソク足グラフの作り方はこちら
Pythonでローソク足チャート作成 | シミュレーション出力サンプルコード付きグラフ出力のサンプルコード
BinanceUSから取得できる取引履歴から上の結果やグラフを出力するためのサンプルコードです。
解説はこちらのページを参考にしてください。
Pandasピボットテーブルを使ってBinance US取引履歴Excelデータから利益計算
import pandas as pd
import matplotlib.pyplot as plt
# Excelの取り込みはopenpyxl
# BinanceのExcelデータ読み込み
dir = './python_envs/trade/Data/Trade_History.xlsx'
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(1)
# グラフ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()
# グラフ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()
plt.subplots_adjust(hspace=0.6)
plt.show()
最後に
いかがでしたか?
もし役に立ったよーって方でBinanceUSにこれから登録されるのでしたら、こちらのコードから登録していただけるとうれしいです。
BinanceUS登録: https://accounts.binance.us/en/register?ref=54270085
0 件のコメント:
コメントを投稿