前回『マネックス証券でシステムトレードをはじめよう』では、マネックス証券で、システムトレードを始めるまでの方法を説明しました。
この記事では、実際にシステムトレードをする方法を説明します。
この記事の通りに操作すれば、どれでも簡単にシステムトレーダーになれます!是非挑戦してみてください。
なお、ここでは、マネックス証券のアプリ「Trade Station」(トレードステーション、通称トレステ)がパソコンにインストールされている状態からスタートします。
まだ、インストールされていない方は、マネックス証券のマイページから、メッセージ一覧を開き、メッセージ「トレードステーション利用契約設定完了のお知らせ」から、アプリをインストールしてください。
唯一無二のEasyLanguage入門書!!
これから学ぶ方も、隠れた機能を知りたい方も。

目次
トレードステーションを起動してみよう
それでは早速、トレードステーションを起動してみましょう。
まずはじめに、ログイン画面が出ます。
チャートのキャッシュがあれば、オフラインでもバックテストできますが、特に理由がない場合、ログインすればよいでしょう。
ログインに使うユーザー名とパスワードは、マネックス証券にログインする用のユーザー名とパスワードです。
(注意:以降の画像は、分かりやすくするために、一部分を切り取って紹介しています。パソコンの画面をそのままというわけではないので、注意してください。)

はじめて起動した場合は、ログイン後、以下のように3つのモードから選ぶようになっています。

ここでは、いろんなウィンドウが設定されており、分かりやすい、「ビギナー」を選びましょう。
慣れてくると、他のパターンも試してみたり、自分でカスタマイズしたりしてみてください。
「ビギナー」を選ぶと、以下のような画面になるかと思います。
複数のウィンドウからなる画面ができたかと思います。
システムトレードではなく、通常通り、各銘柄の売買注文が出せたりもします。
ただ、システムトレードの場合は、画像の赤枠で囲った「チャート分析」ウィンドウを主に使います。
システムトレードのストラテジーを作成してみよう
ここからは、システムトレードのストラテジーを作成してみましょう。
ストラテジーとは、自動で売買するときの、ルールのことです。
どういった条件を満たせば、買い注文や売り注文を出すかというルール・戦略のことをストラテジーと呼びます。
自らストラテジーを作成するとなると、プログラミング技術が多少必要です。
ですが、トレードステーションが扱うプログラミング言語は「Easy Language」と言われ、文字通り、比較的イージー(簡単)です。
プログラムの基本のみで構成されている印象で、高度なものを組まない限り、すぐに理解できると思います。
作成するプログラムの中身を説明するときに、プログラムの書き方を説明しますが、体系的に説明するのは、ここでは避けることとします。
おそらく、やりながら覚える方が身に付くので。特に、やりたいことをやろうとすると、より身に付くのが早いです。
なので、この記事では、即実戦です。
もちろん、売買が発生しない段階でのテスト(バックテスト)までにとどめるので、失敗したから、いきなり損失を被るというわけではないので安心して取り組んでください。
では、プログラムを書いていきましょう。
ストラテジーをプログラミングしてみよう
トレードステーションの左の方に「トレーディングアプリ」というタグがあるので、それをクリックしてください。
その後、「Easy Language」をクリックしてください。

アプリ「Easy Language」が立ち上がりました。これは、ストラテジーを作成したり、チャート分析をするための指標(インジケータ)を作成するためのアプリです。
Easy Languageというコンピュータに読み込ませる言語を使って、記述していきます。(C言語などと同じです)
今回は、ストラテジーを作成していきますので、「新規」→「ストラテジー」とクリックしてください。
ストラテジー「移動平均線交差」
ここでは、「短期移動平均線が長期移動平均線を上回ったときに買い注文、短期移動平均線が長期移動平均線を下回ったときに空売り注文を出す」というストラテジーを作成してみましょう。
新規作成を押すと下の画像のような画面が出ます。名前や注記は任意に、自分が分かりやすくつけて下さい。また、テンプレートはNoneを選択します。

早速ですが、以下にプログラムを公開します。順に説明していきますので、安心してください。
Input: ShortLen(9), LongLen(18), MinHold(8), MinProf(50);
Vars: ShortMA(0), LongMA(0);
ShortMA = Average(Close, ShortLen);
LongMA = Average(Close, LongLen);
If ShortMA crosses over LongMA then Buy next bar at market;
If ShortMA crosses under LongMA then SellShort next bar at market;
If BarsSinceEntry > MinHold and OpenPositionProfit < MinProf then begin
Sell next bar at market;
BuyToCover next bar at market;
end;
このストラテジーで、移動平均線が交差にしたときに売買注文を出すという自動取引が可能となります。
それでは、順に説明していきます。
1行目:代入変数宣言文 input文
「Input:」で始めると、チャート分析画面で値を変えられる変数が宣言できます。
これから、この単語を変数として使いますよー。というのを、示すための文です。
ここでは、ShortLen(9), LongLen(18), MinHold(8), MinProf(50)の4つの変数を宣言しています。
この名前は特になんでもよくて、自分の分かりやすい名前をつけたら良いです。
例えば、ShortLenは、短期移動平均線の平均日数を表そうとしています。なので、短期(=short)の平均する日にち長さ(=length)から、取っています。平仮名や漢字などは使えないので、英語が苦手な方は、ローマ字で入力してもよいでしょう。
変数の後ろの( )は、初期値です。ここでは、短期移動平均線の平均日数は9です。としています。
先ほども述べた通り、この数字はチャート分析画面で変えることができます。Easy Languageで変えることももちろんできますが、変数を変えるためだけに、いちいち立ち上げなくて済むので非常に楽です。
また、バックテストをする際に、変数を変えやすいのもポイントです。
さらに、利益が最も出る変数値を出す計算ができるのですが、それは、このInput文で宣言されている変数のみに対してできます。
なので、数値の選び方によって結果が変わりそうなものは、すべてInput文で宣言しておくことをおすすめします。
2行目:変数宣言文 vars文
2行目では、変数の宣言をしています。
1行目のinput文と似ていますが、こちらのvars文は、Easy Language内でのみ使用する変数です。
したがって、分析チャート内では値を変えられません。
ここでは、ShortMA(0), LongMA(0)の2つを宣言しています。
先ほどと同様に( )は初期値を表しており、vars文で宣言される変数は初期値をゼロとしておくことをおすすめします。
初期値を入れない場合、予期せぬ値となってしまうことを避けるためです。
今回のストラテジーでは、ここまでで変数の宣言を終えています。以降ではここまでで宣言した変数を使って、数式を作っていきます。
もしも、ここで宣言していない変数を使おうとすると、プログラムを実行するときにエラーが返ってきます。
3行目、4行目:変数に代入
3行目と4行目では、変数に値を代入しています。
算数の数式と同じで、
ShortMA = Average(Close, ShortLen);
となると、ShortMAにAverage(Close, ShortLen)を代入するという文になります。
ここで、Average(“値”,”長さ”)とすることで、長さの範囲の値を平均するという意味になります。
このように、Easy Languageには、多数の数式を使うことができます。
ここで、Closeというものが使われています。これは変数で宣言されていませんが、Easy Language内にあらかじめ定義されている変数です。
Closeは、現在の足の終値のことを指します。足は五分足もあれば、日足もあり、そのときのチャートの表示の仕方によって変わります。
したがって、3行目では、短期の移動平均線を算出する文ができています。初期値として、ShortLenには9が入っているので、この短期の移動平均線は、「現在の足を含めて9つ分の足で平均をとったもの」となっています。
同様に4行目では、18個分の平均で長期移動平均線を作っています。
5行目、6行目:条件文 if〜then文
5行目と6行目には、条件文が書かれています。
if A then Bは、Aという条件が満たされれば、Bを実施します。
という文章になります。5行目は
If ShortMA crosses over LongMA then Buy next bar at market;
なので、「ShortMA crosses over LongMA」という条件が満たされれば、「Buy next bar at market」を実行することになります。
解説すると、ShortMAがLongMAを越えた(cross over)ときに、次の足の始まりで買い注文を出すということになります。
ShortMAは短期移動平均線で、LongMAは長期移動平均線なので、
「短期移動平均線が長期移動平均線を越えたとき(上回ったとき)に、次の足のはじめで買い注文を出す」
ということになります。
短期移動平均線が長期移動平均線を上回ると、上昇相場であるという予測をそのままストラテジーとしたものとなります。
逆に、6行目では、
短期移動平均線が長期移動平均線を下回ったときに空売り注文を出す
ということになります。
7行目 条件文 if A and B then〜
先ほどは、if文の中の条件はひとつでした(移動平均線が交差したとき)。
複数の条件を同時に満たす場合を指定したければ、and文で繋げれば良いです。
「if A and B then〜」とすると、「もし、AとBという条件が満たされたとき、〜」となります。
Aという条件とBという条件が両方とも満たされたときにのみ、then以降の指示に移ります。
and文はいくつでも繋げることができるので、複数の条件をあげることも可能です。
また、if〜then beginと、beginを後に付けることで、条件を満たしたときに複数の文を実行できます。
実際、ここのプログラム上でも、条件を満たせば、8行目と9行目が実行されます。
7行目は、「BarsSinceEntryがMinHold以上のとき、かつ、OpenPositionProfitがMinProf以下のとき」となります。
BarsSinceEntryは、その株の保有期間を表し、OpenPositionProfitは、その株の含み益を表します。
含み益の単位は円です。MinProfを50とし、MinHoldは8にしたので、
「保有期間が8足より長い、かつ、含み益が50円未満のとき、」となります。
8行目と9行目 売り注文・買い戻し注文
7行目の条件を満たしたときのみ、8行目や9行目の文が実行されます。
8行目は、保有株の売り注文
9行目は、空売り株の買い戻し
これらを行います。
10行目 end文
end文は、if文がここまでですよという意味を持っています。
つまり、「if 〜 then 〜 end;」までが一まとまりであると言えます。
ストラテジーの検証
これで、ストラテジーが完成しました。
プログラムを少しでもやったことがある方なら、こんなもんかと思えるかと思います。
一方、全くやったことない方でも、単語がたくさん出てきて戸惑うかと思いますが、やってることはなんとなくわかると思います。
これを応用しろと言われると難しいかもしれませんが、すぐに慣れます。慣れの問題です。落ち込まないでください!
それでは、ストラテジーの検証をしてみましょう。
ここでいう検証とは、実際のチャートに合わせてバックテストを行うわけではなくて、ストラテジーがきちんと文法通りに書けているか。という意味の検証です。
下の画像は、さきほどのストラテジーを打ち込んだ状態です。
この状態で、キーボードのF3キー(キーボードの上の方にあるやつです)を押してみてください。
ストラテジーにミスがないか確認してくれます。
特になにもでなければ問題なしです。

エラーがあった場合は、下の画像のように、エラー箇所がハッチングされて返ってきます。
下の画像では、入力ミスによりエラーが返ってきた例を示しています。
「ShortMA」とすべきところを「ShotrMA」としてしまっているため、エラーが返ってきています。
エラーが返ってきた場合は、修正後、F3キーを押して、再度検証してみてください。

これでストラテジーの準備ができました。
次回、このストラテジーを使って、バックテストをしていきます。
今回出てきた単語・文法
単語・文法 | 意味 |
Close | 足の終値 |
BarsSinceEntry | 株の保有期間(足数) |
OpenPositionProfit | 株の含み益 |
Average(“値”,”長さ”) | 値の長さ期間の平均値 |
if A then B end | 条件Aのとき、Bを実行 |
if A and B then | AとB両方の条件を満たすとき |
if A or B then | AとBいずれかの条件を満たすとき |
if A then begin B C | 条件Aのとき、BとCを実行 |

