ネットで見つけたサンプルをいじって自分で作りました。
できたと思ったらできていませんでした。
ChartRedrawでえられる結果と、手動で更新することによって得られる結果は違うようです。
と言うかちゃんとインジで更新できていたのかはわかりません。
MQL4 か MQL5 かくらいは書いたほうがいいような
インジケーターによってはチャートを更新しないと表示に変化がないものもあります。(特に図形表示系)
そこで、自動で更新してくれる機能を持たせられないかなと思っております。
どなたかそのようなインジケーターなどご存知でしょうか。
よろしくお願いいたします。
もしかして、マーケットが開いている時と閉じている時違いかもしれませんね。
一般的なインジケータは、Initイベントで初期化(OnInitメソッド)をした後、
Calculateイベント(OnCalculateメソッド)で計算・リペイントするのが基本の作り方となりますが、
Calculateイベントはマーケットが開いていない時(レートの更新が無い時)は1度しか発生しないと
思います。
MQL4からのソース(実装)を見ると、Timerイベントを使用して、強制的に描画するといった方法が
常套手段として採用されているようです。(好き嫌いは分かれると思いますが)
図形描画系であれば、ChartEventイベント(OnChartEventメソッド)で個々のイベントを拾って
再描画するのが一般的かもしれません。
また、ChartRedraw()はキューに積まれるイメージだと思います。
(すぐに反映されるわけではなく、チャートのイベントループで纏めて処理されてる。
Dirtyフラグ的なものに印をつけているような動きに思えます。定かではないですが)
ではでは。
そちらの環境がわからないので、なんとも言えないが
これでお望みどおりになるだろうか
// MQL5/Scripts/run-oncalc01.mq5
#property script_show_inputs
input int MILLISECONDS = 1000;
int OnStart()
{
for (;;) {
Print("ChartSetSymbolPeriod(0, NULL, ", Period(), ") => ",
ChartSetSymbolPeriod(0, NULL, Period()));
Sleep(MILLISECONDS);
}
return 0;
}
間隔は、ダイアログからミリ秒で指定
止めるときは、チャート内の右上のアイコン、右クリックから
Graceful Shutdown (正常に終了すること) は、できないと思ってほしい
かならずデモ口座を使うこと
ちゃんと動かすなら、もっと作り込まないとダメだと思う
参考: https://www.mql5.com/ja/docs/chart_operations/chartsetsymbolperiod
- www.mql5.com
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
インジケーターによってはチャートを更新しないと表示に変化がないものもあります。(特に図形表示系)
そこで、自動で更新してくれる機能を持たせられないかなと思っております。
どなたかそのようなインジケーターなどご存知でしょうか。
よろしくお願いいたします。