【仮想通貨】【自動売買bot】【PHP】bitFlyerAPIとinvestingのテクニカルデータを使った自動売買システムの構築
このnoteではbitFlyerのAPIとinvesting.comのBTC/JPYのテクニカル分析を利用した自動売買の仕組みを
PHPにて構築及び解説していきます。(PHP 5.6以上)
プログラム初心者でもわかるようにできるだけ詳細に説明していきます。
ここで記載する自動売買プログラムは全200行程度で完結します。
■bitFlyerについて
金融庁第3号に登録された仮想通貨を取り扱う2014年に開設された日本国内の取引所です。
時価総額上位の安定した仮想通貨のみを扱っており、取引量が多いです。
特にBTC-FXにおいては取引量が国内で最も多い取引所となります。
自動売買や、BOTの作成に必要なAPIも多数用意しており、
取引、注文、出金等の操作全てにおいてAPIが用意されているため、
プログラムを組むことによって各操作の自動化が可能です。
■investing.comについて
investing.comは世界の各法定通貨/仮想通貨のテクニカル分析や、ニュースの配信を行っているサイトです。
提供しているBTC/JPYのテクニカル分析においては
RSI、STOCH、 STOCHRSI、MACD、ADX、Williams %R、CCI、ATR、Highs/Lows、Ultimate Oscillator、
ROC、Bull/Bear Power
移動平均においては5日、10日、5日、20日、50日、100日、200日
をそれぞれ分析し、総合結果で売り/買いの判定をサイトにて公開しています。
※参照:https://jp.investing.com/currencies/btc-jpy-technical?cid=1057389
■当プログラムについて
紹介したbitFlyerのAPIとinvesting.comサイトの結果を組み合わせることによって、
複雑なテクニカルの分析ロジックを組むことなく簡潔に自動売買の仕組みが作れるのではないかと考え作成いたしました。
また、できるだけプログラミング初心者でも簡単にデバッグができるように最小限の機能でプログラムを作成しています。
※:本稿は利益・損失を保証、確定するものではありません。当該提供情報にていかなる損害を被ったとしても著者は一切の責任を負いませんので了承ください。
解説内容としましては
1 . PHPの環境構築と必要ライブラリのダウンロード
2 . ディレクトリ、ファイル構成の説明
3 . 自動売買の実装解説
4 . 自動売買を開始するためのバッチ設定
5 . プログラム全体
となります。
1 . PHPの環境構築と必要ライブラリのダウンロード
本稿のシステムでは必要ライブラリとして「phpQuery」を使用します。
まずは公式サイトから「phpQuery-onefile.php」をダウンロードします。
https://code.google.com/archive/p/phpquery/downloads
その他の必要ライブラリはPHP標準のものとなりますが、不足している場合(システム構築後に動作しない場合)は
以下のライブラリが存在しているか確認し、足りなければ環境に合わせインストールしてください。
・php curl
・php dom
PHPの環境はPHP5.6以上を推奨しております。
WindowsやOS Xをご使用の場合はXAMPP等のLAMP環境構築ソフトウェアをインストールしてPHP環境を構築し、
Apacheを起動することでphpを動作させることができます。
https://www.apachefriends.org/jp/index.html
Linuxをご使用の場合はyum, apt-get等のpackage installerを使用してPHP環境を構築してください。
PHPが動作するのであれば、apache等のWEBサーバーの起動は不要です。
2 . フォルダ、ファイル構成の説明
本稿で作成するファイルは1ファイルのみです。
XAMPPで環境構築した場合はhtdocsの配下に任意の名称のディレクトリを作成し、
「phpQuery-onefile.php」を作成したディレクトリの中に入れておいてください。
それ以外の場合は、PHPの動作するディレクトリ内で任意のディレクトリを作成し、
「phpQuery-onefile.php」を作成したディレクトリの中に入れておいてください。
例として以下のような構成になります。
任意のディレクトリ
├ phpQuery-onefile.php
└ (本稿で作成するプログラムファイル)
3 . 自動売買の実装解説
それでは実際にプログラムを作成していきます。
「2 . フォルダ、ファイル構成の説明」で作成したディレクトリ内に任意の名前でファイルを作成してください。
拡張子は「.php」となります。以後、本稿では「main.php」とします。
main.phpをテキストエディタ等で開き編集を行っていきます。
また本稿で作成するプログラムは以下の順番で処理を記述していきます。
①investing.com に接続し、HTMLを取得
②investing.com のHTMLを解析し、オーダー可否を決定をします。
③ポジション(建玉)の一覧を取得します。
④処理②の結果オーダーを出す決定がされていた場合に成行注文を行います。
⑤処理③で取得した建玉の一覧を確認し、設定値に従って約定注文を行います。
まず、テキストエディタでPHPを使用するための宣言を1行目に記載します。
<?php
次に「phpQuery-onefile.php」を読み込むための宣言を記載します。
require_once dirname(__FILE__).'/phpQuery-onefile.php';
注文の境界値等で使用する定数を宣言します。
const INVESTING_URL = "https://jp.investing.com/currencies/btc-jpy-technical?cid=1057389";
const INVESTING_TEC = "#techStudiesInnerWrap div:eq(0) span";
const MY_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36";
const API_KEY = "<bitFlayerのAPI_KEY>";
const API_SECRET = "<bitFlayerのAPI_SERET>";
const BF_ENDPOINT = "https://api.bitflyer.jp";
const BF_TATE_LIST = "/v1/me/getpositions";
const BF_ORDER = "/v1/me/sendchildorder";
const PRODUCT_CODE = "FX_BTC_JPY";
const PROFIT_LIMIT = 1000;
const STOP_LIMIT = -1000;
const ORDER_SIZE = 0.1;
const POSITION_LIMIT = 1;
ここから先は
¥ 1,500
プログラムのことに関しては言語問わず対応できます。主にこれからプログラムを覚えていきたい+仮想通貨で自動売買をしたい人向けに記事を書いていきます。