雑記ラボMENUホーム仮想通貨IT・ガジェット雑記IT系の情報を雑記的に書いているブログです。2023-05-27仮想通貨の自動売買ツール作ってみたいけど何から書いたらいいかわからなくなっていませんか?この記事ではPythonで作成した仮想通貨の自動売買ツールのプログラムを公開し解説しています。自動売買ツールをPythonで作成したサンプルコードを公開します。このコードをコピペして、口座開設とAPIキーを入力して動かせば今すぐにでも、ビットコインと日本円を使用した自動売買が可能です。(口座とAPIキーが無いと何もできません)ビットバンクのAPIを使用しているので、サンプルコードを動かすにはビットバンクの口座を開設が必要です。仮想通貨の取引所であるbitbank(ビットバンク)の口座開設方法を解説した記事です。通販サイトなどに登録したことがある方なら、簡単に開設できます。パラメータ(設定項目)やその他の要因によって大きく損益が変わってきます。そのため、このコードを使用して損失が発生をしても責任は負いません。この記事で自動売買ツールを運用するまでの7ステップをまとめてあります。仮想通貨の自動売買ツールを作成から運用まで行うまでを6ステップでまとめました。time.sleep(3600)1時間ごとに取引所へ価格データを取りに行って、期間の異なる移動平均線を2本作成しクロスの発生を判断します。ゴールデンクロスで購入、デットクロスで売却です。・投資額は口座にある資産を全て投入するようになっています。・稼働開始時に、短期移動平均線が長期移動平均線を上回っていた場合には、すぐに買い発注します。・期間設定は23時間以内でないと、プログラム起動日時よってはエラーが出ます。現在の取引価格を取得する部分で処理が抜けていましたので追記しました。こちらの記事ではChatGPTを使用して自動売買ツールのPythonプログラムを作成させています。ChatGPTでプログラミングができることをご存じですか?この記事ではChatGPTを使って仮想通貨の自動売買ツールの作成をしてみました。自動売買に必要な設定項目です。売買を行う銘柄を選択します。このサンプルコードでは、ビットコインと日本円をトレードする設定となっています。銘柄の指定方法はビットバンクAPIの仕様にある方法と同じですので、そちらを参照してください。※日本円との取引でない、仮想通貨同士のトレードだとエラーが出るかもしれません。計算するための期間を設定する項目です。平均する期間を調整するため、数字が小さいほど直近の値動きに反応をします。ゴールデンクロス・デットクロスで売買タイミングを計るため、長期移動平均線よりも小さい値にすることが必要になります。計算するための期間を設定する項目です。短期移動平均線と同じく、数字を小さくするほど直近の値動きに反応するようになりますが、こちらは短期移動平均線よりも大きな数字の必要があります。取引所(ビットバンク)の個人データへアクセスするためのAPIキーを設定します。ビットバンクでAPIキーの発行を行うと、2種類のコードが発行されるので入力します。売買ポジショントレード開始時に、自分が売り側なのか買い側なのかを設定しておく項目です。ビットコイン等を持っている状態からスタートする場合には、「buy」の部分を「sell」と打ち直してからトレードを開始します。python_bitbankcc.private(api_Key,api_Secret)ビットバンクAPIを使用するために、インスタンスをローソク足データなどのパブリックデータへのアクセス用と、資産データなどのプライベートデータへのアクセス用の2つを作成します。このインスタンス作成時に初期設定部分で入力をした、API情報が使用されます。APIについてはこちらの記事で解説しています。仮想通貨の自動売買ツールを自作したい方へ向けての記事です。ここではAPIとは何か、サンプルコードを含めて解説しています。smaData取引所から取得した仮想通貨の値動きデータから、単純移動平均線を作成するための処理をまとめた関数です。この時点ではデータ取得を行っていませんので、定義をするだけの部分となります。以下の記事で、この単純移動平均線を含めた全3種類の移動平均線の計算方法と、サンプルコードを公開していますのでそちらも参照ください。仮想通貨の自動売買ツールを自作したい方へ向けての記事です。ここでは、移動平均線とは何か、計算方法からPythonのサンプルコードを解説しています。i])取引データの加工が必要なので長くなっていますが、分割して解説していきます。dt_yesterday.strftime('%Y%m%d')ビットバンクからローソク足データを取得するには日付の指定が必要となるため、現在の日時の取得を行い変数へ格納します。ビットバンクのAPIに指定する日時は、9:00で日付が変わるため、例えば9月1日の8:00にデータ取得を行う場合には8月31日の8:00と指定する必要があります。そのための処理が中央のif文です。2日分の日付を設定している理由は、もし9:00にデータ取得を行った場合、当日のデータが1つしか取得できず単純移動平均線の作成が不可能となるためです。candledataAPIを使用して2日分のローソク足データを取得します。当日分のローソク足データを取得し始値・終値等が書かれたデータのみを抽出した後、前日分のローソク足データも取得し同じくデータの抽出を行います。この時点ではデータが当日分と前日分に分かれているため、データを結合して2日分のローソク足データを1つにして格納します。i])2日分のローソク足データから、単純移動平均線を作成するために終値データを抽出します。終値だけではなく始値などに変更することも可能ですが、ここでは終値を使用します。for文で2日分のローソク足データから終値を取得後リストに格納します。期間分のデータがあれば十分なため、for文で長期移動平均線の期間分のデータのみを取り出します。その際には最新のデータから取得しなければいけないため、全てのローソク足データを格納したリストの後ろから必要な期間分だけ抜き取ります。long_smaData]単純移動平均線の短期・長期それぞれを格納するためのリストを作成し、上記にある単純移動平均線の関数を呼び出して計算を行わせます。売買タイミングの判断基準となる値は単純移動平均線の最後の値なので、リスト長さをリストから割り出します。長期移動平均線のクロスをif文で判断し、仮想通貨の売買を実施します。and条件で売買ポジションも条件に入れることで、重複して買い注文・売り注文を行わないようにしています。現在持っている日本円を、現在のビットコイン価格で割ることでビットコインの購入数量を計算しています。ビットバンクでは小数点以下4位までしか注文は受け付けていないので、それ以下の桁数は切り捨てを行っています。い注文指定(buy)・指値注文指定(limit)を渡して行います。戻り値も受け取ることができますが、このコードでは受け取っていません。ここでpost_onryという、マイナス手数料を確実に受け取れる指定もできますが、ここでは行っていません。買い注文を行った場合は次は売り注文のため売買ポジションを「売り」に、売り注文を行った場合には次は買い注文のため売買ポジションを「買い」に設定します。実際に注文テストは行うことができなかったので注文動作は未確認です。time.sleep(3600)約定待ち中に重複して注文を実施してしまわないように、約定するまでの間はループするようになっています。5秒間隔で注文が残っていないかを確認し、注文が無くなった(全て約定した)状態になったところでループを抜け出します。その後、1時間(3600秒)を待機します。ここでの1時間待機」となり、次のデータ取得まで1時間よりも多く待ってしまいます。正確に1時間ごとのデータ取得を行う方法もあるのですが、このコードではシンプルさを優先しました。仮想通貨のクロス取引に、最適なローソク足の時間足設定があるのではないかという事で、調査をしてみた記事です。サンプルまとめコード全文をコピーして動かせばすぐにでも、仮想通貨の自動売買が開始できますが、最適な期間設定を見つけないと稼げません。このコードをベースにして、自分なりのトレードルールを追加したり、独自の処理を追加して良いセッティングを探してみてください。仮想通貨の自動売買ツールは稼げるのか、気になっている人向けの記事です。自動売買ツールの取引実績を随時更新しています。IT企業勤務を経て、現在は小さな会社の工場で品質管理の仕事をしています。商品のレビュー依頼などは、お問い合わせページからどうぞ。雑記ラボ.閉じるもくじ閉じる。