EasyLanguageに限らずプログラミング学習において、基本構文をだいたい覚えた後に役立つものは「サンプルコード」ではないでしょうか?
Web上にも(僕のサイトを含めて)多数のサンプルコードが転がっていると思いますが、「これからEasyLanguageを勉強するぞ!」という方にオススメなのが・・
トレステ公式のサンプルコードをたくさん読むこと
です。
実は、トレードステーションに初期搭載されている「インジケーター」「ショウミー」「ストラテジー」「関数」の多くが、中身となるEasyLanguageコードを開いて読む事ができるんです。
僕自身、「逆引きEasyLanguage辞典」を作成した時は、ほぼ全ての初期搭載EasyLanguageコードを読み漁りました(笑)
今日はそんなコード達の中から、「これはEasyLanguageを勉強し始めた方のサンプルとして良いな」と感じたものを計23個、ご紹介していきます。
基本構文(IfやForなど)が活用されている例
For構文の動きが知りたいなら、関数「Summation」はいかがでしょうか。指定期間の価格をすべて合計してくれる関数です。PriceとLengthを適当に決めて、Sum変数の内容を追ってみましょう。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月24日
Forの内部にIfを組み合わせて使うと、条件を満たしたものだけを処理できます。関数「SummationIf」では、”条件を満たしたものだけを足し合わせる”という処理を実現しているので、参考にしてください。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月28日
For構文の繰り返しはよく使うけれど、While構文ってどういう時に使うの?そんな時は関数「FindBar」を見てみましょう。”繰り返しがいつ終わるか分からない”時に扱いやすいのが、While構文です。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月29日
変数の取り扱いなど
EasyLanguage では、前の足における変数の値を保持します。これ、プログラミング経験者ほど最初は戸惑うのではないでしょうか?ショウミー「Consecutive Ups(連続上昇バー)」でCounter変数の動きを見ると、動作が分かりやすいかなと思います。#トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月24日
関数「SummationFC」は、Summationの高速版。AverageFCの内部でも使われていますが、変数値を保持するEasyLanguageならではの書き方で、計算の回数を大幅に減らしています。(Forで計算するのは最初の1足のみ) #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月25日
変数は、数値や文字列だけでなく式の真偽値を格納する事もできます。ショウミー「VolumeBreakout(出来高増大)」は、先に条件式の真偽を変数に格納してからIf分岐させています。真偽値変数を使った方がコードが読みやすくなる場合もあるので是非チェックを。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月24日
ショウミーを自作してみよう!
ショウミーを始めて作る時は、ショウミー「Gap Up Bar(ギャップアップ足)」を参考にしてみてください。条件の書き方、サインをプロットする方法、アラートの出し方、条件を満たさない時の書き方・・多くの事がこれ1つに詰まっています。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月23日
関数の自作を始めるなら・・?
超簡単なコードを見てみたいなら、「TrueHigh」「TrueLow」「TypicalPrice」「Momentum」「BarNumber」あたりをどうぞ。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月24日
また、初めて関数を作りたい時は、関数「Momentum」(インジケーターではなく関数の方)などいかがでしょう?コメント除けば2行だけの超簡単な関数なんですが、引数(Inputs)や戻り値の書き方が分かるので参考になりますよー。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月23日
関数には、数値や文字列などだけでなく配列も渡すことができます。書き方については、関数「SummationArray」が例としては最適かなと思います。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月28日
関数は通常1つの戻り値しか返しませんが、”多出力関数”形式だと複数の値を返す関数として作成できます。多出力関数は複雑なコードになりやすいですが、関数「CloseD」などでも利用されている「OHLCPeriod」がサンプルとして分かりやすいかなと思います。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月31日
ストラテジー作りのTips
ストラテジー「MovAvg Cross LX(単純移動平均クロス:買いエントリー)」の入力パラメータConfirmBarsを使うと、「価格が移動平均線を上抜けてから●本の足が経過した時に買い」という設定ができます。応用すれば、より柔軟なストラテジーの作成が可能に。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月27日
ストラテジー「Bollinger Bands LE(ボリンジャーバンド)」では、成行でなく逆指値でのエントリーになっています。下バンドの価格を元にした逆指値エントリーの書き方となっているので、参考にしてみてください。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月26日
ストラテジー「_StoOrLim Exit(指値・逆指値:エグジット)」は、価格や株数を決めて指値/逆指値の注文が出来ますが、「買いか売りか」「指値か逆指値か」を入力パラメータ指定できる点に注目。これを応用すると、ストラテジー作りや検証の幅が広がります。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月27日
ストラテジー「TimeExit(Bars)LX(経過足数による手仕舞い)」は、エントリーから何足経過したか?を取得できるBarsSinceEntryを使った簡単なストラテジー。決済する足を明示的に設定できるので、エントリー系ストラテジーの ”テスト” でも使いやすいです。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年6月1日
ストラテジー「_Percent Exit Pair(割合%エグジット)」は、SetProfitTargetとSetStopLossを設定してくれますが、MarketPositionの状態に応じてIf分岐しています。エントリー価格(EntryPrice)を扱う場合の書き方として非常に参考になります。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月26日
ストラテジー「Bollinger Bands LE(ボリンジャーバンド)」では、ボリンジャーバンドの計算用価格とバンドタッチの判定用価格を別々に設定できます。敢えてこのようにInputを分ける事も、使い勝手の良いストラテジーを作るうえで欠かせません。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月25日
予約語や関数には、現在チャートに設定されているストラテジーの結果を取得できるようなものも多数あります。関数「DailyWinners」は取引の勝敗を取得できますが、内部的にEntryDateやPositionProfitなど使っているのでストラテジー系関数の参考になるかと。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月31日
あのインジケーター、コードを見ると分かる事
「ストキャスティクス」系インジケーターのコードを見ると、FastK(%K)/FastD(%D)/SlowK/SlowD(スロー%D)と4つの値がありますが・・SlowKって何? ・・これは、SlowK=FastD(%D)です。関数「Stochastic」の最終行を見てみると、確認できます。 #トレステ搭載コードで学ぶ #EasyLanguage pic.twitter.com/mU53NmZmqx
— しゅん@ELプログラマー (@eltraders) 2018年5月30日
RSIとRSI_JPの違いは移動平均線の計算方法・・ですが、どうもRSI_JPはレーダースクリーンでの利用を前提としているようです。買われ過ぎ/売られ過ぎにチャートで色が付かないのはこのため。こういった事もコードが読めれば自分で原因を特定できます。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月29日
レーダースクリーンのみで使用可能にしたい(チャートは×)・・そんな時は GetAppInfo( aiApplicationType ) で判定を。インジケーター「Bollinger Bands(ボリンジャーバンド)」では、レーダースクリーン時のみ%Bを表示させていますので参考にどうぞ。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月30日
関数「BollingerBandWidth」は、ボリンジャーバンド幅を計算してくれる関数。幅の計算方法もそうですが、Avg>0とゼロ除算を回避している点にも注目してみてください。(ゼロで割るとエラーになるので) #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月27日
デイトレード用など分足でしか正しく動かないコードは、日足などに挿入した時エラーを発生させるのが親切。インジケーター「New 52 Wk High(新52週高値)」のOnce構文内を参考にしてみてください。BarTypeによる足種判定と例外エラー発生の書き方がそこに。 #トレステ搭載コードで学ぶ #EasyLanguage
— しゅん@ELプログラマー (@eltraders) 2018年5月25日