PythonとTrading Viewを使ったBINANCEを自動売買する方法をシェア。
Youtubeは無料で最後まで視聴できます。
初心者向けに以下の順番で説明しています。
- Pythonの基礎
- システムの仕組み
- APIの接続方法
- 仮想通貨ビットコインの新規注文
- 仮想通貨ビットコインの決済注文
- TradingViewとの連携方法
ネットに初心者向けの仮想通貨ビットコイン自動売買する方法がのってなかったので紹介します。
プログラミング初心者でも作れるよ😃
Table of Contents
BOTの作り方
まずはゴールを決めて必要なものを割り出します。
「動けばいいや」 最初はそんな気分だった。
なんでもいいから動くBOTを組み立てたい。
挫折してしまうので出来るだけ簡単に。
ネットで下調べてみると情報がたくさんのってる。
- 取引所がAPIを公開しているのでそれを使えばトレードが出来るらしい
- TradingView有料プランでBOTにシグナルを送信する機能が使えるみたい
- 設置する場所はAWSやConohaが人気
- Googleもクラウドサービスがある
- コラボレートリーが便利そう
- Pythonで作れそう
情報を整理して以下の形でいこうと思います。
- プログラミング言語は初心者でもわかりやすいPython
- TradingViewのシグナル機能を使う
- Gmailでアカウント持ってるからGoogleのサービスで統一
- デモ口座もあるBybitでテスト開発
使う技術
バイナンスデモ口座のURLをかなり探した
バイナンスのデモ口座の認知度が低すぎる件。
Pythonで全部作るよりTradingViewと組み合わせたほうが簡単
Pythonで全部やろうと思ったけどちょっと難しいです。
・ バックテストが可能
・ クラウドサーバーなので24時間いける
・ デフォルトのテクニカル指標・ストラテジーが使える
・ 有料noteのストラテジーが使える
キャンペーン情報
自動売買の仕組み
手順
Googleコラボレートで試してみる
TradingViewでストラテジーを使う
コピペで使えるコード
GCPのCloud Functionsにコピペする
コピペで動くコード
Cloud Functionsへコードをコピペで設置する
リージョンはサーバーが置いてある地域のことです。近い方が有利。Bybitはシンガポール拠点。
未認証の呼び出しを許可すると外部からのアクセスを許可できます。
Trading View メッセージ
1 |
{"side":"{{strategy.order.action}}"} |
Cloud Functions
bot/
├ main.py
├ requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from binance.futures import Futures client = Futures(key='e84c0cf225874cfd792e74843117156d73bcdff255075dd0367815e291b1f284', secret='6559b98c1d5edd6d8696e7f579f6fc141e8ade37e3af53c79ba6d193f8610eee', base_url="https://testnet.binancefuture.com/") # client = Futures(key='e84c0cf225874cfd792e74843117156d73bcdff255075dd0367815e291b1f284', secret='6559b98c1d5edd6d8696e7f579f6fc141e8ade37e3af53c79ba6d193f8610eee') #本番口座用 def hello_world(request): request_json = request.get_json() side = request_json["side"] if(side=="buy"): try: #ポジションを決済 params = { 'symbol': 'BTCUSDT', 'side': 'BUY', 'type': 'MARKET', 'quantity': 0.1, 'reduceOnly':'true' } response = client.new_order(**params) except Exception as e: print("続行") #ポジションを新規注文 params = { 'symbol': 'BTCUSDT', 'side': 'BUY', 'type': 'MARKET', 'quantity': 0.1 } response = client.new_order(**params) if(side=="sell"): try: #ポジションを決済 params = { 'symbol': 'BTCUSDT', 'side': 'SELL', 'type': 'MARKET', 'quantity': 0.1, 'reduceOnly':'true' } response = client.new_order(**params) except Exception as e: print("続行") #ポジションを新規注文 params = { 'symbol': 'BTCUSDT', 'side': 'SELL', 'type': 'MARKET', 'quantity': 0.1 } response = client.new_order(**params) |
1 |
binance-futures-connector |
質問はコメントまでお願いします。
質問と回答
ログを確認してみてください。ヒントが見つかります。
1 2 3 |
エラー 2022-09-11 07:50:57.018 JSTbinance-test-app7shjkxy78tth Traceback (most recent call last): File "/layers/google.python.pip/pip/bin/functions-framework", line 8, in <module> sys.exit(_cli()) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 1128, in __call__ return self.main(*args, **kwargs) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 1053, in main rv = self.invoke(ctx) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 754, in invoke return __callback(*args, **kwargs) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/functions_framework/_cli.py", line 37, in _cli app = create_app(target, source, signature_type) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/functions_framework/__init__.py", line 288, in create_app spec.loader.exec_module(source_module) File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "/workspace/main.py", line 2, in <module> from binance.futures import Futures ModuleNotFoundError: No module named 'binance.futures' Traceback (most recent call last): File "/layers/google.python.pip/pip/bin/functions-framework", line 8, in <module> sys.exit(_cli()) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 1128, in __call__ return self.main(*args, **kwargs) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 1053, in main rv = self.invoke(ctx) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/click/core.py", line 754, in invoke return __callback(*args, **kwargs) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/functions_framework/_cli.py", line 37, in _cli app = create_app(target, source, signature_type) File "/layers/google.python.pip/pip/lib/python3.9/site-packages/functions_framework/__init__.py", line 288, in create_app spec.loader.exec_module(source_module) File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "/workspace/main.py", line 2, in <module> from binance.futures import Futures ModuleNotFoundError: No module named 'binance.futures' |
エラーが表示されています。
注意深く読んてみると・・・・
1 |
ModuleNotFoundError: No module named 'binance.futures' |
ModuleNotFoundError(モジュールが見つかりません)というエラーがでていました。
githubには”取扱説明書”が書いてあるので確認します。
ということで、この記事は2022年の1月に書いた記事なので半年ほどたってアップデートされています。
取引所は機能を定期的にアップデートするため、取引所のリモコンであるモジュールライブラリもそれに合わせてアップデートされることが多々あります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
from binance.um_futures import UMFutures client = UMFutures(key='d19cf7d326447fc72f3a612f1f45799ba0d944c4f493a77c22219b1ad62e7e2f', secret='4f0b27fd240f3164e56413d084cb691ee4169b7d8b7401c422a963099e511989', base_url="https://testnet.binancefuture.com/") # client = UMFutures(key='e84c0cf225874cfd792e74843117156d73bcdff255075dd0367815e291b1f284', secret='6559b98c1d5edd6d8696e7f579f6fc141e8ade37e3af53c79ba6d193f8610eee') #本番口座用 def hello_world(request): request_json = request.get_json() side = request_json["side"] if(side=="buy"): try: #ポジションを決済 params = { 'symbol': 'BTCUSDT', 'side': 'BUY', 'type': 'MARKET', 'quantity': 0.1, 'reduceOnly':'true' } response = client.new_order(**params) except Exception as e: print("続行") #ポジションを新規注文 try: params = { 'symbol': 'BTCUSDT', 'side': 'BUY', 'type': 'MARKET', 'quantity': 0.1 } response = client.new_order(**params) except Exception as e: print(e) if(side=="sell"): try: #ポジションを決済 params = { 'symbol': 'BTCUSDT', 'side': 'SELL', 'type': 'MARKET', 'quantity': 0.1, 'reduceOnly':'true' } response = client.new_order(**params) except Exception as e: print("続行") #ポジションを新規注文 try: params = { 'symbol': 'BTCUSDT', 'side': 'SELL', 'type': 'MARKET', 'quantity': 0.1 } response = client.new_order(**params) except Exception as e: print(e) |
2022年9月では上記で動きます。
またアップデートされることがあるので、同じ手順で変更してみてください。
BybitがGoogleのIPアドレス規制をしているためです。国内のVPSなら使…
自分のbotで使ってるAPIキーを使用しているんですが、 You have br…
pybit 最新版にコードを変更しました。コードとrequirements.tx…
お返事ありがとうございます。はい。pybit==2.3.0になっております。
コードはあっていると思います。rewuirements.txtは「pybit==…