これからシステムトレードを始めてみたいと思っていて、
「プログラム言語は何を使おうか?」と
悩んでおられる方はいらっしゃいますでしょうか?
トレードを行う上で制限がない状態であれば
自分の使い慣れたプログラミング言語を使うというのが一番でしょう。
「システムトレードを通して新しいプログラミング言語を習得したい」とか
「これからプログラミングの勉強を始めたい」という方には
Pythonがおススメです。
Pythonの特徴やなぜおススメするのかについて解説していきます。
使用するプログラミング言語を決める前に確認すべきこと
その前に確認しておかなければならないことがあります。
それは、「あなたがシステムトレードで何を扱おうとしているか」です。
株取引なのか、FXなのか、仮想通貨なのかによって
使用できるプログラミング言語(ツール)が限られてきます。
株取引(日本株)であれば、マネックス証券のTradeStation一択です。
カブドットコム証券がAPIを法人向けに公開していますが、
個人投資家は直接これを利用できません。
カブドットコム証券のAPIは取引ツール開発会社に提供され
個人投資家は取引ツール開発会社が提供するツールを利用することしかできません。
どこまでの条件設定や取引ができるかは
取引ツールの出来次第ということです。
株取引でシステムトレードが可能と言えるのはTradeStationのみでしょう。
また、FXのシステムトレードを行いたい場合は、
ほとんどがMT4になるでしょう。
FXは、株取引よりもシステムトレードに対応している
証券会社やFX業者の数は多くなりますが、
そのほとんどはMT4によるトレードになります。
MT4以外でトレードできるようにAPIを公開しているのは
OANDA Japan株式会社(オアンダジャパン)ぐらいです。
MT4は、世界中でシステムトレードに広く使われており(もちろん日本でも)、
インジケーターやチャート、バックテストなどの機能面だけでなく、
使い方やサンプルプログラムまでもがネット上に公開されており
システムトレードを行うための環境が非常に充実しています。
システムトレードの初心者でFXの取引を行う場合、
特に理由がなければMT4を使う方がよいでしょう。
私もインジケーターのコーディングや
バックテストのやり方など、
システムトレードの基礎をMT4から学びました。
これからシステムトレードを始めるという方は、
一度はMT4で自分のEAを開発して
バックテストを行うところまでは行った方がよいです。
株取引やFX以外でシステムトレードを行いたい、
MT4は一通り触ったことがあるという方に
おススメしたいプログラミング言語がPythonです。
株取引やFX以外でシステムトレードというと
仮想通貨のことを考えている方が多いのではないでしょうか。
APIを公開している仮想通貨取引所が多いですから
仮想通貨のシステムトレードは個人投資家に対しても
環境が整っていると言えるでしょう。
仮想通貨のシステムトレードにPythonが向いている理由
自己資金でシステムトレードを行おうという方が
どのプログラミング言語を使うかについては、
個人の好みで選べばよいと思います。
ただ、システムトレードを行う際に使用するプログラミング言語を
何にしようかと情報を集めている方におススメしたいのがPythonです。
Pythonの特徴というと、
文法を極力単純化してコードの可読性を高め、読みやすく、また書きやすくしてプログラマの作業性とコードの信頼性を高めることを重視してデザインされた、汎用の高水準言語である。
核となる本体部分は必要最小限に抑えられている。一方で標準ライブラリやサードパーティ製のライブラリ、関数など、さまざまな領域に特化した豊富で大規模なツール群が用意され、インターネット上から無料で入手でき、自らの使用目的に応じて機能を拡張してゆくことができる。(Wikipediaより)
というところです。
Pythonをコーディングする上で一番特徴的なのはインデントでしょう。
インデントが構文規則に含まれています。
インデントはプログラムを見やすく、理解しやすくするものですが、
Python以外の例えばC言語等のインデントがルールとされていない言語においては
どのようにインデントするかはプログラマーにゆだねられています。
ですので、インデント(プログラムの見た目)と実際のアルゴリズムに
差異が発生することがあり、このことがバグを生むことの原因にもなっています。
一方のPythonではインデントがルールとして組み込まれているため
見た目の部分と実際のアルゴリズムの差異を少なくすることで
正確にコーディングしやすくなると言われています。
また、本体部分は最小限に抑えられており
標準ライブラリや様々な領域に特化したツール群が用意されているため
自分の使用目的にあわせて機能拡張していくことができます。
機能拡張を行うツールも本体部分に組み込まれており、
用意にこれを行うことが可能です。
システムトレードを行うには
正確な数値計算を行う必要がありますが、
こういったライブラリが充実しておりかつ導入も容易なので
開発をスムーズに進めることができます。
Pythonでシステムトレードを行うにあたっては、
Anacondaというパッケージをインストールして
Pandasというデータ解析を支援するライブラリを導入すると
開発が楽になるでしょう。
また、Pythonには最近話題のオープンソースのAIエンジンである
TensorFlow(テンソルフロー)を扱いやすいというメリットがあります。
※TensorFlowが対応しているプログラミング言語は、C言語、C++、Python、Java、Goです。
投資の世界にもAIの波が押し寄せてきていますが、
GoogleがTensorFlowをオープンソースで公開してくれているため、
個人投資家レベルでもこの恩恵を受けられる状況になっています。
まとめ
システムトレードをどのプログラミング言語で開発するかは、
取引したい商品・環境で利用できる言語を調べることが最初に必要です。
利用できるプログラミング言語の中に使い慣れたものがあれば
それで開発を行うのがよいでしょう。
その上で、これまでPythonを使用したことがなく
新しいプログラミング言語を身に付けたい、
自分でコーディングしてシステムトレードをやりたいという方であれば
Pythonがおススメです。
Pythonのインストール方法やライブラリだけでなく、
仮想通貨取引所APIとの接続プログラムや
自動売買プログラムのサンプルも別記事で紹介します。
また、TensorFlowの導入方法や使い方、
機械学習を使ったシステムトレードについても
取り上げていく予定ですので、ぜひご期待ください!