エラー、バグ、質問 - ページ 930

 
kPVT
ご指摘ありがとうございます。
あなたの経験をお聞かせください。具体的には
1.ユニークな名前を生成する仕組み。オートインクリメントによる既存名の直接列挙?
2.オブジェクトの真偽を確認する仕組み。つまり、この名前のオブジェクトがあるかどうかだけでなく、サイズ、タイプ、テキストなど、そのすべてのパラメータをチェックすることです。省資源を意識して。各オブジェクトの各プロパティに対して、1ティックごとに 膨大な数のチェックを行うのは、むしろ手間がかかる。もちろん、外部からの変更(EA作成者を除く)をブロックするか、オブジェクトのハッシュを計算してFASTで("if "で)オブジェクトの真正性をチェックすることができれば、そのようなことは可能です。
 

チャートの再描画ができない 状況の再現性をご確認ください。

簡単な専門家を添付します。条件

1.2013.01.07~2013.02.11まで。

2.ビジュアルモードでのテスト。

3.最初の走行では、速度を最小限まで落としてください。

4.初期化後の次の実行で、F12を押します(generate one tick)。

もう一つの非常に重要な条件は、端末がオフラインモードで動作していることである。クリーンな実験のために、コンピュータをネットワークから切り離してみてください(すべてのネットワークアダプタを切断してください)。

観察する。

1.チャート上にスプレッド値をレイト表示。

ChartRedraw関数が 正しく動作していないのか、それとも何か間違ったことをしたのか?マウスでチャートを移動(水平方向(時間)に移動)させると、正しく再描画されます。

ファイル:
1.mq5  4 kb
 
voix_kas:
kPVT
ご指摘ありがとうございます。
あなたの経験をお聞かせください。具体的には
1.ユニークな名前を生成する仕組み。オートインクリメントによる既存名の直接列挙?
2.オブジェクトの真贋を確認する仕組み。つまり、単にそのような名前のオブジェクトがあるかどうかだけでなく、サイズ、タイプ、テキストなど、そのすべてのパラメータをチェックすることです。省資源を意識して。各オブジェクトの各プロパティに対して、1ティックごとに膨大な数のチェックを行うのは、むしろ手間がかかる。もちろん、外部からの変更からオブジェクトをロックするか(アドバイザーである作成者を除く)、オブジェクトのハッシュを計算してオブジェクトの真正性を高速にチェックするか(1つの「if」で)のどちらかであれば、そのようなことはできません。

真偽や最適性を主張することなく

1.オブジェクト名に乱数+名前を使用する標準ライブラリを使用 することができます。18467RadioGroupItem0Button, 06334ClientBack.また、自分でオブジェクトを削除する必要はありません。

まだ、標準のビブリオと友達になっていないので、この方法でやっていますが、特に問題はありません。

int nOBJ=0;//счетчик однотипных объектов
int OnInit()
  {
   //уникальное имя на основе текущего времени в момент инициализации (в 36 системе для краткости, пример: MI7E9G)
   basedName=ULongTo36Base(TimeLocal());
   leftName="LeftBorder "+basedName;//имя для единичного объекта
   ObjectCreate(0,leftName,OBJ_VLINE,0,time,0);
   for(nOBJ=1;nOBJ<=100;nOBJ++)//создание 100 однотипных объектов
    ObjectCreate(0,(string)nOBJ+basedName,OBJ_TREND,0,time,price);
   return(0);
  }
void OnDeinit(const int reason)
  {
   for(int del=1; del<=nOBJ; del++)
      ObjectDelete(0,(string)del+basedName);
   ObjectDelete(0,leftName);
   return;
  }

ここでは、離散度は1秒とする。テンプレートから同じインジケータを複数追加すると、衝突が発生します。 この場合、basedNameにインジケータパラメータを追加したり、TimeLocal()にミリ秒、乱数などを追加するとよいかもしれません。一般的には、バリアントがあります。

2. オブジェクトの真正性 - そのユニークな名前。同じ名前の異なるタイプのオブジェクトであっても、2つのオブジェクトを1つのチャートウィンドウに表示することはできません。なぜ、オブジェクトのすべてのプロパティをチェックする必要があるのでしょうか?説明する。

オブジェクトのプロパティを 手動で変更することを確認しますか?CHARTEVENT_OBJECT_CHANGE イベントがあります。

誤って削除されることを抑制するために、オブジェクトにアクセスしたときにその存在を確認し、必要に応じて復元する必要があります(ちなみに、オブジェクト削除イベントというのもありますが、私は使っていません)。


それでもCommentを使って整形された情報を出力したい場合は、例えば、必要な文字列の長さを指定し、その長さを知った上で、説明とパラメータ値(その長さを定義)を適切な場所に挿入することができます。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
voix_kas:
kPVT
ご指摘ありがとうございます。
あなたの経験をお聞かせください。具体的には
1.ユニークな名前を生成する仕組み。オートインクリメントによる既存名の直接列挙?
2.オブジェクトの真偽を確認する仕組み。つまり、この名前のオブジェクトがあるかどうかだけでなく、サイズ、タイプ、テキストなど、そのすべてのパラメータをチェックすることです。省資源を意識して。各オブジェクトの各プロパティに対して、1ティックごとに膨大な数のチェックを行うのは、むしろ手間がかかる。もちろん、外部からの変更からオブジェクトをロックするか(作成者EAを除く)、オブジェクトのハッシュをFASTに計算するか(1つの「if」で)、オブジェクトの真正性をチェックする必要がありました。
レディメイドのクラスを通してマーケットを 見る。
 

kPVT

ご指摘ありがとうございます。CHARTEVENT_OBJECT_CHANGEで制御してみる。

Dima_S

ありがとうございます。しかし、標準クラスを使う必要性を感じないのです。

大変お手数ですが、前回の投稿にある簡単な既製のExpert Advisorを使用してChartRedraw関数をテストしてください。残念ながら、なぜか1ティック遅れて表示されます。つまり、この例では、スプレッドの値は前のティックのものが表示され、処理と出力は現在のティックで行われることが示されています。

 
voix_kas:

kPVT

ご指摘ありがとうございます。CHARTEVENT_OBJECT_CHANGEで制御してみる。

Dima_S

ありがとうございます。しかし、標準クラスを使用する必要性を感じません。

大変お手数ですが、前回の投稿にある簡単な既製のExpert Advisorを使用してChartRedraw関数をテストしてください。残念ながら、なぜか1ティック遅れて表示されます。つまり、この例では、スプレッドの値は前のティックのものが表示され、処理と出力は現在のティックで行われることが示されています。

どういたしまして。記事を読んでいれば、2つの疑問に対する答えが見つかったはずです))
 

マーケットから大型のプログラムをダウンロードし、インストールすることはできません。よく見てください。理由は不明です。

一部制約がある場合があります。公式な情報はありません。

 

ヒントを教えてください。

1. リソースから呼び出されたインジケータは、入力パラメータを受け取ることができませんか?
2.そうでない場合、これを迂回する可能性と方法はあるのでしょうか(松葉杖をついて)。
 

iCustom()と同じです。

handle=iCustom(_Symbol,_Period,"::Indicators\\Examples\\ZigZag.EX5",12,5,3);
 
Karlson:

iCustom()と同じです。

その通り、可能です。コードにミスがありました。

ありがとうございます。