見出し画像

TradingViewのストラテジーで自動売買する方法(BitFlyer,Bybit)

ねくすこです。(@tenten1091)
本日は、TradingViewのストラテジー通りに自動売買を行う方法
Pythonを使った例で紹介します。

※更新履歴
◆2020/04/30
  Bybit取引所に対応
◆2020/05/19
  アラート受信方式にWebSocketを追加
◆2020/06/07  ストラテジーアラートに対応

■はじめに

画像28

今回紹介する方法はストラテジーからアラートを作成し、
それをPythonで検知して自動売買を行う方法です。

アラート受信をブラウザと同じ形式で行うWebSocket版を追加しました。
・コネクションを都度生成するWebHookよりも高速に行えます。
・TradingView無料アカウントでもbotを1台動かせるようになりました。

■用意するもの

画像27

TradingViewアカウント
botを1つだけ動作させる場合は無料アカウントでOKです。
複数動作させる場合は有料アカウントが必要になります。

Python3.x
3.6以降のバージョン推奨です。

■ストラテジーにアラートを仕込む方法

画像26

スクリーンショット 2020-06-07 3.55.22

チャートを開いてストラテジーを適応させた後、
赤枠の時計ボタンを押し、アラート設定ダイアログを表示します。

スクリーンショット 2020-06-07 4.07.55

"コピー用 (XXXXXXXの部分はアラート名に置き換え)"
XXXXXXX,{{strategy.order.action}},{{strategy.position_size}}

条件に先ほど適応させたストラテジーが入っていることを確認し、
メッセージの部分を上記のように入力してアラートを作成します。

スクリーンショット 2020-06-07 4.15.20

アラートビューを表示させ、
上記のようになっていればアラートの完成です。
1つのアラートで1台のbotを動かせられます。

アラートは作成した時点のストラテジーの設定で動作します
途中でストラテジーのパラメーターを変えたり、ストラテジーをチャートから外してもアラートには影響が無いので注意して下さい。

画像23

botの仕様について

取引所はBitFlyerとBybitに対応、
注文は同じ方向へのエントリーは複数行わない設計になっています。
強制決済(ロスカット)は考慮していません。

他の取引所での運用はコードに手を加える必要があるため、
Pythonの知識が必要となります。

画像22

メリットなど

従来のbotでは、テクニカルの計算を自作する必要がありましたが、
この手法では全ての計算がPineスクリプト内で完結するため、
その部分の移植が必要なくなります。

過去のデータをAPIで公開していないBitFlyerのような取引所でも
テクニカルによるトレードが可能になります。

TradingViewに登録されている全てのチャートで
売買サインを登録することが可能です。

ストラテジーの種類だけbotを作成することが可能です。
他の方の公開されている有用なストラテジーを取得し、
その日のうちに稼動させることができます。

画像21

 Python外部パッケージのインストール

botの内部でPythonの外部パッケージを使用しているため、
以下のコマンドを実行してパッケージのインストールをして下さい。

pip install retry
pip install flask
pip install requests==2.22.0
pip install ccxt==1.27.6
pip install websocket-client==0.46.0
pip show retry
pip show flask
pip show requests
pip show ccxt
pip show websocket-client

上記のコマンドを実行してパッケージの詳細が表示されていれば
正しくインストールができています。

■自動売買Botコード

画像20

自動売買のプロジェクト一式は
GitLabのプライベートリポジトリにアップロードしています。

GitLabへ登録していただいた後、そちらのアカウントを招待いたします。
登録方法はこちらの記事を参考にして下さい。

noteのお問い合わせからnote購入時の注文IDとGitLabのアカウント名
お教えください。1日以内に招待を行います。
※招待完了後のこちらからの返信は行いません。
※注文IDが見当たらない場合は、IDの代わりに購入日を添えてください。

画像11

GitLabのアカウント名は、
ログイン後に画面右上のアイコンを押すと表示される、
@付きの名称になります。

画像12

招待が完了すると、GitLabからその旨を通知するメールが届きます。
GitLabのホーム画面に鍵付きのリポジトリが表示され、
その中の雲アイコンからプロジェクトがダウンロード可能になります。

■プロジェクト構成

画像19

clientservice
┃ ┣ bitflyer.py			BitFlyerのトレード機能
┃ ┣ bybit.py			Bybitのトレード機能
┃ ┗ exchange.py			取引所の共通機能
┣ wrapper
┃ ┣ bitflyer.py			BitFlyerccxt拡張
┃ ┗ errors.py			取引所エラー拡張
┣ parser
┃ ┣ legacy.py			アラートパーサー(旧式)
┃ ┣ flexible.py			アラートパーサー(strategy形式)
┃ ┗ alert.py			アラートパーサーの共通機能
┣ notify.py				Lineへの通知機能
┗ receiver.py			アラート受信機能

serverrealtime
┃ ┗ tradingview.py		TradingviewWebSocket機能
┣ service
┃ ┗ tradingview.py		TradingviewWebSocket監視機能
┣ sender.py 			アラート送信機能
┣ setting.ini			サーバー設定ファイル(共通)
┣ setting_webhook.ini   サーバー設定ファイル(webhook版)
┗ setting_websocket.ini	サーバー設定ファイル(websocket版)

settingbf_example.ini 		BitFlyer設定サンプルファイル
┗ bybit_example.ini		Bybit設定サンプルファイル

server_webhook.py		サーバーコード(webhook版)
server_websocket.py		サーバーコード(websocket版)
trade.py				トレードメインコード

プロジェクト構成と各種ファイルの概要になります。
この先では、上記プロジェクトの実行手順などを説明しています。

ここから先は

2,521字 / 8画像 / 2ファイル

¥ 9,800

この記事が気に入ったらサポートをしてみませんか?