どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1116

 
Top2n:

良い時間、どのように1行目にシフトして、終了file.csvに新しい行を追加するには - 可能であれば?または他の方法ですが、既存のデータを再計算/再利用することはありません。列名と行名の更新が許可されていなければ

int GenerateCsv(string fileName)
  {
   int handle= FileOpen(fileName,FILE_CSV|FILE_WRITE," "),x=0,y=0; 

FILE_CSVを削除 し、" \nt"フォーマットを 使用する場合はFILE_ANSIを 代わりに使用するなど。

 
alexsis78:

FILE_CSVを削除 し、" \nt" 等を使用 する場合はFILE_ANSIを 代わりに使用します。

FileReadArrayを使って、新しいバーに新しい行を 追加する必要がある
 
Top2n:
こんにちは、タスクはBIN形式の2次元配列を上書きすることですが、この関数は2次元配列を入力として認識するのでしょうか?

FileWriteArray

それとも行単位で別々に書くだけ?
もちろん、2次元の配列として読み込まれます。すみません、悪気はないんですが...。2x2要素のテスト配列を書き、それを読み込んで見る方が簡単ではないでしょうか?
 
Alexey Viktorov:
もちろん、二次元と読みます。すみません、悪気はないんですが...。2x2要素のテスト配列を書き、それを読み込んで見るだけの方が簡単ではないでしょうか?

NULLの空値はファイルに書き込まれるarrayZ は2次元

//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arrayZ,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }
一次元と書くと、binは象形文字を示し、二次元はNULL一次元が何かを書いたと認識する。
 
Top2n:

NULLの空値はファイルに書き込まれるarrayZ は2次元

//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arrayZ,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }

今日はダラダラしすぎて時間がない・・・。この関数をコピーしたドキュメントには、構造体の配列まで書かれています。ドキュメントに記載されている例は、そのままであれば全て動作するのでしょうか?自分で確認して、うまくいかない場合は、CDに書き込む必要があります。

 
FileWriteArray および FileReadArray シャープペインは、意図しない目的に使用しないでください。
これらは直列化機能である。ファイルを テキスト形式で開きたい 場合 - ファイルに文字列を書き込む。
string s = StringFormat("first line: %s\n", first);
s += StringFormat("second line: %s\n", second);
s += StringFormat("third line: %s\n", third);
FileWrite(s)です。
などなど。
FileReadを読み込んで各行をパースするため(弄らないといけないが、可読性を求めるなら必要)。
なんと、子どものように。ファンキーなクリスマスの奇跡を期待しているのでしょう、何でもうまくやる、全部埋めてフォーマットする、みたいな))))。
総じて、メリークリスマス、グッドラック ))))
 
alexsis78:
FileWriteArray および FileReadArray シャープペインは、意図しない目的に使用しないでください。
これらは直列化機能である。ファイルを テキスト形式で開きたい 場合 - ファイルに文字列を書き込む。
string s = StringFormat("first line: %s\n", first);
s += StringFormat("second line: %s\n", second);
s += StringFormat("third line: %s\n", third);
FileWrite(s)です。
などなど。
FileReadを読み込んで各行をパースするため(弄らないといけないが、可読性を求めるなら必要)。
なんと、子どものように。ファンキーなクリスマスの奇跡を期待しているのでしょう、何でもうまくやる、全部埋めてフォーマットする、みたいな))))。
総じて、メリークリスマス、メリークリスマス )))。
シリアライズで大丈夫です、配列は巨大です。また、充填の忠実性を確認するために、初めて可読性の高いフォーマットを採用しました。
 

csv.から2次元の配列をインポートするのをバイパスして、インジケータから3次元(または2次元)の配列をEAに抽出することは可能かどうか教えてください。

CFileReadDoubleは 2次元配列を考慮するのか、もしそうならどのように考慮するのか?

一般に、csv行列を配列に変換するには、どのような操作を行えばよいのでしょうか?

一般的に、私は、例えば、例を挙げると、どのように理解されていない

ArrayResize(time_buff,size);
      //--- прочитаем данные из файла
      for(int i=0;i<size;i++)
        {
         time_buff[i]=(datetime)FileReadDouble(file_handle);
         ma_buff[i]=FileReadDouble(file_handle);
        }

このように,配列time_buff[i]と 配列ma_buff[i]に同じデータを書き込みます。

https://www.mql5.com/ru/docs/files/filereaddouble の例

また、2次元の配列がある場合、列挙をどのようにアレンジすればよいのでしょうか。

FileReadStringを 使用する場合、文字列の長 さを指定する必要がありますが、セルではなく文字列の桁数を知る必要があるのでしょうか?

どうやらFileReadNumberを 使うべきらしいが、あまりにも変だ

Документация по MQL5: Файловые операции / FileReadDouble
Документация по MQL5: Файловые операции / FileReadDouble
  • www.mql5.com
Файловые операции / FileReadDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Top2n:

csv.から2次元の配列をインポートするのをバイパスして、インジケータから3次元(または2次元)の配列をEAに抽出することは可能かどうか教えてください。

CFileReadDoubleは 2次元配列を考慮するのか、もしそうならどのように考慮するのか?

一般に、csv行列を配列に変換するには、どのような操作を行えばよいのでしょうか?

一般的に、私は、例えば、例を挙げると、どのように理解されていない

ArrayResize(time_buff,size);
      //--- прочитаем данные из файла
      for(int i=0;i<size;i++)
        {
         time_buff[i]=(datetime)FileReadDouble(file_handle);
         ma_buff[i]=FileReadDouble(file_handle);
        }

このように,配列time_buff[i]と 配列ma_buff[i]に同じデータを書き込みます。

https://www.mql5.com/ru/docs/files/filereaddouble の例

また、2次元の配列がある場合、列挙をどのようにアレンジすればよいのでしょうか。

FileReadStringを 使用する場合、文字列の長 さを指定する必要がありますが、セルではなく文字列の桁数を知る必要があるのでしょうか?

どうやらFileReadNumberを 使うべきらしいが、あまりにも変だ

配列を書くという話をしたとき、FileWriteArray()は、書かれたものをどのように読もうとしたのでしょうか
 
Alexey Viktorov:
それと、配列を書くという話だったFileWriteArray()ですが、書かれたものをどのように読もうと したのか教えてください。

//--- путь к файлу
   string path=InpDirectoryName+"//"+InpFileName;
//--- откроем файл
   ResetLastError();
   int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- прочитаем все данные из файла в массив
      FileReadArray(file_handle,arr);
      //--- получим размер массива
      int size=ArraySize(arr);
      //--- распечатаем данные из массива
         Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]);
      Print("Total data = ",size);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      Print("File open failed, error ",GetLastError());
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  = 0.0  = 0.0  = 0.0
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  Total data = 1020100

何が足りないのか、2次元配列への逆変換は理解できたのですが、どうやって

もちろん、私が正しく保存していれば別ですが。

for(int z=1; z<=ARRAY_SIZE_Y; z++) // Перебор по барам, колонка Y
        {
         for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X
           {
            arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5);                // M(I) SMA
           }
        }
      WriteData(1000);
//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }