初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1498

 
データをファイルに保存
void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_END);
      long tr = TimeGMT();
      trans = (tr > trans) ? tr : (trans + 1);
      FileWrite(handle,
                trans,
                request.action,
                request.magic,

ファイルからデータを取得する

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 3;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_TXT | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0));
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_SET);
      while(!FileIsEnding(handle))
        {
         string s = FileReadString(handle);
         string aS[];
         int cnt = StringSplit(s, ';', aS);
         if(cnt <= 0)
            continue;
         //---   ПРОБЛЕМНОЕ МЕСТО ОТ
          tr = StringToInteger(aS[0]);
         //---    ПРОБЛЕМНОЕ МЕСТО ДО
         if(tr <= trans)
            continue;

GetLastError() Error is given that -Spoiltstring type parameter.

aS[0] 配列を Print() で出力すると、フォントが他と異なる。


パラメータ tr だけを出力すると、 = 0 となる。

 
Mikhail Toptunov string type parameter.

Print() で aS[0] 配列を出力すると、フォントが他と異なる。


パラメータ tr だけを出力すると、 = 0 になります。

ファイル自体を見てみましたか?

バイナリ値を書き込み、テキスト文字列を読み取っている......。

 
Maxim Kuznetsov #:

ファイル自体を見てみましたか?

バイナリ値を書き込み、テキスト文字列を読み取っている...。

私はこのようにインポートしました

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 1;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | (Common ? FILE_COMMON : 0));

エクスポートはこのように

void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');

は良くなったが、最初のパラメータ 文字列 aS[0])の最初のインポートは常にエラーになる。


次へ

tr - 変換後の文字列を int(aS[0]) で返します。

ファイルが表示され、すべてが所定の位置にある。


しかし、1行目の最初のパラメータaS[0]をインポートしても、int型に変換されません。
 
Aleksandr Slavskii #:

配列を初期化しないと、ゴミが入っていることが多い。

ありがとうございます。以前にもこのようなことがあったのを思い出しました(0に混乱しました)。ドキュメントに明記されていないのが残念です。

 
Mikhail Toptunov #:

外来

輸出の場合はこのように

の方が良いが、最初のパラメータ 文字列 aS[0])の最初のインポートは常にエラーになる。


次へ

tr - 文字列をint型に変換したもの(aS[0])

ファイルが表示され、すべてが所定の位置にある。


しかし、1行目の最初のパラメータaS[0]をインポートしてもintに変換されません

どうしてでしょうか?- 最初のaS[0]は常に壊れています(エラー5040)


 
ヒントをください。最適化を実行するタスクがあるのですが、最適化のために外部データを使用する必要があります。データの入ったファイルを作成し、各パスでファイルを開き、配列に書き込み、閉じます。このプロセスを最適化し、高速化するにはどうすればよいでしょうか?
 
Mikhail Toptunov #:

これはどうしてでしょうか?- 最初のaS[0]が常に壊れている(エラー5040)


エクスポートとインポートでUTF-8エンコーディングを設定してください(少なくとも、BOMなしで同じ1バイトエンコーディングにしてください)。

(ファイルをバイナリ形式で見てください。最初の2バイトはおそらくBOM、つまりUnicodeです) - FileSeek(0,SEEK_SET)してから読み込むと、文字列に読み込まれ、変換に失敗します。

 
Maxim Kuznetsov #:
BOM

どうやらうまくいったようだ。一度だけまだ反映されませんが、その後ファイルを削除すると、少なくとも不具合はなくなりました。


FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0),CP_UTF8

ありがとうございました!

 

おはようございます!

MQL5リファレンスマニュアルResultRetcodeExternalの 記述がないことに遭遇しました。検索エンジンで調べても「Nothing was found for your request.遠回しに調べたところ、どうやら「外部の取引システムから返されたエラーコード」のようです。これらのエラーのスペルと種類は、ブローカーと取引操作が出力される外部取引システムによって 異なります。

質問:私は正しい定義を見つけたかどうか?

もしそうなら、この定義が何であるかをユーザーに探させるのではなく、なぜすぐに完全な情報をユーザーに提供しないのですか?

よろしく、ウラジミール。

 
MrBrooklin #:
結果RetcodeExternal

そのようなものは見当たりません。MQL5には存在しません。

MqlTradeResultが あり、そこにretcode_externalフィールドがあり、このフィールドの説明があります。

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Структура результата торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
理由: