今年に入ってから株に興味を持ち始めて色々やってみたものの、
成果が出なくてこれは自動売買でやらないと無理だなという結論に達し
3か月ほどマネックス証券のトレードステーションを触ってみたので
良い機会なので文書化してみようかと思います。
EasyLanguageはEasyではない
結論から先に言うと、ゲームなり業務なりで何らかのアプリケーションを作った経験のある人でないとEasyLanguageを扱うことは難しいかと思います。
(経験者であれば、やや仕様に癖があるもののアジャストはさして難しくないかなあと。)
トレードステーションはEasyLanguageにてチャートを自作したり
ストラテジーを組んで自動売買できたりします。
そのEasyLanguageなのですが、
言語仕様がJavaScriptでもVBでもない独特のものとなっています。
(Pascalという言語が基になっているような記述を見つけたのですが、それともやや仕様が異なるようです)
JavaScriptと異なるところ
恐らく最も利用者が多いであろうJavaScriptとの違いを見てみます。
基本構文
JavaScriptとかだと処理の単位をブレース{}で括りますが、EasyLanguageでは
BEGIN~ENDで括ります。
JavaScriptの場合
var view = 1; var ro = 0; if (ro === 0) { view = 2; }
EasyLanguageの場合
vars: view(0), ro(1); if ro = 1 then begin view = 2; end;
書いていて気づきましたが、EasyLanguageの場合は代入と比較が同じ記法(=)ですね。
セミコロンの扱い
命令の最後にセミコロン(;)を付与するのは同じですが、EasyLanguageの場合やや癖があります。
とくにIF~ELSE文が絡む場合は注意が必要です。
if UPTICKS >= Sikii then BEGIN Alert(!("上昇")); END ELSE if AnswerUP >= Sikii then BEGIN Alert(!("上昇出来高合計")); END ELSE BEGIN for ii = 0 to VwapAvg - 1 BEGIN if ii < BarCount then BEGIN PriceW += (AvgPrice[ii] * AnyVol[ii]); END; END; END;
基本は命令の最後に付与しますが、ネストする場合はそれぞれの最後に付与する形になります。
IF文をBEGIN~END句なしに記述すると以下の通りとなります。
IF RoundFlg = 0 then Answer = PriceW / ShareW ELSE IF RoundFlg = 1 then Answer = Round(PriceW / ShareW, 0) ELSE Answer = Round(PriceW / ShareW, 1);
最も、エディター(開発環境)でシンタックスエラーを指摘してくれるのですぐに慣れるかと思います。
ちょっと長くなりそうなので記事を分けます。