EasyLanguage研究所

マネックス証券が提供する株式トレードツール「TradeStation」専用のプログラミング言語である、EasyLanguageについて。特にオブジェクト指向型EasyLanguage(OOEL)の情報を中心に。

銘柄を変えただけで、チャートに適用している分析テクニックやストラテジーのパラメータも自動変更する方法

今回は、EasyLanguage全般に関する小ネタです。(小ネタといいつつ、結構使えると思います)

ストラテジーのバックテストで、複数の銘柄ごとに最適なパラメータを得られたけれど、以下のような悩みをお持ちの方、必見。

・チャートで銘柄を変えるごとにストラテジーのパラメータ値を変えなきゃいけないのが面倒
・ストラテジーとセットで使う分析テクニックのパラメータ値も手動で合わせなきゃいけないのが面倒

通常は、ストラテジーに入力パラメータを設定

例えば移動平均線を利用した分析テクニックやストラテジーを自作する場合、計算足数などのパラメータはInputsで入力パラメータ化する事が多いと思います。

Inputs:
    inLength(5);

Vars:
    varAvg(0);

varAvg = AverageFC( Close, inLength );
Plot1( varAvg, "移動平均線" );

基本的にはこれで良いのですが、バックテストで銘柄コードごとにinLengthの最適値が得られているなら、If記述を活用する事により、手作業で入力パラメータを設定しなくてもEasyLanguage上で現在適用中の銘柄を自動判断し、対応するパラメータを使ってくれます。

例えば、以下のように銘柄ごとの「移動平均線の計算足数」が決まっている場合・・

銘柄コード Length
1111-TS 5
2222-TS 14
3333-TS 99
(その他) 20

Symbolで現在適用されている銘柄コードを取得できるので、以下のようなEasyLanguageになります。

Vars:
    varLength(0),
    varAvg(0);

If Symbol = "1111-TS" then
    varLength = 5
Else If Symbol = "2222-TS" then
    varLength = 14
Else If Symbol = "3333-TS" then
    varLength = 99
Else
    varLength = 20;

varAvg = AverageFC( Close, varLength );
Plot1( varAvg, "移動平均線" );

こちらで書くメリットは、自作した分析テクニックやストラテジーを、どの銘柄でも、手作業による設定不要で、使える点です。

例えば、「1111-TS」の日足チャートにこの分析テクニックを適用すると、5日移動平均線が描画されますが、その状態で銘柄コードを「2222-TS」に変更すると、移動平均線が14日に自動で変更されるというわけです。

さらに、レーダースクリーンとチャートをカスタムシンボルリンクで繋げておけば、銘柄コードをクリックするごとに、最適化されたパラメータの分析テクニック&ストラテジーを適用したチャートが表示される・・といった事もできます。

色々と応用が利くので、ぜひ試してみてください。