本書の構成
本書は全7章から成り、各章の内容は以下の種類のパートで構成されています。
●
トレードステーション口座の開設
本書で解説するトレード専用プログラミング言語「EasyLanguage」のプログラミングを行う
には、トレードステーション口座開設が必要です。口座開設はマネックス証券のウェブサイト
から行えます。
https://info.monex.co.jp/tradestation/
本書の読み方
「アドバイス」:
プログラミング に役立つ豆知識や関連した派生 的な知識を紹介 「EasyLanguage
プログラム」:
「タイトル」「プログラム」「印刷ロ グ」で構成 「タイトル」:
プロ グラムの説明とダウ ンロードファイルの ファイル名 「コラム」:
一部の章末 に掲載。トレードステー ションやEasyLangua
ge
プログラミングに関連 するコラムを掲載 「プログラム」: EasyLanguage
の サンプルプログラム本文。重要ポイ ントには説明を追加 「本文」:
プログラミン グおよびトレードステー ションの説明 「囲み」:
重要なポイン トのまとめ 「注意」:
プログラミングやトレー ドステーションの操作で避けるべ き行動、陥りやすい失敗などを 紹介 「印刷ログ」:
プロ グラム実行による出 力結果の一部(3
行)を引用5
●
トレードステーションのダウンロードとインストール
トレードステーションはWindows上で稼働するPCインストール型ソフトウェアです。動画
での詳しいダウンロード方法の解説は以下をご覧ください。
https://info.monex.co.jp/tradestation-support/movie.html
ダウンロード後の詳しいインストール方法は以下の操作マニュアルをご覧ください。
https://info.monex.co.jp/tradestation-support/manual.html
●
推奨システム利用環境
OS: Windows7以上、プロセッサ: Multi-core Intel またはAMD 3GHz以上、メモリ: 4GB以上、
ハードディスク: 1GB以上の空き容量、画面解像度: 1280×1024ピクセル以上、Webブラウザ:
Microsoft Internet Explorer
(最新版)、回線: ブロードバンド回線 6Mbps以上
●
学習の進め方
本書には多数のサンプルプログラムを掲載しています。本文を読むだけでなく、自分の手を
動かしてサンプルプログラムをタイピングし、トレードステーションで実行することで理解が
深まります。
プログラミング技術は、一度頭で理解しただけではなかなか身につかず、使いこなすことは
できません。何度も手を動かし、復習し、試行錯誤することで深いレベルで身につき、知識を
実践し応用することができます。
なお、第4章以降に掲載するサンプルプログラムファイルは、Webサイトからダウンロード
できます。
●
サンプルプログラムのダウンロード方法
本書で提供するサンプルプログラムは、以下のWebサイトよりダウンロード可能です。ダウ
ンロードしたサンプルプログラムファイルはトレードステーション(エディタ)にインポート
することで実行できます。
http://www.standards.co.jp/lk/eld.html
●
サンプルプログラムの目的と使用上の注意点
本書で提供するサンプルプログラムは、EasyLanguageの学習を目的とするプログラムです。本
プログラムおよびこれを一部使用または改変したプログラムを使用した自動売買、裁量トレー
ド、その他いかなる事由により生じた損害であっても、著者および出版元は一切の責任は負い
ません。また、本プログラムを販売その他商業利用の目的で使用することを禁じます。
第
1章
概要
···11
1-1
EasyLanguage
の歴史と特徴
EasyLanguage
の歴史
···12
EasyLanguage
の7つの特徴
···13
1-2
EasyLanguage
の機能
トレードステーションの主な機能メニュー9種
1.
データ取得・蓄積・記憶・エクスポート機能╱2. チャート表示機能
···16
3.
高速反復計算機能╱4. 銘柄スクリーニング機能
···17
5
.銘柄モニタリング機能╱6. 計算結果のチャートへの描画機能╱7. シグナル生成機能
···18
8.
自動売買機能╱9. アラート表示・Eメール送信機能
···19
章末コラム
EasyLanguage
の実践的独習法
···20
第2
章
エディタ
···21
2-1
エディタの役割
トレードステーションにおけるエディタの役割╱開発ツールとしてのエディタ
···22
エディタとトレードステーションの関係
···23
2-2
エディタの画面構成と機能
エディタの起動╱エディタの画面構成
···24
① メニューバー
···25
② ツールバー╱③ 編集エリア
···26
④ アウトプット
···27
2-3
エディタ操作とファイルの取り扱い
ファイルの新規作成
···28
文字入力╱自動補完入力
···29
予約語の配色╱エディタ設定
···30
検証
···31
ファイルを開く╱アウトライン機能
···32
ファイルの適用先となるチャートの準備
···33
インジケーターの適用╱ストラテジーの適用
···36
ELD
ファイルのインポート╱ELDファイルのエクスポート
···39
ELD
ファイルの暗号化
···40
2-4
計算結果を数値で出力する:印刷ログ
計算結果を定量的に出力し確認できる「印刷ログ」
···42
印刷ログエリアの表示
···43
文字列の出力╱① インジケーターファイルを新規作成する╱② 出力したい内容のプリント文を書く
···44
③ 検証しエラーがないかを確認する╱④⑤⑥ 印刷ログを確認する
···45
数値の出力とプリント文の表記改善
···46
プリント文を見やすくする
···48
2-5
入手可能なデータの種類と格納データの確認:データウィンドウ
ノイズレスデータの重要性
···52
データを入手する
···53
目次
CONTENTS
7
チャートが格納するデータを確認する機能:データウィンドウ
···54
データウィンドウの開き方╱足種変更によるチャートとデータ表示の更新
···55
データウィンドウからのデータのエクスポート╱データの種類と範囲と性質
···56
チャートの足が持つデータ
···57
過去足のデータ参照
···58
2-6
快適なプログラミング環境の構築
効果的なプログラミング環境とは
···60
章末コラム
プログラミングスキルを上げる『ストリートスマート』という思考法
···62
第3
章
基本構造と構成要素
···63
3-1
EasyLanguage
の基本構造
基本構造は他のプログラミング言語と共通╱入力→計算→出力╱データ+命令
···64
変数+関数
···65
データ処理原則と制御構文╱原則:順次処理
···66
制御構文その1:分岐処理╱制御構文その2:反復処理
···67
3-2
EasyLanguage
ならではの特殊構造
EasyLanguage
の実行構造
···68
ヒストリカルデータ(過去足)へのプログラム適用╱リアルタイムデータ(現在足)へのプログラム適用
···69
プログラムの実行タイミング
···70
イントラバーデータの更新╱ヒストリカルデータの参照方法
···71
3-3
最大参照足数の確保
最大参照足数とは
···74
トレードステーションからの「分析に用いる足の最大本数」設定:インジケーターの場合
···76
3-4
構成要素
構成要素を理解して組み合わせるのがプログラミング╱① 語
···78
予約語(リザーブドワード、Reserved Word)
···79
ユーザー定義語╱② 句読点
···81
区切り用の句読点
···82
範囲指定用の句読点
···83
コメント用の句読点
···84
③ 演算子╱算術演算子
···85
比較演算子(関係演算子)
···86
論理演算子
···87
演算子の優先順位╱④ 式╱数値式
···89
真偽式╱⑤ 文╱変数宣言文
···91
変数代入文╱プロット文(インジケーター専用文)╱売買文(ストラテジー専用文)
···92
インジケーターの基本構成パターン╱ストラテジーの基本構成パターン
···93
3-5
ファイル構造
インジケーターファイルはスキャナーとレーダースクリーンでも利用できる╱
ひとつのELDファイルでインジケーターとストラテジーの兼用はできない
···94
章末コラム
トレードを3要素に分解
···96
第4
章
基本文法
···97
4-1
描画(プロット文)
基本文法学習におけるプロット文の役割
···98
プロット文の基本形╱プロット文の練習
···99
4-2
変数
変数の意味と機能╱変数の使用手順
···104
変数の種類
···105
定義済み変数╱ユーザー定義変数の変数宣言
···106
変数宣言文の種類╱input変数宣言文╱variable変数宣言文
···108
変数代入文
···109
変数の値をティック毎に更新する変数宣言
···111
4-3
関数
関数の意味╱引数と戻り値とパラメータ
···112
定義済み関数の使い方
···113
定義済み関数の例
···114
4-4
分岐処理(
if
文)
分岐処理の意味
···116
分岐処理の基本形 if…then
···117
条件が falseの場合に実行する内容を決めておく if…then…else
···120
4-5
ブロック文(
begin end
)
複数の処理をまとめるブロック文 begin end
···122
if then else
でブロック文を使う
···124
4-6
反復処理(
for
文)
反復処理の意味と基本形╱for文の練習
···126
for
文から途中で抜け出す処理 break
···128
4-7
条件分岐
+
反復処理(
while
文)
while
文の意味╱while文の練習
···130
無限ループに陥らないために
···131
実行頻度の設定 イントラバーデータ更新
···132
4-8
ネスト構造
ネスト構造の意味
···134
ネスト構造の練習 if文
···135
ネスト構造の練習 for文
···136
4-9
複数データ系列
複数データ系列の参照╱複数銘柄を表示するチャートの作成とデータ確認
···140
複数データ系列の取り扱いの練習
···141
第5
章
分析テクニック
···146
5-1
分析テクニックの開発で学ぶ基本文法の使い方
分析テクニックをカテゴリ別に分類╱ペイントバーの使い方
···146
ペイントバーの練習
···147
ショウミーの使い方
···150
5-2
統計解析モデル
統計解析を行う理由╱基本統計量
···150
収益率
···153
対数収益率╱ヒストリカルボラティリティ
···154
相関係数
···156
5-3
出来高分析モデル
出来高分析の重要性╱出来高移動平均線(2本)
···158
9
オンバランスボリューム
···160
ボリュームレシオ
···161
VWAP
(Volume Weighted Average Price 出来高加重平均)
···162
5-4
パターン認識モデル
パターン認識モデルとは╱上放れ並び赤、下放れ並び黒
···166
はらみ線(陽はらみ線、陰はらみ線)
···168
三兵(赤三兵、黒三兵)
···169
三川明けの明星、三川宵の明星
···171
5-5
トレンドモデル
トレンドモデルの強みと弱み╱移動平均
···174
移動平均チャネル
···179
移動平均エンベロープ
···180
ボリンジャーバンド
···181
ピボット
···183
5-6
オシレーターモデル
オシレーターモデルの意味╱オシレーター
···186
方向性指数(DMI)
···187
サイコロジカルライン
···189
ウィリアムズ%R
···191
RSI
···192
ストキャスティクス
···193
MACD
···194
5-7
非時系列足モデル
非時系列足モデルの意味╱新値三本足
···198
練行足(練り足)
···199
第6
章
ストラテジー
···201
6-1
ストラテジープログラミングの意味
ストラテジー活用法╱ストラテジーの自動売買以外での活用場面
···202
本章の学習項目
···203
6-2
売買文の基本
基本売買文╱売買注文語
···204
ラベル
···205
取引数量
···206
注文タイミング╱注文の種類
···208
6-3
イントラバー計算の設定
イントラバー計算の意味と設定の種類
···212
トレステでのイントラバー計算設定╱プログラムでの記述 intrabarordergeneration、intrabarpersist
···213
6-4
条件付注文
売買文への条件追加方法╱if文で条件を加えthen以下の実行式を売買文とする
···216
セットアップ
···218
フィルタ
···219
ランダムエントリーストラテジー(売買文練習用)
···221
6-5
決済注文の応用
トレーリングストップ
···222
アベレージトゥルーレンジをトレーリングストップに応用
···223
イントラバー決済注文の概要
···225
イントラバー決済注文(第1レベル:注文の単位)╱イントラバー決済注文(第2レベル:注文の種類)
···226
イントラバー決済注文の事例
···228
6-6
足数の数え方
足を数える
···230
足の状況を知る barstatus
···231
6-7
時間管理
日付、時間、曜日などに関する予約語
···234
EasyLanguage
での発注時間の考え方
···235
イントラバー注文を有効にする
···237
ティックトレード
···238
日付計算
···240
時間計算╱日計り売買
···241
6-8
ポジション管理
ポジションとエントリーの状況を知る必要性╱エントリー(新規約定と保有ポジション)の状況を知る
···244
エグジット(決済)の状況を知る
···245
複数エントリーのトレードを許可する設定
···246
複数エントリーを管理する
···248
6-9
サンプルストラテジー集
インジケーターをセットアップに利用するストラテジー
···250
ブレイクアウトストラテジー
···252
乖離率逆張りストラテジー
···255
切り下げ・切り上げパターンストラテジー
···256
酒田五法(赤三兵、黒三兵)ストラテジー
···258
新値三本、練行足ストラテジー
···259
ペアトレードストラテジー
···261
マルチタイムフレーム(MTF)ストラテジー
···263
値幅制限ストラテジー
···265
ダウ逆張りストラテジー
···267
章末コラム
トレステと仮想通貨
···270
第7
章
自動売買
···271
7-1
バックテスト
プログラミングの次の工程、バックテスト╱イントラバーでのバックテスト
···272
パフォーマンスレポートに取引手数料を加味する方法╱パフォーマンスレポートの活用法
···274
7-2
最適化
最適化とは╱最適化機能の操作方法
···276
ストラテジー最適化レポート
···278
他の銘柄やインターバルに適用し試行錯誤
···279
7-3
自動売買の設定と運用
フォワードテスト
···280
資金管理
···281
ポートフォリオ╱ストラテジーのイントラバーデータ更新
···282
売買株数の設定方法╱トレードステーションの注文同期機能
···283
自動発注の設定方法╱トレードマネージャーの操作
···284
注文送信プロセスを理解する
···285
自動売買は自動ではない╱自動売買の環境整備
···286
自動売買に関する意思決定
···287
章末コラム
プログラミングはルーティンワークからの解放手段
···288
概
要
1
■
EasyLanguage
の歴史
EasyLanguageとは、 米国で数々のNo.1の評価を受けるトレーディングプラットフォーム「ト
レードステーション」を動かすためのトレード専用プログラミング言語です(以下、本書では
「トレステ」と省略する場合があります)。トレステとEasyLanguageは共に1970年にアメリカの
ウィリアム・クルーズとラファエル・クルーズ兄弟により開発され、現在までバージョンアッ
プを続けています(2018年5月時点:トレステはバージョン9.5)。
トレステとEasyLanguageが登場するまで、アメリカの一部の先進的な機関投資家やヘッジファ
ンドはシステムエンジニアを雇用し自社開発でシステム開発を行い、コンピュータによる金融
市場分析を行っていました。同じくアメリカのタートルズなど一部のプロップファーム(自己
資金の売買で生計を立てる集団)やCTA(投資顧問業者)は、人間の感情を交えないルールベ
ースのトレーディングを人間のトレーダーに行わせていました。今では常識となったシステム
トレードですが、トレステの登場まではエンドユーザーのみならず機関投資家からも効果があ
るのかは疑念を持たれていました。一方で、効果があるとわかっている投資家も、システムト
レードを実装・運用するには莫大な額のシステム投資とエンジニアリングの知識が必要となる
世界初であり世界標準のトレード専用プログラミング言語
EasyLanguage
EasyLanguage
の歴史と特徴
1-1
●
TradeStation Group,Inc.
ウェブサイト
13
1-1
E
a
s
y
L
a
n
g
u
a
g
e
の歴史と特徴
ため簡単には実装できず、一部の限られた投資家のみがその恩恵を享受していました。
そのような環境下でトレステはデビューしました。システムトレードの優位性を理解する先
鋭的なトレーダー達は、EasyLanguageでストラテジー(売買戦略)をプログラミングしトレー
ドするスタイルに移行しました。個人トレーダーが自宅のパソコンでシステムトレードを行え
る画期的な時代となったのです。その流れは個人のみならず金融機関にも波及し、投資銀行な
どのトレーディングルームにトレステが設置され始め、以後トレステはアメリカ市場で普及し
ていきました。
そして現在では、マネックスグループの一員となった TradeStation Group,Inc.(米フロリダ)
はさらにトレステを進化させました。トレステは金融分野の優れたトレーディングプラットフ
ォームとして現在も数々の賞を受賞し続けています。
トレードの本場アメリカのトレーダー達は、過去数十年にわたってトレステとEasyLanguage
を使い倒し、磨き上げてきました。およそ考え得る限りの多様な相場分析とトレード手法がEa
syLanguage
を使って開発され、成功と失敗を収めてきました。その結果、膨大な数のインジケ
ーターやストラテジーがアーカイブとして残されており、今日の私たちもその恩恵を受けるこ
とができます。
アメリカのトレード解説書籍では、インジケーター(テクニカル分析指標)やストラテジー(売
買戦略)がEasyLanguageで書かれていることがよくあります。これはEasyLanguageがトレードの
世界の事実上の標準プログラムミング言語であることの証左でもあります。
■
EasyLanguage
の
7
つの特徴
EasyLanguageはその名が表すようにインジケーターやストラテジーの開発をイージー(簡単)
に行えるよう設計されたトレーダーのための専用プログラミング言語です。EasyLanguageの主
な特徴は次の7つです。
❶
トレステを動かすための専用言語
EasyLanguageはトレステ上でのみ動作するトレード専用プログラミング言語です。これから
EasyLanguage
で開発を行うにあたっても「このプログラムでトレステをどう動かすか」という
意識を持つようにしましょう。EasyLanguageの書き方次第でトレステを効率よく動かせるか、ま
たは思ったように動かせずトレードで損失を出してしまうかが分かれます。なお、本書ではト
レステが動いた結果を「出力」と呼ぶ場合があります。
❷
トレードの流れに沿ったシンプルな基本構造を持つ
EasyLanguageはトレードに特化し最適化した言語構造を持ちます。その基本構造は①銘柄の
時系列データなどのデータの確保・蓄積(入力)、②データの計算(処理)、③計算結果のチャ
ートへの描画や売買の執行(出力)というトレードの流れに沿った3段階構造となっています。
トレーダーの思考の流れを阻害せず、アイデアや戦略をスムーズにプログラミングできる基本
構造です。
概
要
1
❸
単語や文法の構造が英語に近く可読性が高い
EasyLanguageではtime,open,high,low,closeなどのトレード用語として登場する名詞、buy, sell
などの動詞、at, inなどの前置詞(78ページ参照)を英作文に近い感覚で記述することができま
す。プログラム自体が英文に近いため他者が書いたプログラムも読みやすく学習しやすいです
し(「可読性が高い」といいます)、改変して自分で試してみることもできます。もちろん自分
のプログラムをシェアすることも容易です。
❹
単語や文法のパターンが少なく学習コストが低い
トレード分野は奥深いものですが、それでも登場する概念や用語、トレーダーの行動パター
ンの範囲は限られており、表現するパターンにも自ずと一定の範囲があります。確かにEasy
Language
にはトレード用語が満載でプログラミング初心者はその膨大な単語や文法の数に圧倒さ
れるでしょう。その一方でEasyLanguageにはトレード以外の単語や文法は存在しません。例えば
自動運転車や将棋のAIをEasyLanguageでプログラミングすることはありません。
EasyLanguageはトレード用語をプログラムで使用する「語」(予約語)として網羅しています。
トレードに深い理解があり自分のトレードを合理化や自動化したいトレーダーほど学習しやす
く記述しやすい言語です。ましてやトレーダー自身が実現したい取引手法を既に決めていれば、
あとはその取引手法をプログラムで実装するための最小限の単語と文法を最短距離で学習する
だけです。トレードに専門化していると聞くと難しそうですが、実は逆で、学習範囲が限られて
いるため他のプログラミング言語と比較してもEasyLanguageの学習コストは低いのです。Easy
Language
にどのような単語や文法があるかはヘルプ(61ページ参照)を検索・参照することで
見通しをつけることができます。
❺
短いプログラムで実装できる
C言語やPythonなどの汎用プログラミング言語であれば何百行、何千行を書く必要があるプ
ログラムであっても、EasyLanguageであれば数行、少し複雑なものでも数十行程度あれば自分
が意図したプログラムを記述しトレステに実装することができます。
例えば他の言語では新規(「スクラッチから」という呼び方もあります)に作成する関数で
あっても、EasyLanguageではトレードに関する関数がライブラリに多数取り揃えられておりそ
れを使って短いプログラムで表現することができます。一方、あらかじめ定義された関数が存
在しない場合には他言語同様に新規にプログラムを書く必要があります。その上EasyLanguage
ならではの文法や決まり事、挙動、癖のようなものがありますので、その点についてはその都
度学習する必要があります。
❻
トレステのトレードアプリ上で実行
EasyLanguageで記述したプログラムは、トレステのチャートやレーダースクリーン、スキャ
ナーといったトレードアプリ上で実行します。トレステ以外のアプリケーション上ではEasy
Language
を実行することはできません。実行するには事前にトレステを起動し、チャートやレ
ーダースクリーンを立ち上げ、インジケーターやストラテジーのプログラムファイルを適用する
15
1-1
E
a
s
y
L
a
n
g
u
a
g
e
の歴史と特徴
(「挿入する」)作業を行います。
❼
機械語に変換する「検証」(コンパイル)が必要
EasyLanguageは、C言語などと同様に人間が書いたプログラムをコンピュータが理解でき
る言語(機械語)にいったん変換(コンパイル)し、その機械語をコンピュータが読み取って
実行する言語です。
このように変換というワンクッションの作業を置く理由は、一旦変換するとコンピュータへ
の命令はすべて機械語で処理され処理速度が速くなるというメリットがあるためです。
一方、人間がプログラミングするたびに、人間の手によって機械語に変換する手間がかかる
というデメリットもあります。
しかしそれを補う方法はあります。次章から説明するEasyLanguageを編集するための「エディ
タ」というアプリケーションでは、1クリックでこの変換作業ができます。使い慣れれば変換
の手間をほぼ意識せずにプログラミングを行えるようになります。さらにできるだけこまめに
コンピュータからのフィードバックを受けてエラーを減少する方法については第2章で解説し
ます。
概
要
1
■
トレードステーションの主な機能メニュー
9
種
トレステは多様な機能を持ち、その機能をEasyLanguageにより運用することができます。レス
トランでメニューにある料理を注文すれば調理されて出てくるのと同じように、トレステのメ
ニューにある機能をトレーダーがEasyLanguageの言葉遣いで注文すれば、トレステは注文どお
りのメニューを機械的・自動的に実行してくれます。
本節ではトレステの機能メニューを紹介していきます。これらのメニューをおおまかに知っ
ておくことで、EasyLanguageの学習に着手するモチベーションが生まれ、日々のトレードの合理
化につながります。
■
1.
データ取得・蓄積・記憶・エクスポート機能
時系列データ(time series data)、銘柄データ、口座データ、ポジションデータ、ファンダメ
ンタルデータなど、トレステのデータサーバーや取引サーバーに蓄積された様々なデータをイン
ターネット経由で取得することができます。さらに、データサーバーからフィード(配信)され
た複数の銘柄や複数のインターバルのデータを同時に受信することもできます。
取得したデータはコンピュータのメモリやハードディスクに蓄積・記憶することができます。
そのデータをトレステからCSV(comma separated value、カンマ区切り)形式のファイルでエ
クスポートすることで他の開発環境でも計算・分析することができます。
日本版トレステでは、日本市場の上場銘柄の1991年1月1日からの日足データ、及び最大10年
分の分足データを呼び出すことができます。
通常トレステでは手動で設定することによりデータを取得しますが、EasyLanguageで制御す
ることでデータ取得を自動化することもできます。
■
2.
チャート表示機能
横軸に時間をとり、縦軸に価格をとるチャート(2次元グラフ)でリアルタイムにデータを
表示し、ビジュアルにマーケットの動きを表現することができます。その場合の時間軸(「タイ
ムフレーム」、「インターバル」)の表現方法も例えば50ティック足や35分足などEasyLanguage
で細部まで指定することができます。
EasyLanguage
でトレステを動かせる範囲を知る
EasyLanguage
の機能
1-2
17
1-2
E
a
s
y
L
a
n
g
u
a
g
e
の機能
■
3.
高速反復計算機能
トレステのチャート上に呼び出したデータを使い様々な計算を行えます。数式や関数を組み
合わせ、どのような計算をいつ行うかをプログラムで記述し、コンピュータに毎日、毎時、毎分、
毎秒、ティック毎など複雑な計算も高速で繰り返し行わせることができます。
■
4.
銘柄スクリーニング機能
トレステの銘柄スクリーニングアプリ「スキャナー」にEasyLanguageで開発したインジケー
ターを組み込むことができます。スキャナーで「スキャンの自動実行スケジュール」を設定し
ておけば、インジケーターで指定した任意の条件に合致する銘柄を自動的かつ定期的に抽出で
きます。
●
チャート分析
表示画面
●
スキャナー
概
要
1
■
5
.銘柄モニタリング機能
トレステの「レーダースク
リーン」(銘柄ボードアプリ)
を使えば、開発したインジケ
ーターで指定した条件の値を
リアルタイムで表示し設定し
た間隔でソート(並べ替え)
することができます。
■
6.
計算結果のチャートへの描画機能
チャート上に任意の計算結果を反映した描画(プロット)を行うことができます。トレステ
には複数の描画方法があり、チャートに多様な表現を行えます。
本書では、描画方法の中でも特に線グラフを描画する「インジケーター」とローソク足に着
色する「ペイントバー」を使用します。EasyLanguageで指定することで、グラフに点(ドット)
を打つ、線を引く、配色するなどインジケーターをカスタマイズして表現できます。例えば特
定の銘柄のチャート上に自分が決めた条件でラインを引くインジケーターを作り、それを裁量
トレードに活用することもできます。また、ファンダメンタルデータを表示するなど裁量トレー
ドを行なうためのインジケーターや後述する自動売買のためのストラテジー、さらに高度なも
のとしてはオブジェクト指向のEasyLanguage(「OOEL」と呼びます)を駆使し、チャートやレー
ダースクリーンのよう
な形態でインジケータ
やストラテジー機能を
搭載したオリジナルア
プリを開発することも
できます(なお、本書
では OOEL は扱いま
せん)。
■
7.
シグナル生成機能
価格データなどをプログラムで計算した結果を売買信号(売買シグナル)としてチャート上
に描画することができます。これにより開発したストラテジーの売買タイミングの良し悪しを
●
ペイントバー
●
レーダースクリーン
19
1-2
E
a
s
y
L
a
n
g
u
a
g
e
の機能
目視および要約されたレポート形式(ストラテジーパフォーマンスレポート:272ページ参照)
の両方で確認することができます。
■
8.
自動売買機能
トレステにリアルタイムで価格データを計算させ、売買シグナルを生成させるストラテジーを
開発・実装することで自動売買を行うことができます。忙しい仕事中に自分でスマホを操作して
発注しなくても、パソコンの前に座っていなくても、トレステが決定的なタイミングを逃さずに
トレーダーを代行して発注します。リアルタイムトレード特有の注意点に気をつければ、トレー
ダーはより生産性の高い時間の使い方ができるようになります(280ページ参照)。
■
9.
アラート表示・Eメール送信機能
EasyLanguageで予め条件をプログラムしておけば、取引時間中にその条件を充たす事象が発生
したタイミングでアラートを出すことによりトレーダーに事象の発生を知らせることができます。
アラート機能は、音を鳴らしたり、ポップアップウィンドウを表示したり、システムトレイのア
イコンを点滅したりできます。発生したアラートはメッセージセンターにも表示されます。設定
を行えばアラートをE
メールで送信すること
も可能です。
●
シグナル(矢印)
●
メッセージセンター
概
要
1
EasyLanguage
の実践的独習法
周囲にプログラムに関して質問できる人がいないのでどうやって学習を進めていったらよいか分か
らない、そんな時にどうやって学習を進めたらよいでしょうか。
まずは、トレステフォーラムで最近の投稿を眺めたり、キーワード検索したりすることです。多くの
ユーザーが多種多様な質問を提起しています。中にはあなたと同じ悩みを投稿し既に回答されている
ものもあるかもしれません。フォーラムはトレステユーザーにとっては宝の山です。検索しても手がか
りが得られない場合は、フォーラムに質問を書き込みましょう。誰かが回答してくれます。
また、フォーラムには多くのサンプルプログラムがあります。これはトレステユーザーが自由に使っ
てもよいものです。まずはプログラムを読んでみましょう。プログラマーは読むのが
8
割、書くのが
2
割と言われます。それほど他人の書いたプログラムを読むことは有益とされています。読んでわから
ないことがあっても気にする必要はありません。わからないから学ぶのです。
次に、他人が書いたプログラムをトレステで動かしてみましょう。エディタから新規ファイルを作成し、
コピペしたものを検証し、チャートやレーダースクリーンで起動させます。そのプログラムは動くでしょ
うか?どのように挙動するでしょうか?観察対象としてもってこいです。夜中で相場が動いていないと
きは、為替レートやビットコイン指数レートに適用すれば平日であれば動きを見ることができます。相
場が動いていない土日でもバックテストはできます。
さらにお勧めの方法としては、サンプルプログラムをキーボードで入力して丸写しするトレーニング
方法があります。この行為はプログラミングの世界では「写経」と呼ばれます。写経が現代の仏教で
も修行の一部として残っているように、丸写しは一見時間がかかって無駄な作業のようですが、小学校
や中学校で行った漢字の書き取りや算数の計算練習、英単語を覚えるときの単語カードへの書き込み
と同じで、意味を考えながら手を動かして入力することで文のコンテキスト(文脈)が分かってくる効
果があります。プログラムは長くなればなるほど全体構造が見えにくくなり、文脈を追っていても道を
見失ってしまい迷子になってしまう(ロストする)ことがあります。写経することで流れを意識するよう
になり、繋がりが見えてくれば全体構造と要素の関係を体で理解できるようになります。以上の理由に
より、丸写しに写経がメタファーとして使われるのは、うなずけるところです。
同様なことはウェブサイトやブログでも行えます。トレステについて情報発信しているサイトは検索す
ると沢山出てきます。「トレードステーション」+疑問点のキーワードで検索すると目的のサイトに り
着けるかもしれません。
トレステに既に入っているビルトインインジケーターやビルトインストラテジーでも同じ学習を行え
ます。これらはいわば
EasyLanguage
の実例集です。プログラムを写経するのもよし、プログラムを
コピーし新規ファイルに貼り付けてカスタマイズするのもよしです。
●
マネックス証券の
総合口座から
トレードステーション
フォーラムサイトに
いける
エ
デ
ィ
タ
2
■
トレードステーションにおけるエディタの役割
インジケーターやストラテジーのプログラムをEasyLanguageで開発する場合に使用するアプ
リをトレードステーション開発環境「TDE」(TradeStation Development Environment)といい
ます。TDEには複数の機能が搭載されていますが、そのメイン機能がEasyLanguageを編集する
エディタです。このエディタはWindowsのアプリケーションで言えば「メモ帳」のような機能
のアプリです。
本書では分かりやすさを優先してTDEを「エディタ」または「TDEエディタ」と呼んでい
ます。
エディタはプログラムを速く正確に入力しコンピュータに正確に解釈させるための機能を有し
ています。これらの機能を理解し使いこなすことで、プログラムの開発を効率的に進められます。
■
開発ツールとしてのエディタ
エディタではEasyLanguageプログラムの閲覧、記述、編集、保存を行えます。プログラミン
グ言語の学習に入る前に、エディタの機能や設定方法、利用方法を一通り学んでおくことで、そ
の後の学習がスムーズに進行します。
トレステとは独立した開発環境アプリであるエディタは、トレステを立ち上げていない状態
でも使用可能です。またトレステ同様、最後にログインしてから30日間に限り、インターネッ
トに接続しないオフライン状態での開発も可能です。
プログラムを入力し開発していくエディタの役割
エディタの役割
2-1
外部エディタの使用
EasyLanguage
のプログラミング自体は、メモ帳や
Notepad++
などの他の
アプリケーションでも行えます。ただしトレステの開発環境の一部である
TDE
エディタには
EasyLanguage
を編集することに特化した便利な機能があり
(後述)、さらにトレステが理解する機械語への変換(「検証」)はこの
TDE
エ
ディタでしか行えないため、最終的には
TDE
エディタを使う必要があります。
アドバイス23
エ
デ
ィ
タ
の
役
割
2-1
■
エディタとトレードステーションの関係
便利で強力なツールであるエディタもプログラム開発のすべてのプロセスをカバーしている
わけではありません。開発プロセスの一部の作業はトレステ本体で行います。両者は次のよう
に関連して動作します。
❶
インジケーターやストラテジーのプログラムをエディタで開発します。
❷
開発したプログラムをトレステのチャートに適用します。
❸
トレステが取得した銘柄のデータにプログラムを走らせて計算します。
❹
計算結果に基づきトレステがテスト結果レポートの表示、チャートの描画や自動売買などを
実行します。
プログラミング中はエディタだけでなくトレステ本体も立ち上げておき、両者を行き来する
ことが多くなりますので、ディスプレイ上にエディタとトレステの両アプリケーションを横に
並べて表示するのがよいでしょう(46ページ参照)。
トレステとエディタの役割の違いは次の表を参照してください。本章ではエディタの解説と
共にプログラム開発途上で関連してくるトレステの機能とその利用法も併せて解説します。
●
トレードステーションとエディタの役割分担
トレードステーション
●データ取得、表示
●アプリの実行
●プログラムの適用、計算、実行
●プログラム実行結果の表示
●リアルタイム発注
エディタ
●プログラム開発
●プログラム検証
エ
デ
ィ
タ
2
■
エディタの起動
本節では開発のメイン場所であるエディタの機能を詳しく解説します。
エディタを立ち上げる方法は2種類あります。
●
トレステの画面の左端にある[
トレーディングアプリ
]タブをクリックして[
EasyLan
guage
]と書かれているアイコンをクリックします。
●
メニューバーの[
表示
]
→[
EasyLanguage
開発環境
]をクリックします。
■
エディタの画面構成
エディタを立ち上げたら次にエディタのメイン画面の構成を理解しましょう。
上から順に[メニューバー]、[ツールバー]、一番広い真ん中のスペースが[編集エリア]、下
の段にはアウトプットなどの[タブエリア]があります。左右側面には3つの[タブ]があり
ます。左側にはツールボックスのタブ、右側にはプロパティと辞書タブがあります。これら左
右3つのタブは本書では使用しません。
エディタが持つ多様な機能を起動方法から解説
エディタの画面構成と機能
2-2
●
トレステのトレーディングアプリタブからのエディタ立ち上げ
トレステ
25
エ
デ
ィ
タ
の
画
面
構
成
と
機
能
2-2
■
①
メニューバー
●
エディタ起動時の画面
●
エディタのメニューバー
[
ウィンドウ]
(ファイルを開いている場合のみ表示) ファイルをウィンドウ単位で表示します。標準では[タブ表示]に チェックが入っています。 [ファイル] 新規作成、開く、閉じる、 保存などのファイル操作 に使用します。 [表示] エディタのツールバーに表 示する機能を選べます。 [デバッグ] デバック機能を利用でき ます。基本的にプリント文 (44
ページ参照)でバグ取 りするので使いません。 [ヘルプ]EasyLanguage
の ヘ ル プが参照できるウェブサ イトが表示されます (61
ページ参照)。 [編集] コピーや貼り付けなどプロ グラムを編集する際に使用 します。 [構築する] プログラムを変換する「検証」 機能が置かれています (31
ページ参照)。 [ツール] エディタの表示設定を変更します。[オプション] の選択で画面の配色やフォント(字体)の種類や サイズを変更できます。 ①メニューバー プロパティなど ②ツールバー ③編集エリア ④アウトプットエディタ
エ
デ
ィ
タ
2
■
②
ツールバー
ツールバーの初期画面では以下のアイコンが表示されています。
(※注)オブジェクト指向機能とは、EasyLanguageに後発で追加されたオブジェクト指向言語(Object Oriented EasyLang uage、OOEL)を記述するための機能を指します。本書では扱いません。