こんにちは、加納 (@ostwxyz) です
マネックス証券が提供しているツールにトレードステーションがあります。
トレードステーションはチャートを表示・分析したり注文したりできる株式売買のツールなのですが、日本株を売買できるツールでは珍しくシステムトレード機能も提供しています。
バックテスト等も手軽に試せるようなので、私もツールを使ってみたいと思い口座開設を行いました。今日ようやくツールが使える状態になったので、トレードステーションと、システムトレードのアルゴリズムを記述するプログラミング言語であるEasyLanguageについて概要を把握していきたいと思います。
トレードステーション公式の操作マニュアルを読んでできることをまとめてみます。また、EasyLanguage自体の文法等についてはプログラミングの経験があれ理解できると思うので省略します。
EasyLanguageでできること
EasyLanguageでは主に分析テクニックの作成とストラテジーの作成という2つのことができるようです。それぞれどんなものが見てみます。
分析テクニックの作成
分析テクニックとはインジケーターなどのチャートを分析する際に使うロジックのことのようです。EasyLanguageで作ったプログラムをチャートに設定すると、オリジナルのインジケータ等を描画することができます。
インジケーター
記述したソースコードは左側の足から足ごとに実行されるようで、例えば終値を描画するインジケーターは次の1行で完了します。
Plot1(Close, "終値");
詳細はマニュアルを参照してほしいですが、ビルトインの関数などを使うと移動平均線などを簡単に計算でき、例えば5足と25足の移動平均線を2本描画するプログラムは書きのようになります。
Vars: ShortMA(0), LongMA(0); ShortMA = Average(Close, 5); LongMA = Average(Close, 25); Plot1(ShortMA, "短期移動平均線"); Plot2(LongMA, "長期移動平均線");
最初の Vars という行で変数定義を行い、次の2行で値の計算、最後の2行で描画命令です。
ショウミー
ショウミーはインジケーターと違って点を描画することができます。
例えば、短期移動平均線が長期移動平均線を下から上に突き抜けるゴールデンクロスは、下記のようなコードで描画することができます。
Vars: ShortMA(0), LongMA(0); ShortMA = Average(Close, 5); LongMA = Average(Close, 25); If ShortMA crosses over LongMA then Plot1(ShortMA, "ゴールデンクロス");
上記のインジケーターとショウミーを同時に描画してみると次のようになります。確かに終値ベースの2つの移動平均線が表示されていて、ゴールデンクロスが検出された日には黄色の丸い点が表示されている様子がわかります。

ストラテジー
トレードステーションの素晴らしい点はこのストラテジーです。ストラテジーを使うと、自動で売買の注文を発注できます。
例えば、ゴールデンクロスで買い、デッドクロスで売るというストラテジーは、下記のように定義できます。
Vars: ShortMA(0), LongMA(0), isGoldenCross(false), isDeadCross(false); ShortMA = Average(Close, 5); LongMA = Average(Close, 25); isGoldenCross = ShortMA crosses over LongMA; isDeadCross = ShortMA crosses under LongMA; If isGoldenCross then Buy ( "ゴールデンクロス" ) next bar at market; If BarsSinceEntry > 0 and isDeadCross then Sell next bar at market;
EasyLanguageは自然言語のように記述できることを目指している言語のようなので、注文を出すところの文法はなんとなく雰囲気で読めてしまいますね。
実際に上記プログラムをチャートに適用してみた様子が下記になります。シグナルを検出した次の足での発注になるのでゴールデンクロス・デッドクロスから売買が若干遅れていますが、意図したとおりに動いている様子が視覚的に確認できます。

バックテストのパフォーマンスも自動でまとめてレポートを表示してくれ、そう損益や資産の推移が目に見えてわかるようになっています。
例えば、下記はソフトバンクグループの過去10年分の日足チャートに上記ストラテジーを適用してみた結果です。


(ちなみに、上記画像だと+22万円で儲かっているようにみえますが、ソフトバンクグループの株価は10年前は970円程度で現在4300円を超えているので、100株だけ買ってずっと持っているだけでも30万円以上の利益が出る計算です。)
今回は試していませんが、実際に発注はしないでプログラムがどのように動くかをみるフォワードテスト、そして実際のお金を動かす発注などもできるようです。
以上、簡単にはなりますが、トレードステーションとEasyLanguageでできることの紹介でした。今後いろいろな仮説をプログラムに落として、検証していけると面白そうだなと考えています。
