从文件MQL4删除行

deleting line from file MQL4

本文关键字:删除行 MQL4 文件      更新时间:2023-10-16

我将EA完成的所有交易保存到CSV文件中。当EA关闭交易时,我必须将字符串的"书籍利润"添加到文件的末尾。例如:以下是交易开放时保存在文件中的行"购买gbpjpy 146.28 145.15",我想在上线的末尾添加字符串"书本利润"并将其保存到文件中。保存后,线应该看起来像"购买gbpjpy 146.28 145.15书籍利润"

int file_handle_dtf=FileOpen("MyTrades.CSV",FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle_dtf!=INVALID_HANDLE){
      while(!FileIsEnding(file_handle_dtf)){
         str_size1=FileReadInteger(file_handle_dtf,INT_VALUE);
         //--- read the string
         str1=FileReadString(file_handle_dtf,str_size1);
         strBP=StringConcatenate(str1,",Book Profit");
         FileWriteString(file_handle_dtf,strBP+"n");
         }
      }

此代码只是覆盖文件,并且无法读取

在写信之前先寻求文件的结尾:

if (FileSeek(file_handle_dtf, 0, SEEK_END)) 
{
   // put file writing code here
}

使用您的四个参数(购买,gbpjpy,146.28,145.15(使用以下功能:

void func_replaceStringInCSV(string _order,string _symbol,string _SL,string _TP)
 {
  int handle=FileOpen("MyTrades.CSV",FILE_READ|FILE_WRITE|FILE_CSV);
  if(handle!=INVALID_HANDLE)
    {
     while(!FileIsEnding(handle))
       {
        int lineStart=(int)FileTell(handle);
        string order=FileReadString( handle);
        if(FileIsLineEnding(handle))continue;
        string symbol=FileReadString(handle);
        if(FileIsLineEnding(handle))continue;
        string SL=FileReadString(handle);
        if(FileIsLineEnding(handle))continue;
        string TP=FileReadString(handle);
        if(FileIsLineEnding(handle))
          {
            if(StringConcatenate(order,symbol,SL,TP)==
            StringConcatenate(_order,_symbol,_SL,_TP))
             {
              string blankSpace="";
              int lineLen=StringLen(StringConcatenate(order,symbol,SL,TP))+3;
              FileSeek(handle,lineStart,SEEK_SET);
              for(int l=0;l<=lineLen;l++)
                 blankSpace+=" ";
              FileWrite(handle,order,symbol,SL,TP,"Book Profit");
              FileFlush(handle);
             }
          }
       }
    }
 }