새 줄에 파일 쓰기

 

파일 쓰기에 대한 도움말 .

기능은 다음과 같습니다.

 if (DayOfWeek()==day){ //Print("Woking . . .");
  ac= Symbol (); 
  ss1 = ac+day+ ";" +TimeToStr( TimeCurrent (),TIME_MINUTES)+ ";" +DoubleToStr(AccountBalance(), 1 )+ ";" +DoubleToStr(AccountEquity(), 1 )+ "\n" ;
   WriteFile (path, ss1);
   day++; if (day== 6 )day= 1 ;
}

........


//+------------------------------------------------------------------+
void WriteFile(string path,string buffer){
int count=StringLen(buffer),result,handle=_lopen(path,1); 
if(handle<0){ handle=_lcreat(path,0);
if(handle<0){ Print ("Ошибка создания файла ",path);return;}
result = _lclose (handle); }
handle=_lopen (path,1);if(handle<0){Print("Ошибка открытия файла ",path);return;}
result=_llseek(handle,0,0);if(result<0) {Print("Ошибка установки указателя"); return; }
buffer = buffer + "\n";
result=_lwrite(handle,buffer,count); if(result<0)Print("Ошибка записи в файл ",path," ",count," байт");
//result=_lclose (handle); if(result<0)Print("Ошибка закрытия файла ",path);
  }

Excel의 새 줄에서 새 데이터를 작성해야 하고 자습서 및 설명서를 포함하여 포럼의 모든 코드를 검색했지만 결과는 0입니다 :(((
 

나는 Kimov 기능을 사용합니다. 파일을 엽니다. 줄을 씁니다. 파일을 닫은 다음 원을 만듭니다.

 //+------------------------------------------------------------------+
//| Запись строки в файл                                             |
//+------------------------------------------------------------------+
void WritingLineInFile( string FileName, string text)
{
  int file_handle= FileOpen (FileName, FILE_READ | FILE_WRITE , " " );

        if (file_handle> 0 )
        {
                FileSeek (file_handle, 0 , SEEK_END );
                FileWrite (file_handle, text);
                FileClose (file_handle);
        }
}
 

라이브 편집...

 

덕분에 효과가 있었습니다.

나는 또한 Kimovskaya를 운전했지만 행은 달랐습니다. handle = FileOpen("Summa.txt", FILE_CSV |FILE_WRITE, '\t' );

 
Donatom :

나는 Kimov 기능을 사용합니다. 파일을 엽니다. 줄을 씁니다. 파일을 닫은 다음 원을 만듭니다.


확인하고 싶지는 않지만 FileFlush() https://docs.mql4.com/en/files/FileFlush 가 매번 파일을 닫지 않도록 해야 한다고 생각합니다. FileFlush()가 상황을 수정하면 더 좋습니다. init()에서 파일을 열고 deinit()에서 닫고 비슷한 작업을 수행했으며 다시 추가하는 것 같습니다. FileWrite(file_handle, ""); 새 줄을 작성합니다 - 즉. 각 FileWrite()는 새 줄에서 작성됩니다.

추신: FileFlush()를 사용하여 닫지 않고 지속적으로 작성되는 비표준 오프라인 차트가 있습니다.

 
int 파일 쓰기 배열 ( int 핸들, 객체 array[] , int start, int count)
이 함수는 배열을 바이너리 파일에 씁니다. int, bool, datetime 및 color 유형의 배열은 4바이트 정수로 요소별로 작성됩니다. 이중 배열은 8바이트 부동 소수점 숫자로 요소별로 작성됩니다. 문자열 유형의 배열은 각 줄 뒤에 줄 종결자 "\r\n"이 자동으로 추가된 후 한 줄씩 작성됩니다.

구분자 - csv 파일의 구분 문자입니다. 기본 문자는 ';'입니다.
저것들. 포함하지 마십시오
S)+ ";" +Do

1-2 요소에서 빈 배열을 만들 수도 있습니다 :) 또는 모두 동일하게 추가할 수 있습니다 ...
+DoubleToStr(AccountEquity(), 1 )+ "\r \n" ;
      
FileWrite(path, Symbol (), TimeToStr(TimeCurrent(),TIME_DATE),DoubleToStr(AccountBalance(), 1 ),DoubleToStr(AccountEquity(), 1 ),TimeToStr(TimeCurrent(),TIME_SECONDS)+ "\r \n" );

 

안녕하세요. 나는 새로운 줄에 각각의 새로운 주문을 쓰려고 노력하고 있는데, 내가 뭘 잘못하고 있는지 말해줘? 마지막으로 열린 것만 기록됩니다.

무효 OnTick()

{
int i, 유형;
이중 로트=0,sl=0,tp=0;
for(i=0; i<OrdersTotal(); i++)
{
if(주문선택(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(주문유형()==OP_BUY)
{
유형=0;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
if(주문 유형()==OP_SELL)
{
유형=1;
lot=OrderLots();
sl=OrderStopLoss();
tp=OrderTakeProfit();
}
}
}
}

sl=NormalizeDouble(sl, 숫자);
tp=NormalizeDouble(tp, 자릿수);
//--- 파일 열기
int h=FileOpen("Copy.txt", FILE_WRITE ,";");
파일찾기(h, 0, SEEK_END);
FileWrite(h,_Symbol,유형,sl,tp,lot);
파일 닫기(h); // 파일을 닫는다

Comment("\n 주문 유형: ",유형,
"\n 주문 로트: ", 로트,
"\n 손절매: ",sl,
"\n TakeProfit: ",tp);
}
Купить советник или заказать?
Купить советник или заказать?
  • AM2
  • www.forexsystems.biz
Не секрет, что у каждого трейдера торгующего на рынке Форекс со временем складывается собственная стратегия со своими правилами и запретами. Причем не каждый сможет научиться торговать именно Вашей стратегией в прибыль, даже, если она дает Вам профит в течении продолжительного времени. У каждого свои эмоции, свой характер и свои запросы. Купить...
 
EfremovSergey :

안녕하세요. 나는 새로운 줄에 각각의 새로운 주문을 쓰려고 노력하고 있는데, 내가 뭘 잘못하고 있는지 말해줘? 마지막으로 열린 것만 기록됩니다.


잘못된 플래그로 인해 파일을 계속 덮어쓰고 있습니다. 쓰기뿐만 아니라 읽기를 위해 파일을 열어야 합니다 . 그러면 다시 생성되지 않습니다.

 int h= FileOpen ( "Copy.txt" , FILE_WRITE | FILE_READ , ";" );
 
Ihor Herasko :

잘못된 플래그로 인해 파일을 계속 덮어쓰고 있습니다. 쓰기뿐만 아니라 읽기를 위해 파일을 열어야 합니다 . 그러면 다시 생성되지 않습니다.

정말 감사합니다. 매우 감사합니다!

함수 자체에 대한 설명에는 이 정보가 포함되어 있습니다. 어떤 이유에서인지 간과하고 더 파고들지조차 몰랐습니다... csv 대신 txt라는 잘못된 파일 형식을 선택했다고 생각하기 시작했지만 모든 것이 간단하다는 것이 밝혀졌습니다. )))

 
Plz를 읽은 후 줄을 삭제하는 방법을 알려주십시오. 이 작업을 수행하는 간단한 방법이 있습니까?
 
EfremovSergey :
Plz를 읽은 후 줄을 삭제하는 방법을 알려주십시오. 이 작업을 수행하는 간단한 방법이 있습니까?

대부분의 경우 전체 파일을 읽고 RAM의 데이터를 필요한 대로 변경한 다음 전체 파일을 덮어쓰는 것이 좋습니다. 이것은 open 내부에서 데이터를 이동하는 것보다 쉽습니다.
Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
[in]  Имя открываемого файла, может содержать подпапки. Если файл открывается для записи, то указанные подпапки будут созданы в случае их отсутствия. [in]  значение, используемое в качестве разделителя в txt или csv-файле. Если для csv-файла разделитель не указан, то по умолчанию используется символ табуляции. Если для txt-файла разделитель не...