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

 
igrok333:

ファイルの8行目を読むにはどうしたらよいですか?

ファイル操作に関する質問

https://docs.mql4.com/ru/files


mqlのすべてはブルートフォースで行われる、と以前誰かが言っていたような?


他に方法はないのか?

すべてのデータ型は、占有するメモリのサイズがバイト単位で決まっています。従って、コードを書く際には、これを利用して、1つの文字列のデータが占めるバイト数だけ、ファイルポインタをシフトさせればよい。

1行にdouble型の値が4つ含まれる場合、4*8=32バイトを要する。従って、ファイルの9行目を読むには、ファイルポインタを256バイトにシフトする必要があります。

bool  FileSeek(
   int                  file_handle,     // handle файла
   long                 offset,          // в байтах 
   ENUM_FILE_POSITION   origin           // позиция для отсчета
   );
bool  FileSeek(file_handle, 265, SEEK_SET);

ファイルの終端からシフトした場合、その値は負でなければならない。

しかし、すべてが順調というわけではありません。少し前に、この問題を扱ったところ、.txtと.csvファイルはこれで正しく動作しないが、.binファイルは間違えないということがわかった。もしかしたら、この問題はすでに解決されているかもしれませんし、運が良ければ手に入るかもしれません。

 
Alexey Viktorov:

double型の値が4つある場合

csvファイルの値はすべて文字列ではないのですか?


ファイルの各行ごとに単語を用意しています。
そこで、12バイトのサイズの文字列の値を持っています。
つまり、8行目に行くには、キャリッジを84バイト分ずらす必要があるのです。

bool  FileSeek(file_handle, 84, SEEK_SET);

情報ありがとうございました。

 
mql 5ですべてのオープンポジションを ループ処理するにはどうすればよいですか?
 
Roman Sharanov:
mql 5ですべてのオープンポジションを ループ処理するにはどうすればよいですか?
こちらはmql4のトピックです
 
igrok333:
こちらはmql4のトピックです

いいえ、このトピックはmql4とmql5の両方です。

 
Roni Iron:

こんにちは。

質問:ターミナルでテスターを 高速化する方法は?

4つのCPUスレッドのうち1 つだけを使用し、RAMは150mbだけ使用しています。(つまり、私のPCの全パワーを使わない)のです。

どのような選択肢があるのでしょうか?

もし、すでに議論されているのであれば、リンクを貼ってください。

MT4であれば、CPUの周波数だけがここで役割を果たします。1本の糸を使うのか?4台のMT4端末を同時に起動し、異なるテストや最適化作業を行うことができます。1台の端末と同じCPU負荷になります。

 
Roman Sharanov:
mql5ですべてのオープンポジションを ループで処理するにはどうすればよいですか?

mql5は、ポジションとオーダーを区別しています。ポジションとは、取引の結果である。そして、取引は注文のトリガーの結果である。

まず、サーバーに取引要求が送信され、保留注文(設定する場合)または成行注文(ポジションを開く場合)が表示されます。

成行注文がトリガーされた(取引が発生した)場合、この取引の結果としてポジションが表示される(または既存のポジションが変更される)。

ヘッジ会計では、多くの個別のポジション(多方向を含む)が存在することができますが、ネッティング会計では、ポジションは1つだけです。

したがって、すべてのポジションをループするためには、それらの番号によってループを整理する必要があります。それぞれ、通常の for mql4 OrdersTotal() の代わりに PositionsTotal() を使用します。

mql5ですべての注文をループしたい場合は、(mql5で)通常のfor mql4 OrdersTotal()を使用します。

 
igrok333:

が、csvファイルの値はすべて文字列ではないのですか?


ファイルの一行ごとに単語を用意しています。
そこで、12バイトの大きさの文字列の値を持っています。
つまり、8行目に行くには、キャリッジを84バイト分ずらす必要があるのです。


情報ありがとうございました。

テキストファイルは一行ずつしか読んではいけない。それ以外に線番を計算する方法はない。つまり、FileReadStringを使用してループ内で連続的に読み込むだけです。

 

ObjectCreate(name,OBJ_FIBO, ...) を使ってチャートにフィボナッチレベルを 作成し、ObjectSetFiboDescription(name,0,"...") でレベルの説明を設定しますが、名前は右端から離す必要があります。空白を入れたが、文字が移動するだけでなく、行が被ってしまう。また、スペースを増やすと、文字が後ろに動かなくなります。
質問:テキストに「不可視」記号を追加して、その下の行を覆わないようにすることはできますか?


 
Maxim Khrolenko:

ObjectCreate(name,OBJ_FIBO, ...) を使ってチャートにフィボナッチレベルを 作成し、ObjectSetFiboDescription(name,0,"...") でレベルの説明を設定しますが、名前は右端から離す必要があります。空白を入れたが、文字が移動するだけでなく、行が被ってしまう。また、スペースを増やすと、文字が後ろに動かなくなります。
質問:テキストに「不可視」記号を追加して、その下の行を覆わないようにすることは可能ですか?

ドットやコード0を含む文字を試してみる