MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1139

 
ascerdfg:
右クリックはどこで行うのですか?

Ctrl Tで下部のメニュー、Trading、Assets、......を表示させる。最後にLogです。ログブックをクリックし、エントリーの一つを右クリックして表示します。

 
Alexey Viktorov:

オブジェクト座標の価格と時間がゼロに等しい可能性があります。Ctrl+Bキーを押し、表示されたダイアログで「すべて」ボタンを押すと、既存のオブジェクトのリストが表示されるので、それを確認します。ある場合は、プロパティを開いて座標を確認します。

デバッグしたところ、すべてのオブジェクトを作成しても問題なし。

 
ascerdfg:
右クリックはどこで行うのですか?

特別に、rzewski: 正しい場所を突くマウス

 
Maxim Kuznetsov:

特にRzewskiの場合、適切な場所でクリックするためのマウス

正直、ログがどこにあるのか手探りで探す方式で、viewという単語が好きで、押しました。 そして、ログがありました)))ところで、counterclauseでログを呼び出す方法とかないんでしょうか?

 

こんにちは。

新しく配置したオブジェクトも含めて、常に他のオブジェクトより上になるように設定することは可能ですか?オブジェクトが重なっても、目的のオブジェクトが上に重なることがないように?

当初は、必要なオブジェクトが常に最高値に設定されていれば、OBJPROP_ZORDERプロパティが役立つと考えました。しかし、実際に使ってみてわかったのは、あくまでもクリックキャッチの優先順位が高いということです。視覚的に、オブジェクトがすべてより高くなることはありません。

また、実際にやってみると、オブジェクトを最後に描くと、視覚的に確実に他のオブジェクトより高くなることがわかりました。そのため、私の知らないプロパティを作成するか、チャート上のオブジェクトの数が変わるたびに、上に重ならないようにオブジェクトを再描画しなければならないのです。しかし、再描画の際に、一度削除したオブジェクトを再度描画するとちらつくという問題が発生しました。オブジェクトをちらつきなくきれいに再描画する方法や、上から見て重ならないようにする方法はないでしょうか。


 
Oleg Remizov:

こんにちは。

新しく配置したオブジェクトも含めて、常に他のオブジェクトより上になるように設定することは可能ですか?オブジェクトが重なっても、目的のオブジェクトが上に重なることがないように?

当初は、必要なオブジェクトが常に最高値に設定されていれば、OBJPROP_ZORDERプロパティが役立つと考えました。 しかし、実際に使ってみてわかったのは、あくまでもクリックキャッチの優先順位が高いということです。視覚的に、オブジェクトがすべてより高くなることはありません。

また、実際にやってみると、オブジェクトを最後に描くと、視覚的に確実に他のオブジェクトより高くなることがわかりました。そのため、私の知らないプロパティを作成するか、チャート上のオブジェクトの数が変わるたびに、上に重ならないようにオブジェクトを再描画しなければならないのです。しかし、再描画の際に、一度削除したオブジェクトを再度描画するとちらつくという問題が発生しました。オブジェクトをちらつきなくきれいに再描画したり、上から重ならないようにする方法はないでしょうか。


objprop_timeframes。

OBJ_NO_PERIODS - すべての期間において不可視です。

OBJ_ALL_PERIODS - すべての期間について表示されます。

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
 
Oleg Remizov:

こんにちは。

新しく配置したオブジェクトも含めて、常に他のオブジェクトより上になるように設定することは可能ですか?オブジェクトが重なっても、目的のオブジェクトが上に重なることがないように?

当初は、必要なオブジェクトが常に最高値に設定されていれば、OBJPROP_ZORDERプロパティが役立つと考えました。 しかし、実際に使ってみてわかったのは、あくまでもクリックキャッチの優先順位が高いということです。視覚的に、オブジェクトがすべてより高くなることはありません。

また、実際にやってみると、オブジェクトを最後に描くと、視覚的に確実に他のオブジェクトより高くなることがわかりました。そのため、私の知らないプロパティを作成するか、チャート上のオブジェクトの数が変わるたびに、上に重ならないようにオブジェクトを再描画しなければならないのです。しかし、再描画の際に、一度削除したオブジェクトを再度描画するとちらつくという問題が発生しました。オブジェクトをちらつきなくきれいに再描画したり、上から重ならないようにする方法はないでしょうか。


インデックスに従って、オブジェクトが表示されます。

string  ObjectName( 
   int    object_index   // номер в списке объектов
   );

つまり、視覚的には、最も高いインデックスを持つオブジェクトが前景になるわけです。

私は、次のような方法でこの状況を打開しています。

string pref="own"; //префикс в именах своих объектов
bool CheckOtherObj(string &arrObjOther[]){
   CheckOtherObjDelete(&arrObjOther);
   for(int i=ObjectsTotal(0,-1,-1)-1; i>=0; i--){
      string name=ObjectName(0,i,-1,-1);
      if(StringFind(name,pref)>=0)continue;
      bool add=true;
      for(int k=ArraySize(arrObjOther)-1; k>=0; k--){
         if(arrObjOther[k]==name){
            add=false;
            break;
         }
      }
      if(add){
         AddToArr(name,arrObjOther);
         return(true);
      }
   }
   return(false);
}
void CheckOtherObjDelete(string &arrObjOther[]){
   string arrdel[];
   ArrayFree(arrdel);
   for(int k=0; k<ArraySize(arrObjOther); k++){
      bool add=true;
      for(int i=0; i<ObjectsTotal(0,-1,-1); i++){
         string n=ObjectName(0,i,-1,-1);
         if(StringFind(n,pref)>=0)continue;
         if(n==arrObjOther[k]){
            add=false;
            break;  
         }
      }
      if(add) AddToArr(arrObjOther[k],arrdel);
   }
   if(ArraySize(arrdel)>0){
      string temp[];
      ArrayCopy(temp,arrObjOther);
      ArrayFree(arrObjOther);
      for(int i=0; i<ArraySize(temp); i++){
         bool add=true;
         for(int k=0; k<ArraySize(arrdel); k++){
            if(arrdel[k]==temp[i]){
               add=false;
               break;
            }
         }
         if(add)AddToArr(temp[i],arrObjOther);
      }
   }
}
void AddToArr(string value, string &arr[]){
   int s=ArraySize(arr);
   ArrayResize(arr,s+1);
   arr[s]=value;
}


この場合、私のコードには、プログラムによって作成されていないオブジェクト名の配列があります(他者)。新しい他のオブジェクトが現れたら、すぐにプログラムで作ったオブジェクト(自分のもの)をすべて削除して、新しく作る。この場合、自オブジェクトは常にオブジェクトのリストの中で最も高いインデックスを持つため、視覚的に前景に位置することになります。しかし、他のオブジェクトがチャートから削除された場合、その配列を常にクリアする必要があり、配列が制御不能なほど大きくならないようにする必要があります。

オブジェクトを制御したい場合は、より簡単です。オブジェクトのインデックスを制御すればいいのです。

 
Maksym Mudrakov:
インデックスに従って、オブジェクトが表示されます。

ということは、視覚的には、最も高いインデックスを持つオブジェクトが前景になることになる。

こうして、私はこの状況を打破していくのです。


この場合、私のコードには、プログラム内で作成されていないオブジェクト(他者)の名前の配列があります。新しいオブジェクトが現れたら、プログラム(自分のもの)が作ったオブジェクトをすべて削除して、作り直すんだ。この場合、自オブジェクトは常にオブジェクトのリストの中で最も高いインデックスを持つため、視覚的に前景に位置することになります。しかし、他のオブジェクトがチャートから削除された場合に備えて、常に配列をクリアしておくことも必要で、配列が制御不能なまでに大きくなることはありません。

オブジェクトを制御したい場合は、より簡単です。オブジェクトのインデックスを制御すればいいのです。

どうすればいいかは、上に示したとおりです。開発者が推奨する方法があるのに、なぜそこまでするのか。

 
こんにちは。

ATPインジケータを価格チャートに移したいのですが、どうすればいいですか?でも、どうしたらいいのかわからない。同時期の正中線からのボラティリティの最大値の動きを表示してほしい。もし、コードをお持ちの方がいらっしゃいましたら、教えていただきありがとうございます。
 
こんにちは!1ヶ月間無駄に検索し続けた結果、頭の中がとんでもないことになってしまい、何から手をつけていいのかわかりません。このスレッドにメッセージを書き込むことにしました。もし、ここで間違った方向に進んでいたら、ごめんなさいね。どなたか、このトピックをどの枝に上げるのが良いのか、教えてください。質問の核心は、Expert Advisor、Indicator、スクリプトを使用してシンボル・チャートに情報を表示するために、サードパーティ・サイトからMT4でデータを取得する最も簡単で良い方法は何でしょうか?今は自作のスクリプトを使っていて、Book1.csvを "MT4 Data Directory "の "Files "というアドレスで開いています。スクリプトを実行する 前に、Chromeブラウザーを起動し、リソースページに移動し、このページでシンボルを選択し、このシンボルの表示データの種類を選択します(ページアドレスは変わりません)。このシンボルのデータを、限られた範囲の価格水準でのパラメータ値で表として表示した後、ChromeブラウザーのTable Capture拡張機能を使い、リソースページの表からクリップボードにデータをコピーし、Excelを開いてクリップボードのデータをExelシートに貼り付けています。その後、Exelで数値データを変換(数値のカンマをドットに置き換える)し、csv形式のファイルを端末のデータディレクトリに保存しています。そして、すでにこの一連の動作を行った後に、スクリプトを実行しています。明らかに、WebRequest関数はこのタスクに適していません。なぜなら、最初のページアドレスにはデータがないからです(ツールとデータ型を選択した後に表示されます)。正しい方向性を教えていただけるとありがたいです(当然、方向性はいくつかあるかもしれません)。