Easy Languageホームスタディコースの解説動画へのリンクをまとめました。(随時更新中)
私が作成した動画以外にも、他の方が投稿したEasy Language(イージーランゲージ)解説動画へのリンクも掲載します。(ページの1番下です)
Easy Languageとは?
株式売買のために開発されたEasyLanguageには2つのユニークな関係演算学習の目的: ストップ注文を発注するストラテジーを書く。 詳細: 8期間の最高値から一定値の価格に買いストップ注文を置く。また 8期間の最安
Easy Languageとは、マネックス証券の高機能トレードツール[トレードステーション]で株価の分析や、株の自動売買を行うためのプログラム言語です。
Easy Languageホームスタディコースとは?
Easy Languageを実習を交えながら学ぶ事が出来る、マネックス証券が公開しているテキストです。
「Easy Languageホームスタディコース」のダウンロード
Easy Languageホームスタディコースをダウンロードしてみましょう。
マネックス証券のサポートサイトに行きます。
(下の画像をクリックしても、サポートサイトに飛びます)
https://info.monex.co.jp/tradestation-support/manual.html#01
マネックス証券のサポートサイト内の、 ホームスタディコースPDF をクリックして、ダウンロードしてください
Easy Languageホームスタディコース解説ページと連携
このページは、Easy Languageホームスタディコース解説ページと連携しています。リンクはこちら
スポンサーリンク
動画リンク
[Easy Languageホームスタディコース]の目次と、解説動画を対比させています。
目次ごとに、そのページの内容の要約も記載していますので、目的の動画を探すのにお役立てください。
動画のリンクを素早く見つけるには、このページ先頭の目次から[◇解説動画]を選ぶのも良いかも知れません。
※解説動画は随時追加しています。
◇解説動画:ホームスタディコース最初のページから、EasyLanguage の句読点 …. P13まで
ホームスタディコースについて …. vi
ホームスタディコースについて
このホームスタディコースは、米国 TradeStation Securities の 2日間の実地トレーニング コースである EasyLanguage ブートキャンプをベースにして作成されたものを、日本株版トレードステーションの仕様に沿って再編集したものです。
本書の目的は、トレードステーション の革新的なトレード専用言語である EasyLanguage の基本的な知識を習得することです。独自のトレードアイディアを EasyLanguageのインジケーターやストラテジーとして作成することができるようになります。
出所:Easy Languageホームスタディコース
1. EasyLanguage とは?…. 1
EasyLanguageはトレーダーのためのプログラム言語です。
トレーダーのアイディアをベ ースにインジケーターやストラテジーを作成するために使用される語、演算子、特殊文字の組合せです。
(中略)
EasyLanguageは、あるトレーダーが他のトレーダーに対して、トレードのアイディアを 簡単な英語で伝えるように書くことができる仕様になっています。
出所:Easy Languageホームスタディコース 1P
2. トレードステーション 開発環境 …. 2
トレードステーション上で EasyLanguage使用してインジケーターやストラテジーを作 成したり編集したりする時はいつでも、トレードステーション開発環境で作業を行うこ
とになります。
エディターや辞書など、簡単な特徴の説明です。
EasyLanguage エディター…. 3
Easy Languageを使う上で無くてはならないのがエディターです。
起動方法と簡単な機能説明など。
EasyLanguage プログラムのプロパティ設定…. 7
プロパティ設定では、既存または新規に作成されたインジケーターやストラテジーの表 示や計算に関する項目の設定をカスタマイズしたり初期設定を指定したりすることがで
きます。出所:Easy Languageホームスタディコース
3. 足の概念について理解する …. 9
EasyLanguageを使用する上で覚えておかなければならない基本的な原則は、トレードス テーションは足の単位で動作するということです(ティック、分、日の単位ではなく) 厳
密に言うと、分析が実行されるチャートを構成しているのは足です。出所:Easy Languageホームスタディコース
注釈: 最大参照足数 …. 9
注釈: 最大参照足数– インジケーターやストラテジーは、計算開始前に最低限計算に必要 な足の数を要求します。この要求された足の数が最大参照足数と呼ばれています。チャ ート内で計算を始めるためには、チャートにこの最大参照足数より多い足が存在している必要があります。
出所:Easy Languageホームスタディコース P9
4. EasyLanguage の構成要素 – 語、文、式、句読点 …. 11
EasyLanguage 語…. 11
EasyLanguage 語 他の言語同様 EasyLanguageは語から成り立っています。EasyLanguageの語は次の 5つ
のカテゴリーに分けることができます。出所:Easy Languageホームスタディコース
EasyLanguage の式と文 …. 12
◎一般的な 2種類の式
◇ 数値式 : 数値式は数字値の参照や計算を行います。
◇真偽式 : 2つの数値を比較して真か偽かを評価します。
◎一般的な 4種類の文は以下のものです
インプット宣言文
変数宣言文
変数代入文
プロット文: インジケーター用
◎文の順序
EasyLanguageプログラムの検証を成功させるための一般的なガイドラインとして、文は 下記の順序で書かれている必要があります。
- インプット宣言文
- 変数宣言文
- 変数代入文
- プロット文: インジケーター用
- 売買文: ストラテジー用
- 注釈: 意図的に他の順序で文を書く場合もあります。
EasyLanguage の句読点 …. 13
EasyLanguageの句読点の一般的な使用例
; セミコロン — 文の末尾に使用します。
( ) 丸括弧 — 算術演算子利用時のグループ化に使用します。
, コンマ — リスト内のアイテムを区切ります。
[ ] 角括弧 — 過去の足の参照、プロット描画をずらして表示、または配列 の要素参照に使用します。
“ ” 複引用符 — テキストまたはラベルをくくります (例: “プロット名”)。
: コロン—宣言部で使用します。
{ } 波括弧—中括弧の中にある記述(コメント)は EasyLanguageの命令とし て認識されません。
// ダブルスラッシュ — ダブルスラッシュの後に続く記述行(コメント 行) は EasyLanguageの命令として認識されません。
重要: EasyLanguageは、一般的に可読性向上の目的に使用される改行、スペース、段落を無視します。
出所:Easy Languageホームスタディコース
5. プロット文 …. 14
チャートにインジケーターを表示させたり、レーダースクリーンのセルに何を表示させるのか。
これを指示するのがプロット分です。
6. インジケーター …. 16
ここからがEasy Languageプログラムを実際に作成しながら学ぶ事になります。
トレードステーション には EasyLanguage で書かれているインジケーター、ショウミー、 ペイントバーそしてストラテジーが予め多数入っています。
これらを読むことで、プログラムの意味や、書き方の理解が早まることでしょう。
練習問題: *01 終値 …. 17
ローソク足チャートの終値を結ぶ線を表示させるプログラムを作成します。
◇解説動画:終値を結ぶPlot文を使ってチャートに描画
7. EasyLanguage ドキュメントのプロパティ設定 …. 20
Easy Languageを使って、チャートに出来高を表示させるプログラムを作成します。
◇解説動画:チャートに出来高を表示させる
8. 算術演算子 …. 25
算術演算子の使い方を学びます。
算術演算子 EasyLanguage はインジケーターやストラテジー等のプログラムの中で加算、減算、乗算、 除算を実行できます:
加算 +
減算 -
乗算 *
除算 /
出所:Easy Languageホームスタディコース
練習問題: *04 ローソク足の実体 …. 26
算術演算子を使って、ローソク足チャートの終値と始値の差を描画するプログラムを作成します。
◇解説動画:算術演算子を使って、ローソク足チャートの終値と始値の差を描画する
9. 演算の順序 …. 28
トレードステーションは加算、減算、乗算、除算の算術演算を 次のように実行します。
乗算と除算は左から右
続いて
加算と減算を左から右
丸括弧を使用するとこの順番を変更することができます。一番内側の丸括弧の中の演算 から先に実行されます。
1 + 5 * 3 + 4 = 20
(1 + 5) * (3 + 4) = 42
1 + (5 * (3 + 4)) = 36
演算順序を決める丸括弧を使用すると、同じ数値と記号を持つ丸括弧を使用しない式の結果と大きく異なります。
出所:EasyLanguage ホームスタディコース(ガイドブック) P28
練習問題: *05 半値 …. 29
学習の目的: 数値式で丸括弧を使用して正しい順序で演算を行う。
詳細: 足の半値を結ぶ線を描画する。
出所:EasyLanguage ホームスタディコース(ガイドブック)
◇解説動画:演算の順序を理解し、足の半値を結ぶ線を描画する
練習問題: *06 出来高加重値幅…. 31
学習の目的: 数値式で丸括弧を使用して正しい順序で演算を行う。
詳細: 足の値幅に出来高を乗算して出来高加重値幅を導く。
出所:EasyLanguage ホームスタディコース(ガイドブック)
クリックすると解説ページが表示されます。
◇解説動画:演算の順序を理解し、出来高加重値幅を描画する
10. 過去の足のデータ参照 …. 32
参照したい予約語や変数に続けて、角括弧[ ] を書くことで過去の価格や値を参照するこ とができます。
例:
5足前の終値:
Close[5]
12足前の値幅:
High[12] – Low[12]
以下も同じ結果になります
(High – Low)[12]
以下は全く違う結果になります
High – Low[12]
一番下の例は現在の足の高値から 12足前の安値の値を減算しています。
出所:Easy Languageホームスタディコース
練習問題: *07 変化比オシレーター…. 33
学習の目的: 過去の足のデータを参照する。
詳細: 現在の足の終値と 5足前の終値の変化比を描画するオシレーター。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。
◇解説動画:過去の足のデータを参照する
チャレンジ問題 2: *08 バンド …. 34
学習の目的: 角括弧を使用して過去の足のデータを参照する。
価格データの周りに 2つの線から形成されるバンドを描画する。
出所:Easy Languageホームスタディコース
※この解説ページで、「11. 数値変数」「ユーザー定義数値変数」 までを解説しています。
◇解説動画:ユーザ定義変数
11. 数値変数 …. 35
ここでは、数値変数の使い方を学びます。
いよいよプログラムっぽくなってきましたね。
皆さん変数のイメージは?
x=y+z
数値変数は一時的に数値を格納する箱です。
※注意
数学的、プログラミング言語的には、もっとしっかりとした説明が必要だと思われます。
しかし、この解説ページが目指すのは、「プログラム初心者が、イージーランゲージを最短で使えるようになる事」です。
そして、「プログラム初心者が、トレードステーションとイージーランゲージを使って、株式投資で利益を得ること」です。
なので、この解説ページでは、あえて 箱 と表現します。
ユーザー定義数値変数…. 35
ユーザー定義数値変数
EasyLanguage ではユーザーが任意に名前を付けた変数を“宣言”するだけで使用すること ができます。
つまり既存の予約語などの語に、ユーザー自身の語を加えることができま す。
ユーザー自身が変数の名前を作成するので、その変数に代入される値に相応しい分 かりやすい言葉で変数名を表現できるでしょう。
ユーザー定義変数の場合、変数名は自動的に認識されるわけではないので、まず変数として宣言した後、宣言済み変数のよう に、数値式を変数に代入します。
宣言済み変数が 1ステップで使用できるのに対しユーザー宣言変数は 2ステップ、変数宣言文と変数代入文の作成、を必要とします。出所:Easy Languageホームスタディコース
※この解説ページで、「練習問題:*09バンド2」も解説しています。
※ひとつ上の解説ページと同じ内容です。
変数宣言文…. 35
変数を使うには、まず変数宣言文で変数の名前や初期値なとを指定します。
変数宣言文
この文は NetChange という名前の数値変数を初期値 0で宣言しています:
Variables: NetChange(0);出所:Easy Languageホームスタディコース
変数代入文…. 35
変数代入文
この文は数値変数 NetChange へ数値式を代入しています:
NetChange = Close – Close[1];出所:Easy Languageホームスタディコース
練習問題: *09 バンド 2 …. 36
学習の目的: ユーザー定義数値変数の変数宣言文と変数代入文を書く。
詳細: チャレンジ問題 2 *08 バンドの問題の一部をユーザー定義数値変数に置き換えて書く。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。※ひとつ上の解説ページと同じ内容です。
練習問題: *10 変化比オシレーター2 …. 38
学習の目的: ユーザー定義数値変数の変数宣言文と変数代入文を書く。
詳細: 練習問題*07変化比オシレーターの問題の一部をユーザー定義数値変数に置き換えて書く。
出所:Easy Languageホームスタディコース
※この解説ページで、「定義済み数値変数」も解説しています。
スポンサーリンク
定義済み数値変数…. 39
定義済み数値変数
定義済み数値変数は、予め EasyLanguageの中に入っている変数です。宣言文で宣言す ることなく、その変数に値や数値式を代入して使用することができます。
100個の変数名が数値変数として予約されています:
Value0 から Value99 まで
Value0 から Value99 までの 100個の変数は自動的に変数として認識されます。後は 変数宣言文を使用して変数に数値式を代入するだけです:
Value0 = 数値式;
例として、Value1 を変化比参照に使うには:
Value1 = Close – Close[1];
定義済み変数は可読性に欠けますが、直ぐに利用できる利便性が高い変数です。特に変数名を意識する必用がない場合に利用すると良いでしょう。
出所:Easy Languageホームスタディコース
※定義済み数値変数は、便利な反面あまり多用すると、どの変数にどの数値を代入したのか分かりにくくなるので注意してください。
◇解説動画:定義済み数値変数を使う
12. 関数の使用 …. 40
出ました。 関数です。
学生の頃この憎き関数に悩まされた方も多いのではないでしょうか?
でも、数学の関数が嫌いだった人でも、Easy Languageの関数は大好きになるかも知れません。
20日間の移動平均を算出するには、次のようなプログラムを書く必要があります。
Value1 = (Close + Close[1] + Close[2] + Close[3] + Close [4] + Close[5] + Close[6] + Close[7] + Close[8] + Close [9] + Close[10] + Close[11] + Close[12] + Close[13] + Close [14] + Close[15] + Close[16] + Close[17] + Close[18] + Close
[19])/20;
ところがEasy Languageの関数を使えば、
Value1 = Average (Close, 20)
たったこれだけで良いのです。
どうですか? 好きになれそうな気がしてきませんか?
Easy Languageは株式投資用のプログラム言語なので、このほかにもテクニカル指標のMACDを算出する関数は、
MACD(Price, FastLength, SlowLength)
などなど、便利な関数が沢山用意されていますので、食わず嫌いは卒業して、夢のある関数の世界をのぞいてみましょう。
関数は EasyLanguageのルールや命令の中で使用できます。
平均や標準偏差等のような一般的な数学式と統計式は予め EasyLanguageに関数 として保存されています。
RSI や ADX 等の一般的なテクニカル分析の計算式も 関数として保存されていま す。
多くの関数でパラメータを指定する必要があります。
ユーザー定義関数を作成することもできます。
出所:EasyLanguage ホームスタディコース(ガイドブック)
◇解説動画:関数の使用
練習問題: *11 モメンタム …. 41
学習の目的: 関数を呼び出す。ユーザー定義数値変数を使用する。
詳細: 10期間の終値でモメンタムインジケーターを描画する。
出所:Easy Languageホームスタディコース
※「モメンタム」とは、株価の勢いを数値化したものです。
詳しくは、マネックス証券さんのページからどうぞ。
https://info.monex.co.jp/lounge/special1/2013/10/08-025239.html
練習問題: *12 ローソク足の実体の平均 ….. 43
学習の目的: 関数を呼び出す。ユーザー定義数値変数を使用する。
詳細: 練習問題*04 ローソク足の実体を応用して、ローソク足の実体の 10期間の平均値を描画する。
出所:Easy Languageホームスタディコース
※この解説ページで、「チャレンジ問題 3: *13 エンベロープ」 までを解説しています。
◇解説動画:関数の使用2
チャレンジ問題 3: *13 エンベロープ …. 45
学習の目的: 関数を呼び出す。ユーザー定義数値変数を使用する。
高値の 20期間移動平均線と安値の 20期間移動平均線を描画する。
出所:Easy Languageホームスタディコース
※ひとつ上の解説ページと同じ内容です。
13. インプット …. 46
インプットはEasy Language開発環境のエディター以外でも値を変更できる変数です。
なーんだ変数かぁ。
でも。
トレードステーションでは非常に便利な変数なのです。
例えば、移動平均線をチャートに描画するプログラムを作成したとします。
何足の移動平均線にするか。 後から変更できれば便利ですよね。
チャート上で右クリックして、「分析テクニックの設定」から自由に変更が可能です。
更に、移動平均線クロスで売買するプログラムを作成したとします。
どの長期と短期の足数の組み合わせが、より多くの利益を生むのか検証したい場合、上の手順で数字を手作業で入れ替えて検証しても良いのですが、疲れそうですね。
トレードステーションでは、この組み合わせを自動でやってくれる「最適化」という機能があります。
この最適化を利用するには、インプット変数でプログラムを書く必要があります。
練習問題: *14 エンベロープ 2 …. 48
学習の目的: 固定値の変わりにインプットを使用する。
詳細: チャレンジ問題 3 *13 エンベロープ を応用して、移動平均線の期間をインプットで宣言する。
出所:Easy Languageホームスタディコース
◇解説動画:インプットの使い方
練習問題: *15 最高値と最安値…. 52
学習の目的: インプットを使用する。関数 Highest と Lowest を使用する。
詳細: 期間 nの最高値と最安値の、期間と価格をインプットにする。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。
解説動画:インプットの使い方2
14. 関係演算子 …. 55
関係演算子とは?
なんこんなに難しい呼び方にしたのでしょうね。
もはやイジメです!
関係演算子は 二つの対象が 「同じか」、「大きいか」、「小さいか」 調べるものです。
下の式はおなじみですね。
4=4
4<5
この = や < の事です。
EasyLanguageは 8つの関係演算子を 持っています。
◎ 6つの代表的な関係演算子はこれです。
◎株式売買のために開発されたEasyLanguageには2つのユニークな関係演算子があります。
○前後の足を比較して交差を判別する関係演算子
Crosses over は
下記 の場合真を返します
現在の足ではx > y であり、1足前では x < y
Crosses under は
下記の場合真を返します
現在の足ではx < yであり、1足前では x > y
上のチャートで 終値が「移動平均線を越えた」、「移動平均線を下回った」等の判定に使えます。
ワクワクしてきませんか? 後もう一息で売買プログラムが書けそうな気がしてきます。
※この解説ページで、「15. If…Then 文」 までを解説しています。
15. If…Then 文…. 57
とうとうやって来ました if…then文 です。
ココまでの知識に加えて、if…thenが理解できれば、「私はプログラムを書けます」と言ってOKです。
”if” は 英語の ”もしも” の if です。
if と then の間に挟まれた 真偽式 が 真 ならば then 以降の命令 を実行します。
もしも ○△ ならば ◆▼ してね
となります。
※上の解説ページと同じ内容です。
解説動画:関係演算子とif…then文
16. EasyLanguage でアラートを出す…. 58
ある条件になったら、下のチャートの様に付箋のようなアラートを表示させる事が出来ます。
練習問題: *16 エンベロープ 2 アラート…. 59
学習の目的: If…then を使用してアラート条件を設定する。
詳細: 練習問題 *14 エンベロープ 2 を応用して、安値が上限線より高くなる、または高値が下限線より安くなった場合にアラートを出す。
出所:Easy Languageホームスタディコース
解説動画:アラート
練習問題: *17 移動平均&バンド …. 62
学習の目的: If…then を使用してアラート条件を設定する 。インプット、変数、関数 を複数利用する。
詳細: このインジケーターは次の 3つの線を描画する: 移動平均線 移動平均線の 1標準偏差上限線 移動平均線の 1標準偏差下限線
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。
解説動画:アラートを出す2
17. ショウミー …. 66
ショウミーはインジケーターと同様にチャート分析ウィンドウに描画する機能です。
イ ンジケーターと異なる点は、ショウミーは初期設定で点描画を行うことです。
任意の条件を満たした足に点描画を行うことで、その条件に該当する足をチャート上で認識しや すくしています。
出所:Easy Languageホームスタディコース
18. If…Then ブロック文…. 67
If…then 文の後には 1 つの実行式しか続けることができませんが、If…then ブロッ ク文の後には複数の実行式を続けることができます。
If…then ブロック文の実行式は begin と end の間に来ます。これは、もし If…then の間の真偽式が真なら begin に 続く命令を実行し、end (セミコロンが続く)が見えるまでやめないようにということを トレードステーションに伝えています。
If 真偽式 then begin
実行式;
実行式;
実行式;
end;
出所:Easy Languageホームスタディコース
練習問題: *18 期間値幅….. 68
解説動画:If…thenブロック文
学習の目的: If…then ブロック文を使用してショウミーを書く。Range 関数 と Highest 関数を使用する。
詳細: 現在の足の値幅が、1足前の 10期間の最大値幅のより大きいとき、ショウミーを描画する。出所:Easy Languageホームスタディコース
解説動画:if…then ブロック文を使用してショウミーを描画する
19. If…Then…Else 文と NoPlot 文…. 70
If…then…else 文は条件分岐を行って処理を分けるときに使用されます。
If…then 文 の真偽式が真の場合には後に続く 1つの命令を実行し、偽の場合には else に続く命令 を実行します。
If 真偽式 then
真の場合の実行式
else
偽の場合の実行式;
出所:Easy Languageホームスタディコース
ショウミーを書くとき、If…then…else 文と NoPlot 文の組み合わせは頻繁に使用さ れます。
足が形成される間に真偽式が真になったが、その後足の終わりにかけて真偽式 が偽に変わった場合に、描画を消すことができます。
If Close > Close[1] then
Plot1( Low, “上昇”)
else NoPlot(1);
例えば上記例では、現在の足の終値が 1足前の終値より高いときショウミーを描画します。
しかし、足の終わりまでに現在の足の終値が 1足前の終値より安くなればショウミ ーの描画は NoPlot 文によって削除されます。
NoPlot 文に続く丸括弧の中の数値 1 はPlot1 を表しています。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。
(チャレンジ問題 4: *19 弱気の終値….71)
※Easy Languageホームスタディコースの目次には記載されていませんが、上の解説ページで説明しています。
学習の目的: If…then…else ブロック文と NoPlot 文を使用してショウミーを描画する。 終値が値幅の 3分の 1より安いときショウミーを描画する。足が確定するまえに条件が偽になった場合に NoPlot 文でショウミーを削除する。
出所:Easy Languageホームスタディコース
動画で解説:If…then ブロック文と If…then…else 文
20. ペイントバー …. 72
ペイントバーは条件を満たす足の実体部分またはヒゲを含めた足全体に色を付けるための機能です。
特に条件を満たす状態が過去から現在にかけて連続して発生しているとき、効果を発揮します。
散発的な事象の認識にはショウミーの方が適しています。
ペイントバーの描画には専用のプロット文を使用します。
PlotPB(開始値, 終了値, “プロット名”);
出所:Easy Languageホームスタディコース
練習問題: *20 モメンタムポジティブ….. 72
学習の目的: PlotPB 文を使用してペイントバーを描画する。
詳細: モメンタム値(モメンタムインジケーターはビルトインされています)が 0より大きい場合ペイントバーを描画すると同時にアラートを通知する。NoPlot 文も使用する。
出所:Easy Languageホームスタディコース
解説動画:ペイントバーでローソク足に色をつける
21. 足の日付参照 …. 74
Easy Languageの日付形式は年の表し方が少々変わっています。
次の例は 2003年 12月 9日を EasyLanguage の日付形式で表しています。
1031209
0を 1900年、100を 2000年として 103は 2003年を表しています。
例えば、000は 1900 年、088は 1988年です。 12 は 12月を表しています。 09 は 9日を表しています。
予約語 Date がこの形式で足の日付を返します。
出所:Easy Languageホームスタディコース
練習問題: *21 曜日 …. 75
学習の目的: 日付参照を使用してペイントバーを描画する。
詳細: インプットで指定した曜日の足にペイントバーを描画する。
出所:Easy Languageホームスタディコース
22. 足の時間参照 …. 76
インターバルに関わらず全ての足には時間情報が付加されています。
EasyLanguage は 24時間表記でその時間情報を参照することができます。
予約語 Time は次の形式で足の 時間を返します。:
Time > 1500
この真偽式は午後 3時以降に真になります。
出所:Easy Languageホームスタディコース
※この解説ページで、「チャレンジ問題 5: *22 任意時間」 までを解説しています。
解説動画:ローソク足の日付と時間を参照する2
23. 論理演算子 …. 77
論理演算子は複数の真偽式を繋げる役割を果たします。
使用された論理演算子によって、全体の式が真であるためには、個々の真偽式のいくつかが真であればよいのか、あるい は、すべてが真でなければならないのかが決まります。
AND : 2つの真偽式が真であれば式全体が真になります。
High > High[1] AND Close > Close[1]
OR : 一方の式が真であれば式全体が真になります。
High > High[1] OR Close > Close[1]
論理演算子は左から右に計算されます。またANDはORに優先します。丸括弧で計算
式の評価の順番を変更することもできます。出所:Easy Languageホームスタディコース
チャレンジ問題 5: *22 任意時間…. 78
学習の目的: 時間と論理演算子を使用してペイントバーを描画する。
前日 15時 30分から本日 10時 30分までの足の半値から安値までをペイントバーで描画する。
※上の解説ページと同じ内容です。
24. ストラテジー …. 79
やっとたどり着きました。
私たちがEasy Language学習している最終目的は、
トレードステーションに「自動売買をさせる事」又は「投資戦略のシミュレーション」です。
ストラテジーは、任意のルールに基づいた少なくとも 1つの売買文から成り立っていま す。ストラテジーは複数の売買文で構築することもできます。または 1つ 1つ別のストラテジーとして作成して、別々にチャート分析ウィンドウに適用することもできます。
出所:Easy Languageホームスタディコース
※この解説ページで、「ストラテジーの注文シンタックス」 までを解説しています。
解説動画:ストラテジー
ストラテジーの注文シンタックス …. 79
EasyLanguageは注文を発注することができる 4つの注文シンタックスを持っています:
Buy: 新規買い。ポジションを保持していない場合、新規で買いポジションを建 てます。売りポジションを保持している場合、ドテンして買いポジションを建て ます。
SellShort: 新規売り。ポジションを保持していない場合、新規で売りポジショ ンを建てます。買いポジションを保持している場合、ドテンして売りポジション を建てます。
Sell: 売却。買いポジションを決済します。
BuyToCover: 買戻し。売りポジションを決済します。
注文シンタックスは次のタイミングで発注されます:
Next bar at market = 次の足の始値
Stop = 次の足でストップ注文条件を満たした瞬間
Limit = 次の足で指値注文条件を満たした瞬間
This bar on close = 現在の足の終値(バックテストのみ、リアルタイムでは次の足の始値で発注)
出所:Easy Languageホームスタディコース
練習問題: *23 ブレークアウト…. 81
代表的な「ブレークアウト戦略」をプログラミングします。
学習の目的: ストップ注文を発注するストラテジーを書く。 詳細: 8期間の最高値から一定値の価格に買いストップ注文を置く。また 8期間の最安
値から一定値の価格に売りストップ注文を置く。出所:Easy Languageホームスタディコース
解説動画:ブレイクアウト戦略をプログラミングする
練習問題: *24 移動平均交差…. 88
実践的なエクジットの条件も追加します。
学習の目的: ストラテジー関連の予約語を使用してストラテジーを書く。
詳細: 短期移動平均線が長期起動平均線を上抜いたら買い、下抜いたら売り。
ポジショ ンを保持してから任意の足数過経後、そして任意の含み益に到達していなければ、ポジションを決済する。
出所:Easy Languageホームスタディコース
解説動画:ゴールデンクロス戦略をプログラミングする
25. 真偽変数 …. 91
真偽変数を使うと真偽式を参照しやすくなります。他の変数同様、変数に代入された式 は 1つの足で 1度だけ計算すればよく、同じ足で何度参照しても重複して計算されるこ とがないので、変数の使用は EasyLanguageの効率を上げます。
真偽変数の利点:
計算効率を上げる
タイプミスを減らす
可読性を上げる
注釈: EasyLanguageのプログラムの中で宣言と代入が行われた変数だけが参照することができる変数です。
出所:Easy Languageホームスタディコース
ユーザー定義真偽変数…. 91
ユーザー定義真偽変数 EasyLanguageではユーザー定義数値変数だけでなくユーザー定義真偽変数を使用するこ とができます。
ユーザー自身が変数の名前を作成するので、その変数に代入される値に 相応しい分かりやすい言葉で変数名を表現できるでしょう。
ユーザー定義数値変数と同等、まず始めにユーザー定義真偽変数を宣言します。しかし ユーザー定義数値変数と異なり、ユーザー定義真偽変数は真または偽で初期化する必要 があります。通常は”ある条件が偽になれば”ではなく”ある条件が真になれば”と思考するので、変数は偽で初期化します。その後に変数へ真偽式を代入する代入文を書きます。
出所:Easy Languageホームスタディコース
変数宣言文…. 91
変数宣言文 この宣言文は偽で初期化した UpBar という名前の真偽変数です:
Variables: UpBar(false);
1つの宣言文の中で、複数の真偽変数を宣言することができます。それだけでなく、次 のように数値変数と真偽変数を同じ宣言文の中で宣言することもできます:
Variables: NetChange(0), UpBar(false), DownBar(false);
出所:Easy Languageホームスタディコース
変数代入文…. 91
変数代入文 UpBar 変数へ真偽式を代入しています:
UpBar = Close > Close[1];
ユーザー宣言数値変数と同様、ユーザー宣言真偽変数を使用する準備が整うまでには 2つのステップが必要です。宣言、そして代入です。
出所:Easy Languageホームスタディコース
練習問題: *25 モメンタム交差…. 92
学習の目的: MRO 関数とユーザー定義真偽式を使用する。
詳細:モメンタムが現在の足を含めて 4足連続で 0を下回っておらず、現在の足で 0を 上抜いたとき買い、またはモメンタムが現在の足を含めて 4足連続で 0を上回っておら ず、0現在の足でを下抜いた時に売る。モメンタムが 2足連続で下降したら決済売り(転売)、2足連続で上昇したら決済買い(買戻し)を行う。
出所:Easy Languageホームスタディコース
解説動画:モメンタム交差の投資戦略をプログラムする
チャレンジ問題 6: *26 転換点…. 95
学習の目的: 真偽式、指値注文のシンタックス、足のパターン認識を使用してストラテ ジーを書く。
足のパターンを定義して、売買シグナルの条件にする。出所:Easy Languageホームスタディコース
定義済み真偽変数…. 96
定義済み数値変数は
Value0 から Value99 まで 100個あります。
同様に予め名前が定 義されている真偽変数も 100個あります。:
Condition0 から Condition99 まで
これらの名前は自動的に真偽変数として認識されるので、真偽式を代入するだけで直ぐ に使用できます:
変数代入文
Condition0 = 真偽式;
Condition1 は、現在の足の終値が 1足前の終値より高いかどうかという真偽式の評価 結果を参照しています:
Condition1 = Close > Close[1];
出所:Easy Languageホームスタディコース
26. ビルトインストップ…. 97
注文に関する内容です。 よく覚えておきましょう。
EasyLanguage は、頻度が高い決済注文の方式を予め定義したビルトインストップの予約語を幾つか持っています。
これまでの注文文は次の足で注文を発注していましたが、ビ ルトインストップの予約語はティックバイティック([ストラテジーの設定]の[計算]タブ にある[イントラバー注文の作成および計算を有効にする]の設定如何に関わらず)に評価 を実行します。
つまりエントリーした足でエグジットすることもできます。
(中略)
ビルトインストップの利点は、予め定義された短い語だけでストラテ ジーにリスク管理を加えることができることです。
更にビルトインストップは、1つの 予約語で決済売りと決済買いの両方を実行します。
ビルトインストップの計算をポジション単位にするか、株数単位にするか設定する予約語です。
SetStopPosition – ポジション全体に対して計算
SetStopShare or SetStopContract – 株数に対して計算
出所:Easy Languageホームスタディコース
ビルトインストップの予約語には次の 5つがあります。
SetBreakEven – 同値降り。含み益が発生したとき、成行注文をエントリー価格に発注します。
SetDollarTrailing – 金額トレーリングストップ。最大含み益から任意の金額分離れた価格にストップ注文を発注します。最大含み益が増えれば、それだけ 逆指値価格も上がります(買いポジションの場合)。
SetPercentTrailing – パーセントトレーリングストップ。任意の含み益到達後、最大含み益から任意のパーセント分離れた価格にストップ注文を発注します。 最大含み益が増えれば、それだけ逆指値価格も上がります(買いポジションの場合)。
SetProfitTarget – 利益確定。任意の利益確定目標額の価格に指値注文を発 注します。
SetStopLoss – 損切り。任意の損切り額の価格に達したとき、成行注文を発注します。
出所:Easy Languageホームスタディコース
ビルトインストップの予約語を使用しなくても、同様の決済注文を自分でプログラムすることが出来ます。
ただし、よほどの理由がない限り「ビルトインストップの予約語」を使用する事をオススメします。
※ビルトインストップは、1つの 予約語で「決済売り」と「決済買い」の両方を実行します。
※この解説ページで、「練習問題: *27 ブレークアウト 2」 までを解説しています。
解説動画:リスク管理と損益確定をプログラミングする。「利益確定」「損切り」「トレーリングストップ」
練習問題: *27 ブレークアウト 2…. 98
学習の目的: ストラテジーでビルトインストップを使用する。
詳細: 練習問題 *23 Breakout を応用して、8期間の最高値から一定値の価格に買いスト ップ注文を置く。
また 8期間の最安値から一定値の価格に売りストップ注文を置く。ビルトインストップで決済を行う。出所:Easy Languageホームスタディコース
より実践的な実習内容になってきました。
クリックすると解説ページが表示されます。※上の解説ページと同じ内容です。
練習問題: *28 RSI OB_OS ….100
学習の目的: HighestBarと LowestBar関数と、ビルトインストップを使用してストラテジーを書く。
詳細: RSIが 50より小さく直近の RSI の 7期間の中で3足前以前に RSIの最安値を付けたとき買い、RSIが 50より大きく直近の RSIの 7期間の中で 3足前以前に RSIの最高値を付けたとき売り。ビルトインストップを置く。出所:Easy Languageホームスタディコース
解説動画:RSIによる株式投資戦略をプログラムする。
27. 複数データ: 複数データ系列の参照…. 102
「A銘柄」、「B銘柄」そして「C銘柄」の値動きを分析して、A銘柄の売買注文を出す。 そんな事も出来ます。
1つのチャート分析ウィンドウには最大50までのデータ(分足など時系列足種の銘柄)を 追加することができます。
シンボルにはデータ番号” Data1”から” Data50”までが割り振られます。
インジケーターは Data1 以外の計算をプログラム中で実行できるだけでなく Data1 以外の計算結果も描画することができますが、ストラテジーは Data1 以 外の計算をプログラム中で行うことができるだけで、売買シグナルは Data1 に対してのみ発注することができます。出所:Easy Languageホームスタディコース
※この解説ページで、「練習問題: *29 複数データ系列移動平均線」 までを解説しています。
解説動画:複数銘柄による株式投資戦略をプログラムする
練習問題: *29 複数データ系列移動平均線….103
学習の目的: 複数データ系列の参照。
詳細: Data1の終値が Data1の 20期間の終値移動平均線より高く、Data2の終値がData2の 50期間の終値移動平均線より高いとき買い。出所:Easy Languageホームスタディコース
※上の解説ページと同じ内容です。
28. ダイナミック設定…. 105
インジケーターの色や太さなどを指定します。
プロット文の描画色、太さ、セルの背景はそれぞれ
SetPlotColor、SetPlotWidth、 SetPlotBGColor という予約語を使用して設定することもできます。
チャート分析ウィンドウとレーダースクリーン : SetPlotColor(プロット番号,色);
チャート分析ウィンドウ : SetPlotWidth(プロット番号, 太さ);
レーダースクリーン : SetPlotBGColor(プロット番号, 色);
出所:Easy Languageホームスタディコース
◎色を設定
SetPlotColor(プロット番号, 色)
※プロット番号は、 Plot番号の 1-99 までを指定できます。
◎色のパラメーター
EasyLanguage色を指定する事が出来ます。(16色)
Black
Blue
Cyan
Green
Magenta
Red
Yellow
White
DarkBlue
DarkCyan
DarkGreen
DarkMagenta
DarkRed
DarkBrown
DarkGray
LightGray
使用例 : SetPlotColor(1, yellow);
※その他 数値を指定することも出来ます。
※この解説ページで、「練習問題: *30 出来高検知」「29. 色のグラデーション 」までを解説しています。
練習問題: *30 出来高検知 ….106
学習の目的: SetPlotColor と SetPlotWidthを使用する。
詳細: 出来高に応じて、インジケーターの描画色と描画の太さを変化させる。出所:Easy Languageホームスタディコース
※上の解説ページと同じ内容です。
29. 色のグラデーション …. 108
色や太さだけで無く、色にグラデーションを付けることも出来ます。
◎例
GradientColor(Value1, -10, 10, Red, Green);
Value1 の値が-10 から 10 の範囲にあるとき、色は赤から緑の範囲でグラデーションします。
出所:Easy Languageホームスタディコース
※上の解説ページと同じ内容です。
30. レーダースクリーンのプロット文 …. 109
これまでは、主にチャートにインジケーターを表示する実習をしてきましたが、ここではレーダースクリーンに適応させます。
※この解説ページで、「Exercise: *31 ローソク足の実体の平均 RS」までを解説しています。
Exercise: *31 ローソク足の実体の平均 RS….110
学習の目的: レーダースクリーン用のインジケーターを書く。
詳細: 足の実体の平均値に応じて強気と弱気という文字列をセルに表示します。
同時に 実体の平均値もセルに表示します。セルの背景色は実体の平均値に応じてグラデーションするようにします。出所:Easy Languageホームスタディコース
※上の解説ページと同じ内容です。
31. 変数: 値の再代入…. 114
ある特定の条件になったら、変数の値を置き変える。
プログラムには、とても大切なテクニックです。
変数は、新しい値が再代入されるまで、過去の足から現在の足へと値を保持します。
変 数代入文が条件式を伴っていなければ、足毎に変数には新しい値が再代入されますが、 次のように、変数代入文が条件式を伴っていれば、条件式が真の場合にだけ変数に新し い値が再代入されます。
例:
If Time = SessionFirstBarTime(1, 1) then
Value1 = Close – Close[1];
日中足インターバルのチャートにおいて、現在の足の時間が 1番目のセッションの開始 時間の場合、つまり 1日に 1度だけ 1番目のセッションの開始時間の足で、現在の足の 終値と 1足前の終値の差分を計算して Value1 に代入します。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。※この解説ページで、「練習問題: *32 日中足の最高値と最安値」までを解説しています。
練習問題: *32 日中足の最高値と最安値 ….115
学習の目的: セッション時間の参照と変数への値の再代入。
詳細: 日中足チャートに、1番目のセッション時間の開始から現在の足までの最高値と最安値を描画する。
出所:Easy Languageホームスタディコース
この実習で学ぶプログラムは、実践のデイトレードで役立ちます。
※上の解説ページと同じ内容です。
32. 変数: 事象の発生回数…. 117
この事象は過去に何回発生したのか?
システムトレードにとって大切な、「銘柄のクセを見つける」為に有効な方法を学べます。
※この解説ページで、「練習問題: *33 連続」までを解説しています。
練習問題: *33 連続 ….118
学習の目的: 事象の発生回数をカウントするために変数を使用する。
詳細: 終値の連続上昇と下落をカウントして表示する。RadarScreen用。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。※上の解説ページと同じ内容です。
※上の解説ページと同じ内容です。
練習問題: *34 高値と安値の更新 ….122
学習の目的: 事象の発生回数をカウントする変数とビルトインストップを使用するストラテジーを書く。
詳細: 安値の連続下落回数がインプットの LowsToBuy で設定した数以上になったとき 買い指値を発注、高値の連続上昇回数がインプットの HighsToSell で設定した数以 上になったとき売りの指値注文を発注する。
指値の価格はインプットの Pts で設定し たポイント分を、現在の足の終値の上下に+/-して置く。
ビルトインストップの利益確 定注文の利益額を ProfTgt で、損切り注文の損切り額を StopLoss でインプット宣言する。
出所:Easy Languageホームスタディコース
より実践的な実習内容になってきました。
33. EasyLanguage からのアウトプット表示: プリントログ…. 125
トレードステーション は EasyLanguageの Print 予約語を使用して書かれたプリント文を [印刷ログ]ウィンドウにアウトプットすることができます。
[印刷ログ]ウィンドウは初期設定でトレードステーション本体下部に表示されています。
メインメニューの[表示]→[EasyLanguage 印刷ログ]で表示することもできます。
(中略)
Print(“日付”,Date,“値 1”,Value1,“条件 1”,Condition1);
このプリント文は、日付、Value1 の値、そして Condition1 の値(真または偽)と、それぞれのラベル文字をプリントログウィンドウにアウトプットします。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます。
※この解説ページで、「EasyLanguage からのアウトプット表示: 分析コメント」「練習問題: *35 モメンタム交差 2」までを解説しています。
34. EasyLanguage からのアウトプット表示: 分析コメント…. 126
分析コメントウィンドウは、インジケーターやストラテジーのプログラムの中のコメン タリー文に書かれた、数値、真偽値、文字列を表示することができます。
分析コメント ウィンドウはインジケーターやストラテジーが入っているチャート分析ウィンドウ、レーダースクリーン、またはオプションスクリーンウィンドウから開くことができます。
(中略)
コメンタリー文は次のように書くことができます:
Commentary(“日付”,Date,“値 1”,Value1,“条件 1”,Condition1);
このコメンタリー文は日付、Value1 の値、そして Condition1 の値(真または偽)と、それぞれのラベル文字を分析コメントウィンドウにアウトプットします。
出所:Easy Languageホームスタディコース
コメントの例です。
クリックすると解説ページが表示されます
※上の解説ページと同じ内容です。
練習問題: *35 モメンタム交差 2….127
学習の目的: プリント文とコメンタリー文を使用して、プリントログウィンドウと分析 コメントウィンドウに情報をアウトプットする。
詳細: 練習問題*25 Momentum Crosを応用する。
モメンタムが現在の足を含めて 4足連 続で 0を下回っておらず、現在の足で 0を上抜いたとき買い、またはモメンタムが現在 の足を含めて 4足連続で 0を上回っておらず、0現在の足でを下抜いた時に売る。
モメ ンタムが 2足連続で下降したら決済売り(転売)、2足連続で上昇したら決済買い(買戻し)を行う。
出所:Easy Languageホームスタディコース
クリックすると解説ページが表示されます
※上の解説ページと同じ内容です。
付録 A…. 131
トレードステーション 開発環境….131
トレードステーション 開発環境の解説です。
トレードステーション開発環境はインジケーター、ストラテジー、関数などの EasyLanguageドキュメントを新規に作成したり編集したりすることに必要な全ての機能を備えています。
(中略)
トレードステーション開発環境は主に、ソースコードを書き込むエディター、アウトプ ットバー、ツールボックス、プロジェクト、Resource View、アウトライン化、プロパティ、辞書等の機能で構成されています。
エディターが機能の中心に、アウトプットバー はトレードステーション開発環境の下部に配置されています。
辞書等の機能はエディターの左右に格納されており、タブをクリックすることで前面に引き出すことができます。
出所:Easy Languageホームスタディコース
マネックス証券さんが開催した、「EasyLanguage 1日集中セミナー」(有料の会場型セミナー)では、講師の方が「トレードステーション開発環境のエディターは優秀なので、他のエディターを使用するメリットはあまりない」とおっしゃっていました。
付録 B: ….137
Volume と Ticksを中心とした、予約語についての解説です。
一般的に Volumeと言えば出来高を、Ticksと言えば約定数を表します。
EasyLanguageの 予約語 Volumeと予約語 Ticksの意味合いは少々異なり、ウィンドウの種類、銘柄の種 類、または銘柄のインターバルによって、返す値は異なります。
Ticksは更に予約語UpTicksと予約語 DownTicksの定義で分けることができます。
出所:Easy Languageホームスタディコース
付録 E: チャレンジ問題の模範解答….141
文字通り、チャレンジ問題の模範解答がまとめて記載されています。
(付録Bの次が付録Cでは無く、付録Eになっているのは、テキストの誤植だと思います)
追加 – 練習問題 … 147
追加練習問題: *100 EMAインジケーターを 1プロットテンプレートを利用し て作成する …. 147
追加練習問題: *101 MACDインジケーターを 2プロットテンプレートを利用し て作成する …. 150
追加練習問題: *103 RSI インジケーターを買われ過ぎ売られ過ぎテンプレート を利用して作成する …. 154
追加練習問題: *104 Kairi インジケーターをゼロベーステンプレートを利用し て作成する …. 158
追加練習問題: *200 BuyNextBarAtMarket ストラテジーを買い成行注文テンプ レートを利用して作成する ….. 162
追加練習問題: *201 乖離率ストラテジーを乖離率インジケーターと買い成行 注文テンプレートを利用して作成する …. 164
追加 – 主要な EasyLanguage用語・構文…. 166
Input
インジケーターやストラテジーのインプット設定で変数値を変更することができ る変数を宣言したり初期化するためのインプット変数宣言予約語。
(例) Inputs: Series(Close), Value(5), TrueOrFalse(False), Str(“文 字列”);
Variable
インジケーターやストラテジー内で使用することができる変数を宣言したり初期 化するためのユーザー変数宣言予約語。
(例) Variables: Series(Close), Value(5), TrueOrFalse(False), Str(“文字列”);
Condition1
定義済み真偽変数。Condition0 から Concition99 まで 100 個の変数が変数 宣言と初期化をしなくても利用できる。
(例) Condition1 = Close[0] Crosses Over AverageFC(Close,8) ;
Value1
定義済み変数。Value0 から Value99 まで 100 個の変数が変数宣言と初期化 をしなくても利用できる。
(例) Value1 = High[1] – Low[1];
Buy next bar at market 新規買い成行注文を発注する。
(例) Buy ( “新規注文名 ” ) next bar at market ;
Sell next bar at market 決済売り成行注文を発注する。
(例)
Sell ( “決済注文名 ” ) next bar at market ;
マネックス証券が公開している解説動画
EasyLanguage入門。まずはこちらからどうぞ
著者が徹底解説!「EasyLanguageプログラミング入門」
【トレードステーション】イージーランゲージで自動売買(着実にステップアップするには、1番のオススメ)
この記事を書いた人
ゆたかドットらいふ編集部
あしおゆたか
投資歴20年の個人投資家
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら
https://tradestation.life/blog/