チャートウィンドウを更新する - ページ 3

 
みんな、うまくいっているよ。
 
phy:

GVとは?

最近やっているのは、以下のようなものです。

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){.

これは、ティックごとにインジケータの見える部分を再描画しますが、見えないところにあるバーは再描画しません。

こんにちは、phyさん......。

私も上記のような問題があり、手動でタイムフレームを変更し、インジケータの状態を更新する必要があります....

私はコーディングの初心者なので、どこに魔法の行を追加すればいいのかわかりません.........。

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){....................。

Plesae提案....

ありがとう......たくさん。

ハリー

 
brspMA:
みんな、うまくいっているよ。

こんにちは、brspMAさん。

私も同じ問題を抱えています...。

そのライムをどこに追加すればいいのか、教えてください。

ありがとうございます。

 
  1. なぜ5年前のスレッドに投稿しているのですか?何年も投稿していない人が返信してくれるとでも思っているのでしょうか?
  2. for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
    すでにすべての バーを描画しているので、バーゼロだけが変化しています。表示されている バーを再描画 する意味があるのでしょうか?
  3. タイムフレームの変更、チャートの更新などはすでにIndicatorCountedで処理されており、-1が足りない以外は追加のコードは必要ありません。
  4. hp69: 私でも同じ問題があります............。
    もしあなたのインジケータがリフレッシュせずに更新されないのであれば、問題はあなたのインジケータが壊れていることです。ループを変更しても解決しません。インジケータを修正する必要があります。初回のみ(そしてリフレッシュ)、すべてのバーが描画されます。他のほとんどのティックでは、Bars-1-IndicatorCounted()はゼロになります。ループは1回だけ実行されます。バッファに保存された値の代わりに、前のバーから、初期化されていない変数を使用しています。もし、解決できない場合は、あなたのコードで新しい投稿を開いてください。
  5. Hp69 二重投稿をしないように
 


スレッド開始日 -2007.11.29
 

WHRoeder- なぜ5年前のスレッドに投稿しているのですか?

RaptorUK - スレッド開始日 -2007.11.29

============================

古いスレッドに返信して何が悪いんだ?

Googleは(フィルターを使わない限り)年代に対して内容を差別しないので、検索エンジンでスレッドにたどり着いた他の人を助けることは何も悪いことではありません。

modはnoobを中傷し非難する方法を教わる学校に通ってるのか?

 
FlatFap:

WHRoeder - なぜ5年前のスレッドに投稿しているのですか?

RaptorUK - スレッド開始日 -2007.11.29

============================

古いスレッドに返信して何が悪いんだ?

Googleは(フィルターを使わない限り)年代に対して内容を差別しないので、検索エンジンでスレッドにたどり着いた他の人を助けることは何も悪いことではありません。

modはnoobを中傷し非難する方法を教わる学校に通っているのでしょうか?

古いスレッドに返信することは原則的に悪いことではありません。

あなたのような話題と関係ない返信が他人を困らせるのです。

また、5年前の質問に対する返信は、mql4が時代とともに進化しているため、役に立たないことが多いです。古いスレッドを一番上に持ってくることは、noobがもう関係のない情報を読んでいることを意味することが多いでしょう。

 
FlatFapさん、気を落とす必要はありません。古いスレッドに返信するのは全く問題ありません。Googleがこのスレッドを検索リストのトップに表示したということは、このスレッドがあなたが探しているものに最も近いということです。MQL4は他のアプリケーションと同じように進化していますが、ほとんどのコマンド機能は 毎日変わるわけではありませんし、ちょっとした試行錯誤とさらなるリサーチで、あなたの望む解決策を得られるかもしれません。グッドラック
 

インジケータを再描画しなければならない可能性がありますが、何本のバーを再描画しなければならないかわかりません。フラクタルのインジケータを作成する場合、左側の次の2本のバーがルールを満たすと、3本目のバーがフラクタルになる可能性があるため、最後の3本を再計算する必要があります。サポートレベルやレジスタンスレベルがブレイクされたときに、それをマークするインジケータを作成しました。しかし、これは10本後にも1000本後にも追加される可能性があります。ですから、何本後に再計算しなければならないのかがよくわかりません。そして、各ティックですべてのバーを再計算する場合、通常、インジケータを最後の500または1000のバーに制限する必要があります。

また、チャートをリフレッシュすることで、インジケータのすべてのバーを再計算することも可能です。しかし、プログラムでそれを行うにはどうしたらよいでしょうか。WindowsRedraw()やChartRedraw()では、インジケータのリフレッシュは起こりません。もし、別の時間枠を変更して戻ってきたら、最初の投稿にあるように、インジケータは再計算されます。CHARTEVENT_CLICK ハンドラを持つExpertをチャートに配置し、ChartSetSymbolPeriod(0, NULL, 0)というメソッドを呼び出すことが可能です。これにより、チャートが実際のシンボル期間に設定され、実際にチャートをクリックするたびにインジケータが自動的に再計算されます。

 

インジケーターのコードの最後に "ChartNavigate(0,CHART_CURRENT_POS,0);" と記述します。

{

...

ChartNavigate(0,CHART_CURRENT_POS,0);

return(rates_total);