FX・シストレ Python

【シストレ】自動取引Botを使ってビットコインFXを行う方法を徹底解説!!

この記事は約11分で読めます。

 

 

国内の仮想通貨取引所でビットコインFXをするならQUOINEXかビットフライヤーがオススメです。自動取引は基本的にプログラミング言語を使って実行します。プログラミング言語にはいろいろありますが、Pythonがオススメです。

 

 

 

 

ここから先はpythonの基本的な知識が必要になってきますので、プログラミング未経験という人は参考書なりで勉強することをオススメします。

 

他のプログラミング言語でコーディング経験のある人は以下の流れを自分のプログラミング言語で再現すればいいと思います。

 

 

自動取引の流れ

 

そして、botを作る際に必要な作業は大きく分けて以下の3種類です。基本的にプログラムは機械仕掛けの玩具みたいな感じで、分解するとパーツごとに分かれています。なのでパーツを1つ1つ作り最後に組み合わせるようなイメージを持っていれば、独学でもコードを完成させることが出来ると思います。

 

 

①価格データを集める処理

 

②売買の判断基準となるシグナルの計算

 

③売買注文を発注する関数

 

 

 

 

そして、手動ではなくプログラム上から自動で価格データの取得、注文を実行するためには基本的に各取引所が提供しているAPIという機能を使う必要があります。

 

 

 

ビットフライヤーの場合はpybitflyerというライブラリがあるのでそれを使用します。詳細は以下で解説しています。

 

 

①価格データを入手する

 

ビットコインを始めとする仮想通貨の価格データは価格サイトからAPIなりを使って入手するか、取引所のtickerデータを自分で定期的に集めて保存する2パターンがあります。

 

 

 

 

②シグナルを計算する

 

シグナルとは要は売買の判断基準のことです。システムトレードでのトレードシグナルにはテクニカル指標を使うのが一般的です。有名なところだと移動平均線MACD・RSI・ボリンジャーバンドあたりですね。Pythonではほぼすべてのテクニカル指標をTa-libというライブラリで簡単に計算することができます。

 

 

 

 

他にも機械学習・深層学習を使ったものもあります。

 

 

 

 

 

 

③注文を発注する処理

 

取引所への注文はAPIを使って行うのが一般的です。ビットフライヤーではAPIをさらに使いやすくしたpybitflyerというライブラリを公開してくれているので、それをコマンドラインでインストールします。

 

 

$pip install pybitflyer

 

 

インストールが完了したら、ライブラリをインポートしてします。基本的な関数は以下の通りです。

 

 

import pybitflyer

API_KEY = "公開鍵"
API_SECRET = "秘密鍵"
api = pybitflyer.API(api_key = API_KEY, api_secret = API_SECRET)
size = 0.001 #注文する量


##注文を発注する
api.sendchildorder(product_code="FX_BTC_JPY", child_order_type="MARKET", side="BUY", size="0.01")

 

 

APIの公開鍵と秘密鍵については後で解説します。まず引数について説明するとchild_order_type=”MARKET”は成行注文を指定しています。LIMITにすると指値注文に変更できます。sideは売買を決める引数で”BUY”なら買い”SELL“なら売りになります。

 

 

自動取引BOTを作る

 

これで上述した3つの処理を行うパーツが揃ったので最後に組み立てていきます。

 

 

###tradeBotβ版

###必要なライブラリーと関数のインストール

import requests
import json
import pandas as pd
import numpy as np
import time
import datetime
import talib
import pybitflyer

##CoinGeckoからビットコインの価格と変化率を取得する関数

def get_bitcoinprice():
url=('https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=jpy&days=14')
r=requests.get(url)
r=json.loads(r.text)
bitcoin=r['prices']
data=[]
date=[]
for i in bitcoin:
data.append(i[1])
date.append(i[0])
bitcoin=pd.DataFrame({"date":date,"price":data})
price=bitcoin['price']
change=price.pct_change()
bitcoin=pd.DataFrame({"date":date,"price":data,"change":change})
return bitcoin

##買い注文を発注する関数

def order_buy():
order=api.sendchildorder(product_code="FX_BTC_JPY",
child_order_type="MARKET",
side="BUY",
size="0.01",
)

##売り注文を発注する関数

def order_sell():
order=api.sendchildorder(product_code="FX_BTC_JPY",
child_order_type="MARKET",
side="SELL",
size="0.01",
)

##決済をするときの関数

def order_close(side):
order=api.sendchildorder(product_code="FX_BTC_JPY",
child_order_type="MARKET",
side=side,
size="0.01",
)

##秘密鍵と公開鍵をセットする

API_KEY = "自分の公開鍵"
API_SECRET = "自分の秘密鍵"
api = pybitflyer.API(api_key = API_KEY, api_secret = API_SECRET)

 

############# Bot本体(RSIで売買)################

##購入するビットコインの数量

size = 0.001
flag=True

for i in range(1440):
##btcの価格を取得する
bitcoin=get_bitcoinprice()
price = np.array(bitcoin['price'])
##RSIを計算する
rsi = talib.RSI(price, timeperiod=14)
##最新のRSIを抽出する
RSIsignal=rsi[len(rsi)-1]
##売買を判断する
if flag:
if RSIsignal>50:
##買い注文の発注
order_buy()
flag=False
d = datetime.datetime.today()
side="SELL"
print(d.strftime("%Y-%m-%d %H:%M:%S"),'BTCを買いました')
if RSIsignal<50:
##売り注文の発注
order_sell()
flag=False
d = datetime.datetime.today()
side="BUY"
print(d.strftime("%Y-%m-%d %H:%M:%S"),'BTCを売りました')
else:
order_close(side)
flag=True
d = datetime.datetime.today()
print(d.strftime("%Y-%m-%d %H:%M:%S"),'BTCを決済しました')

time.sleep(3600)

 

 

これで簡単なBotが完成したわけですが、APIの公開鍵と秘密鍵とbitflyerlightning上での証拠金やレバレッジの初期設定が必要になってきます。

 

 

ビットフライヤーでの初期設定

 

まずはビットフライヤーのサイトにアクセスしAPI鍵を取得します。販売所のサイトではなくFX用のbitflyerlightningというサイトがあるのでそっちにアクセスします。

 

 

 

画面左端のタブを展開するとAPIというタブがあるので、そこを開いて新規APIキーを追加というタブがあるのでそこをクリックしてAPI鍵を作成します。

 

 

 

ラベルは自分が判別できればいいので任意の名前にしてください。そして、権限というのはそのAPI鍵を使ってプログラム上からどこまで自分のアカウントを操作できるかを指定します。この権限は資産取引入手金の3つの項目に大きく分かれています。

 

万が一自分のAPI鍵が外部に漏れた場合、入出金の権限を与えていると悪意のある第3者にアカウント内の資産を外部に送金されて盗まれてしまう危険性があるので、入手金の権限は与えないほうがいいと思います。なので入出金以外の権限を許可しておきます。

 

 

 

 

そして、一番下の保存を押すと、API鍵が作成されるので、作成されたAPIの公開鍵と秘密鍵をさきほどのコードの””で囲まれたところにペーストします。

 

次は証拠金とレバレッジの設定ですが、基本的にFXと現物は口座が別なので新しくFXを始める際はFX用口座に証拠金を入金する必要があります。先ほどのAPIをタブの下に入出金というタブがあると思うので、それを開き、自分の現物口座にある日本円を証拠金口座に移動させます。(この処理は一瞬で終わります)特に額の指定などはありませんが、個人的に大金でFXをするのは止めておいた方がいいと思います。

 

次はそこに一緒にあるレバレッジの設定ですが、基本的には5倍でいいんじゃないかなとレバレッジは大きくすれば大きくするほどハイリスクハイリターンです。ここはAPIからは基本的に触れないので、手動でする必要があります。

 

これでコードを起動すれば自動取引が始まります。自分のデスクトップやノートPCでずっと実行する場合はずっと起動しっぱなしにしておかないといけません。それが無理という方はレンタルサーバー上でプログラムを実行すれば24時間365日(メンテ以外)ずっと稼働させることができます。今回は移動平均線によるゴールデンクロスとデッドクロスをシグナルとしてやっていますが、ほかにもいろいろ判断指標はありますし、複数の指標で判断したり自分独自の指標でやっている人もいるみたいですし、稼げるか稼げないかはあなた次第です。

 

とはいっても有名なテクニカル指標をプログラムに忠実に実行させれば、一か月で元手が〇〇倍に!?みたいなことはありませんがそこそこのリターンは出せます。有名なやつはそれなりに有効性があります。なのに人間が手動で取引して皆悉く失敗するのはさまざまなバイアスに懸かってしまうことで正常な合理的判断が下せず致命傷を負ってしまうからです。

 

以上がFXでbotを使った自動取引を始める方法です。botで不労所得とはいきませんが、過去の価格データからこれは使えると思った指標をバックテストしたりして自分オリジナルの指標を見つけるのも醍醐味ですし、Bot作りは上手くいけばお金が増えますし、勉強すればするほど奥が深い分野ですので飽きませんねー笑

 

 

 

 

 

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました