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

 
fxsaber:

タイムアウトがあるキャラクターとないキャラクターがあります。OrderSendでまだ認識できるティックの最大年齢を知るにはどうしたらよいですか([No price]はありません)。

知るか

 
Stanislav Korotky:
FILE_SHARE_WRITEフラグは、この組み合わせで動作するようですが、別の疑問が生じます。論理的には、書き込み分離を有効にした場合、書き込みフラグに正確に追加されるはずです。

まさにその通り、私も試しましたが、エラーが出てしまいます。

MetaTraderを起動し、私の古い例を見つけ、FILE_SHARE_WRITEを 追加しました(それはそこでは必要ありませんが) - 結果は変わりませんでした...。たぶん、別の理由で私にはうまくいかなかったのだと思います。
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

AMP Futuresの顧客がMetaTrader 5取引プラットフォームを利用可能に

fxsaber さん 2018.07.23 22:34

Bid/AskがTickSizeの倍数であっても、成行注文ができない例

この場合、Last priceはTickSizeの倍数ではありません。 これは成行注文とは関係ありませんが、OrderCheckはまだバグがあり、成行注文を行うことを許可していません。

 
fxsaber:

キャラクターによってタイムアウトがあるものとないものがあります。OrderSendでまだ受付可能なティックの最大年齢を知るにはどうしたらよいですか([No price]はありません)。

16秒前に受信した最後のティックがOrderSendに 関連していると認識されないということが起こります。これはやっぱりバグなんでしょうね。

 
A100:
MetaTraderを有効にして、古い例を見つけ、FILE_SHARE_WRITEを 追加しました(そこに必要ではありませんでしたが)-結果は変わりませんでした...。たぶん、別の理由で私にはうまくいかなかったのだと思います。

あるいは、ファイルをメモリ(MemMap)上に配置し、そこでセマフォで作業し、セマフォでファイルにデータをダンプすることも可能です

ちなみに、この方法で大きな速度向上が得られます

 
Konstantin:

あるいは、ファイルをメモリ(MemMap)上に配置し、そこでセマフォで作業し、セマフォでファイルにデータをダンプすることも可能です

ちなみに、この方法だと速度面で大きなアドバンテージが得られます

問題は、私が小さな設定ファイルを持っていて、すべてのEAが動作開始前に一度だけそれを読む必要があるということです - 最も単純な操作 - 上のリンクの例を参照してください...そしてあなたはセマフォと言います)。
 
A100:
つまり、私は小さな設定ファイルを持っていて、各EAは作業を開始する前に一度だけそれを読めばよかったのです。)

私は、この問題についての書き込みは、いくつかのページと、ひげの問題とそれを修正することを考えると、開発者は明らかにすることはできませんまたはしたくないので、そのことを言う。私はあなたにそれらのいずれかを提供し、あなたはそれが好きではない場合winapiを使用する何が問題だ))しかし、それは何もせずに同じことを書くよりも優れている、あなたは物理ファイルから読み取るために同じセマフォを使用することができ、同じセマフォ信号がビジーであり、待っている必要があります!それは、あなたのためのものです。

 
Stanislav Korotky:

このシンプルなスクリプトを、まずwriting = trueで実行し、次に別のチャートでwriting = falseで実行すると、エラーが発生するのです。


#property script_show_inputs

input bool writing = false;

int OnStart()
{
  int handle = FileOpen("xyz.foo", FILE_READ|FILE_BIN|FILE_SHARE_READ|(writing?FILE_WRITE:0));
  if(handle == INVALID_HANDLE)
  {
    Print("FileOpen failed: ", GetLastError());
    return INIT_FAILED;
  }
  
  if(writing) FileWriteInteger(handle, 0);
  
  Print("handle=", handle);
  
  while(!IsStopped())
  {
    Sleep(1000);
  }

  Print("Closing");
  FileClose(handle);

  return 0;
}

読み出し用のオープナーは、書き手がいるため、FILE_SHARE_WRITE(書き込み許可)フラグを欠く。

これはシステムの制限事項(WinAPI)です。

以下は、あなたのコードが動作するための正しいフラグです。

int handle = FileOpen("xyz.foo", FILE_READ|FILE_BIN|FILE_SHARE_READ|(writing?FILE_WRITE:FILE_SHARE_WRITE));
 
Ilyas:

以下は、あなたのコードを動作させるための正しいフラグです。

FileLoadを修正してください。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

バグ、バグ、質問

fxsaber さん 2018.07.10 19:26

FileLoadでエラーが発生しました。FILE_COMMON フラグを使用して、2つのローカルAgentがFileLoadを介してデータを読み込もうとすると、Agentの1つが失敗します。

FileOpenでは適切なフラグを設定できるが、FileLoadではできない。そのため、他のFileLoadが読み込む場合は、FileLoad経由でのアクセスを許可してください。

 
TheXpert:

なんで)

フラグのリストにゼロがないため

識別子

価値

商品説明

FILE_READ

1

ファイルが読み出し用にオープンされる。このフラグは、ファイルを開く(FileOpen())ときに使用される。FILE_WRITEおよび/またはFILE_READは、ファイルを開くときに設定する必要があります。

FILE_WRITE

2

ファイルを書き込み用にオープンする。このフラグは、ファイルを開く(FileOpen())ときに使用される。ファイルをオープンするときは、FILE_WRITE および/または FILE_READ フラグを設定する必要があります。

FILE_BIN

4

バイナリーリードライトモード(文字列との変換なし)。このフラグは、ファイルを開く(FileOpen())ときに使用します。

FILE_CSV

8

csvファイル(書き込まれたすべての項目は、ユニコードまたはアンシという適切なタイプの文字列に変換され、デリミターで区切られる)。このフラグは、ファイルを開く(FileOpen())際に使用されます。

FILE_TXT

16

単純なテキストファイル(csvと同じ、ただしセパレータなし)。このフラグは、ファイルを開くとき (FileOpen()) に使用されます。

ファイル・アンサー

32

ANSI文字列(半角文字)。このフラグは、ファイルを開くとき (FileOpen()) に使用されます。

FILE_UNICODE

64

UNICODE文字列(2バイト文字)。このフラグは、ファイルを開くとき (FileOpen()) に使用されます。

ファイル共有読み込み

128

複数のプログラムによる共有の読み取りアクセス。このフラグは、ファイルを開くとき(FileOpen())に使用されるが、ファイルを開くときのFILE_WRITEおよび/またはFILE_READの必要性の代用にはならない。

ファイル共有書き込み

256

このフラグは、複数のプログラムによる書き込みアクセス共有のために使用されます。このフラグは、ファイルを開く(FileOpen())際に使用されるが、ファイルを開く際にFILE_WRITEおよび/またはFILE_READを代用することはない。

FILE_REWRITE

512

FileCopy() およびFileMove() により、ファイルを上書きすることができる。ファイルが存在するか、書き込み可能である必要があります。それ以外の場合は、ファイルを開くことができません

ファイル_COMMON

4096

全クライアント端末の共有フォルダのファイルの場所。このフラグは、ファイルを開くとき (FileOpen()) 、ファイルをコピーするとき (FileCopy(),FileMove()) およびファイルが存在するかどうか調べるとき (FileIsExist()) に使用されます。


また、開発者がすべての欠点を直したとしても、多くの人はそれを好まないでしょう。コードの半分以上が動かなくなる。

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...