Contents
Pythonによる自動売買Botの作り方
こんにちは、ミナピピン(@python_mllover)です。これまでの記事でシステムトレード(自動売買)とはどういうものなのか、プログラムで実装するにあたって意識すべき点、オススメのプログラミング言語、実際にテクニカル指標を使った簡単な自動売買Botのプログラムの作り方について説明してきました。Botの作り方や簡単なサンプルコードは以下の記事に書いています。
/・・・シリーズ記事一覧・・・/
Pythonで自動売買Botを作る①~システムトレードの流れを把握する
Pythonで自動売買Botを作る②~仮想通貨取引所からビットコインの価格を取得する
Pythonで自動売買Botを作る③~プライベートAPIを使って仮想通貨を売買する
Pythonで自動売買Botを作る④~テクニカル指標を用いた自動売買botを作って動かしてみる
作ったプログラムを24時間365日、常時実行させる
そして、これまでの記事で取引所で自動でビットコインの売買を行う自動取引Botを作ったわけですが、この作った自動取引Botをずっと稼働させるとなるとコードだけでは不十分です。
というのもプログラムはコンピューター上で動くので、プログラムを常に実行させるためには、プログラムを実行させるサーバー(コンピュータ)をずっと起動しておく必要があります。
プログラムをずっと起動しておく方法としては、自宅のコンピューターをずっと起動させて、そこでプログラムを常時起動しておくというのもアリと言えばアリですが、ずっと電源を入れっぱなしにするわけですし、Windowsならば、自動更新プログラムで再起動も勝手に行われますし、少し現実的ではないと思います。
そういう場合にオススメなのは、「レンタルサーバーを借りて、そこで常時プログラムを実行させておく」という方法です。レンタルサーバー上でプログラムを定期的に実行するものには、今回のような自動取引Botだけでなく、定期的に情報を集めるクローラーなどもあり、レンタルサーバーを借りてプログラムを定期的に実行させているエンジニアは結構います。
レンタルサーバーの選び方
というわけで、自分の作ったプログラムを常時実行したり定期的に実行したりする場合は、レンタルサーバーを契約するのが一般的です。レンタルサーバーの選び方としては、まず「自分の使いたいプログラミング言語に対応しているかどうか」です。
例えば今回のPythonの自動取引プログラムはもちろんPythonで書かれているため、プログラムを実行させるためには、「Pythonが使えるレンタルサーバーであることがまず前提条件」です。昨今は利用料金が格安なレンタルサーバーも沢山ありますが、「ブログ用にWordpress(ワードプレス)だけしか使用権限がないレンタルサーバーも多い」です。
間違ってそういったレンタルサーバーと契約してしまうと、自分で作ったプログラムをサーバー上で定期的に実行しようという目的で契約したものの、いざ実際に使ってみるとワードプレス以外はほぼ何もできないため、自分の使いたいプログラミング言語に対応していない無駄な手間と時間が掛かった挙句、レンタルサーバーを選びなおすハメになってしまいます。
今回のようなPythonでの自動取引プログラムや定期的にWebサイトを訪問して情報を取得するクローラーのような高度な処理が必要になってくるプログラムを実行させるレンタルサーバーの条件としては、pipコマンドでrequestsなどの複雑な処理を関数化してくれているライブラリをインストールできる環境であることがオススメです。
pipコマンドを使えるレンタルサーバーの条件としては、契約者側にrootまでアクセスできる権限がある必要があります。これを「root権限」といい、root権限を持つレンタルサーバーのことを一般的に「VPSサーバー」と言います。
なので、レンタルサーバーでPythonで書いたプログラムを実行させたい場合はまずそのサーバーがroot権限を持つVPSサーバーであることが条件になります。一応VPSサーバーでなくともできないことはありませんがその場合、VPSサーバーならコマンド1つで住む作業に対して非常に手間が掛かるのであまりオススメはしません。
VPSサーバーは自由だけど責任も大きい
「VPSサーバー」であれば、Python・そして豊富なライブラリを搭載したAnacondaをインストールすることができることができるので、機械学習やWebスクレイピングがレンタルサーバー上でも簡単に実行することができます。
「VPSサーバー」は権限の少ないレンタルサーバーと違って、コンピューターの最深部であるrootにアクセスできる権限があるので、ブログでもサイトでもメールサーバーでも知識さえあればなんでもできます。
ただその分、↓の画像のようなコマンドラインという真っ黒な画面からPCに命令を出すのが基本なので、コマンドの知識とLinux(CentOS)についての知識がない人が使うと何もできないので、中~上級者向けのサービスだと言えます。
コマンドラインは慣れないと難しいですが、将来IT業界を目指している人などは、Linuxとコマンドの練習がてら始めておいても損はないと思います。
VPSサーバーはユーザー側が大きな権限を持っていますが、その分セキュリティーの管理など自由には責任が伴います。加えてただVPSの操作はlinux(CentOS)の真っ黒い画面とコマンドが分かっていないと苦労します。
「VPSサーバー」のサービスを提供しているサーバー会社は多くありますが、とりあえずサーバー管理の練習がてら手始めにVPSサーバー初心者デビューするのであれば、レンタルサーバー業界大手のGMOが運営する「お名前ドットコムのVPSサーバー」がオススメです。
「お名前ドットコムのVPSサーバー」の良いところは「初期費用無料」かつ「月額料金が格安」な点ですね。
一番性能が低い1GBプランならなんと月額980円でサーバーをレンタルすることができます。しかも「6カ月以上まとめて利用料金を支払うと実質月額790円」と格安でサーバーを借りることが可能です。
ただしVPSサーバーはSSH接続が基本なので、コマンドライン(真っ黒の画面)とlinuxのサーバー関連の知識がないと少し困ることもありますし、だれでもできるというわけではありません。
VPSサーバーにPythonのAnacondaをインストールする方法は以下のサイトで解説されているので、サーバーに申し込んで料金を支払いコンソール画面からサーバーを起動したら、下記の記事のやり方でAnacondaをインストールしてみてください。
そして、Linuxが分からんという人は、Windowsのリモートデスクトップの画面をそのまま提供してくれる「Windows リモートデスクトップサーバー」で代用するのがオススメです。
Windows リモートデスクトップサーバーとは
Windowsデスクトップサーバーはレンタルサーバー上で自宅のデスクトップPCのようなWindows画面でサーバーを使うことができるレンタルサーバーです。実際にサーバーにアクセスすると↓のような画面から操作できます。
VPSサーバーの場合は真っ黒な画面から操作するのが基本ですが、こっちのWindowsデスクトップサーバーだと以下のような画面からサーバーの操作を行うことができるので、サーバー周りの知識がない初心者でも簡単に操作することができます。
こちらだとPCの画面からデスクトップやノートのPCで実行するのと同じ要領で、プログラムをWhile文などで無限に実行しておいたり、定時起動したりすることができます。
Windowsサーバーはデスクトップ画面が付いているレンタルサーバーなので、普通の種類のレンタルサーバーと違って提供している会社の数は少ないですが、その中でも初心者の方にオススメなのはGMOの提供している「ConoHa for Windows Server」というWindowsデスクトップサーバーです。
利用料金の方は先ほどのVPSサーバーと違って最安プランのCPU1GBで月額2300円と少し高くなってしまいますが、「24時間安定稼働の初期費用無料」、「最低利用期間無し」なので、とりあえずWindowsの画面でレンタルサーバーを触ってみたい人にオススメです。
ConoHa for Windows Serverの詳細を見てみる
まとめ
以上がプログラムを定期実行したり、常時実行させるため方法とレンタルサーバー初心者にオススメなサービスのまとめです。ここまでの内容をまとめると
- レンタルサーバーを借りるならVPSサーバーがいい
- だけどVPSサーバーは何でもできる反面Linux知識が必要
- Windowsサーバーは少し高いけど自宅のデスクトップと同じようにプログラムを実行できる
なので、Pythonなどで作った自分のプログラムをサーバー借りて定期的に実行したり、24時間常時実行させたい場合は以下の2種類のサーバーのうちのどちらかを借りるといいでしょう。
レンタルサーバーを使用するにあたっての予算の最低額はひと月あたり1000~2000円くらいが目安ですね。自分で定期的に自動でデータを集めるようなプログラムを組むことができるようになるとプログラミングもやっていて楽しくなります!
【お知らせ】
Pythonの定期実行環境構築でお悩みの方はMENTAにて環境構築及びスクリプトの定期実行に関するご相談を受け付けておりますので、お気軽にご相談ください。(招待リンクから登録すると利用料が500円割引になるのでお得です)
招待リンク:https://menta.work/invite/wYZXKkSpS2fg9Z3f
自分のプロフィール:https://menta.work/user/26168
コメント
[…] 関連記事:Pythonで自動売買Botを作る⑤~レンタルサーバーでプログラムを定期実行する […]