我将我的EA完成的所有交易保存到CSV文件中。当EA关闭交易时,我必须在文件中特定行的末尾添加字符串“ Book Profit”。 例如: 以下是打开交易时文件中保存的行 “购买GBPJPY 146.28 145.15”,我想在上一行的末尾添加字符串“ Book Profit”并将其保存到文件中。 保存后行应该看起来像 “买入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");
}
}
此代码仅覆盖文件,不可读
答案 0 :(得分:0)
在写入文件之前先寻找文件的结尾
if(FileSeek(file_handle_dtf,0,SEEK_END)) { 将文件编写代码放在这里 }
答案 1 :(得分:0)
对以下四个参数(购买,英镑/日元,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);
}
}
}
}
}