2017年1月27日金曜日

【EasyLanguage】 レーダースクリーンでティック毎にデータが更新されなくなったときの処方箋

半日潰されたのでメモorz

現象


レーダースクリーンでの現象なのですが、条件が揃うと今までTick毎に更新されていたデータが一切更新されなくなる現象を見つけました。この場合、リロード(Ctrl-R)しないとデータ更新が行われなくなります。


再現方法


  1. 「TradeStation開発環境」から空のインジケーターを作成
  2. レーダースクリーンにて以下のプログラムを実行、動作することを確認(現在値が表示されるだけです)
    Print(Last);
    Plot1(Last);
  3. 以下のプログラムに書き換え、検証
    Print(Open);
    Plot1(Last);
  4. 印刷ログに1度だけ出力されますが以後、更新されません(不具合)

調べてみた感じですと、Open以外にもCloseやHighでも同様のようでした。過去の足を参照する変数(?)を利用すると止まるようです。


対応策


「TradeStation開発環境」の『ファイル(F)』→『プロパティ(E)...』より『インジケータープロパティ』を開き、『イントラバーデータ更新(ティックごと)(U)』を有効にしてください。デフォルトですと無効に設定されているはずです。

「検証」後、一度レーダースクリーンから対象のインジケーターを削除、再設定を行うことでTick毎にデータが更新されるようになりました。


ちなみにヘルプには以下の記載があった。

イントラバーデータ更新 - このチェックボックスを選択すると、ティックごとにスタディを再計算できます。 このチェックボックスのチェックを外すと、スタディは各バーの終値を待ってから再計算します。

意味が分からんorz


反省


いえね。

今まで2ヶ月程度テストしていたインジケーターを公開しようとして最終チェックしてたら、上記のダイアログ表示にもあるメモに謎のコメントが書いてあったんだけど、これ、書き換えられないんよ。いやだってインジケーターを作ってる時にメモ書きって適当でしょ?最初に想定していない動作になってる場合もあるじゃないですか、、、

そんなこんなで急いで最初から作ったらこの有様ですよええ。

つかね。

デフォルトで「イントラバーデータ更新」を無効にしておく意味が分からん。しかも無効であっても過去の足さえ見に行かなければ、不具合が発生しないし、気が付きにくい。


ということで負け犬の遠吠えでした。お疲れ様。

0 件のコメント:

コメントを投稿