EasyLanguageで変数の値が変わらない?IntrabarPersistを知っておこう

これ、わたしも悩みました。
トレードステーションのEasyLanguageで、「変数の値がどうもオカシイ」と思うことがあったら、これが原因かもしれません。
IntraBarPersist
IntraBarPersist(イントラバーパーシスト)という予約語があります。この予約語にはこんな意味があります。
IntrabarPersist (Reserved Word)
変数の値 (または配列要素) がティックごとに更新できることを示す変数 (または配列) を宣言するときに使用する予約語。デフォルトでは、変数や配列要素の値は、各バーの終了時にのみ更新されます。この予約語は、変数や配列要素の値がイントラバーで更新されることを宣言します。
実はEasyLanguageでは、変数の値と配列の中身はバーの終了時にのみ更新されます。
個人的には意味の分からない仕様なのですが、、、このことを知らず(というか、むしろどこに書いてあるんだこんなこと!)、何時間も悩んだことがあります。
IntraBarPersistの使い方
変数を定義する際に、変数の前にこのようにつけます。
Variable: IntrabarPersist Count(0);
Count = Count + 1 ;
Persistって?
ちなみに、「Persist」という単語はこのような意味らしいのですが、、、なんでIntraBarPersistという単語で変数の値がティックごとに更新されるという意味になるのか、私にはよく分かりません。
自動詞
1 «…に/…することに» 固執する, «…を/…することを» 貫く, 押し通す «in, with/in doing» (!頑固さ・しつこさ・理不尽さなど悪い含みがある; → persevere)
▸ persist in one’s belief
自分の信念を貫く
▸ He persisted in smoking.
彼はタバコをどうしてもやめなかった.
2 〈望ましくないこと[状態]が〉いつまでも続く, 持続する, 存続[残存]する
▸ If symptoms persist after 24 hours, consult your doctor.
1日たっても症状が続くようなら, かかりつけの医者に診てもらいなさい
▸ Rumors persisted that I was involved in the murder.
その殺人に私がかかわっているといううわさは絶えなかった.
他動詞
⦅書⦆〖直接話法〗…と(繰り返し)主張する, 言い張る, 言い続ける (→ say他動詞1a語法)
▸ “I need your signature,” the man persisted.
「あなたのサインが必要なんです」と男は言い続けた.
具体例
小次郎講師監修「移動平均線大循環分析」のインジケータを例にしてみましょう。このインジケータでは、移動平均線の位置関係をもとに、相場を①〜⑥のステージに分けます。ここで、ステージが6から1に変わった時にアラートを鳴らしたいとして、こんなコードを書いてみます。
Inputs:
shortLength(5),middleLength(20),longLength(40);
variables:
stage(0),prevStage(0),
shortEMA(0),middleEMA(0),longEMA(0);
shortEMA = XAverage(Close,shortLength);
middleEMA = XAverage(Close,middleLength);
longEMA = XAverage(Close,longLength);
If longEMA < middleEMA and middleEMA < shortEMA then begin
stage = 1;
If prevStage = 6 then Alert("ステージ転換6→1");
prevStage = 1;
End;
If longEMA < shortEMA and shortEMA < middleEMA then begin
stage = 2;
prevStage = 2;
End;
If shortEMA < longEMA and longEMA < middleEMA then begin
stage = 3;
prevStage = 3;
End;
If shortEMA < middleEMA and middleEMA < longEMA then begin
stage = 4;
prevStage = 4;
End;
If middleEMA < shortEMA and shortEMA < longEMA then begin
stage = 5;
prevStage = 5;
End;
If middleEMA < longEMA and longEMA < shortEMA then begin
stage = 6;
prevStage = 6;
End;
このインジケータをレーダースクリーンに挿入してアラートを有効化してみても、うまく動きません。
レーダースクリーンでは、値はリアルタイムに更新(イントラバーデータ更新:ティックごと)されますが、デフォルトでは変数の中身は更新されません。なのでアラートが期待通りに鳴ってくれないのです。
この場合、変数prevStageにIntrabarPersistをくっつけると、うまく動いてくれます。
口座開設
そんなトレードステーションの口座開設は、こちらから可能です。すでにマネックス証券の口座を持っている場合でもこちらから申し込みができます。
また、少し手順が増えますが、fx-onというサイトを経由してトレードステーションの口座開設をすると、自動売買プログラムが無料でもらえるキャンペーンが行われています。
詳細はトレードステーション口座開設で、自動売買プログラムがもらえるキャンペーン!をご覧ください!