Запись в файл

 
Не получается записывать данные в файл сsv. Прошу подскажите или дайте индикатор с работающей записью в файл.

К примеру. Вот код , как я вижу, работы с файлом.
int handle; 
  handle=FileOpen("Lots.csv",FILE_CSV|FILE_READ| FILE_WRITE,","); 
  if(handle<1) 
    { 
     Print("File my_data.dat not found, the last error is ", GetLastError()); 
     return(false); 
    } 
str=FileReadString(handle); 
 FileWrite(handle, "1"); 

FileClose(handle); 

 
у kompostera очень клево получается (ветка называлась что-то типа "экспертописателям"), посмотри его библиотеку, уверен там есть и запись в файл, а если не найдешь то вот библиотека Rosha там тоже запись в файл присутствует (хотя вроде и у тебя , на первый взгляд, нет ошибок):
//+------------------------------------------------------------------+ 
//|                                             EquityOscillator.mq4 | 
//|                                                             Rosh | 
//|                                    http://forexsystems.ru/phpBB/ | 
//+------------------------------------------------------------------+ 
#property copyright "Rosh" 
#property link      "http://forexsystems.ru/phpBB/" 
int eo_Bars,ExtHandle; 
//double 
//+------------------------------------------------------------------+ 
//| expert initialization function                                 | 
//+------------------------------------------------------------------+ 
int init () 
  { 
  ExtHandle=FileOpen("Equity.csv",FILE_WRITE | FILE_CSV,";"); 
  return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert deinitialization function                                 | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 
  if(ExtHandle>0) FileClose(ExtHandle); 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| script program start function                                    | 
//+------------------------------------------------------------------+ 
void WriteEquity() 
  { 
   double eo_AOPLong, eo_AOPShort; 
   double eo_LongLots,eo_ShortLots; 
   int eo_Counter,eo_Total,eo_CurrLongOrders,eo_CurrShortOrders; 

//---- 
   if (IsTesting()&&(eo_Bars!=Bars)) 
      { 
      eo_Bars=Bars; 
      eo_Total=OrdersTotal(); 
      if (eo_Total>0) 
         { 
         eo_AOPLong=0.0; 
         eo_AOPShort=0.0;    
         eo_LongLots=0.0; 
         eo_ShortLots=0.0; 
         for (eo_Counter=0;eo_Counter<eo_Total;eo_Counter++)// подсчет открытых позиций 
            { 
            OrderSelect(eo_Counter, SELECT_BY_POS, MODE_TRADES); 
            if (OrderType()==OP_BUY) 
               { 
               eo_CurrLongOrders++; 
               eo_AOPLong=eo_AOPLong+OrderLots()*OrderOpenPrice(); 
               eo_LongLots=eo_LongLots+OrderLots(); 
               } 
            if (OrderType()==OP_SELL) 
               { 
               eo_CurrShortOrders++; 
               eo_AOPShort=eo_AOPShort+OrderLots()*OrderOpenPrice(); 
               eo_ShortLots=eo_ShortLots+OrderLots(); 
               } 
            }// подсчет открытых позиций 
         } 
            //---------------  усреднение --------------------- 
            
         if (eo_CurrLongOrders>0) eo_AOPLong=eo_AOPLong/eo_LongLots; 
         if (eo_CurrShortOrders>0)eo_AOPShort=eo_AOPShort/eo_ShortLots; 
         //Print("eo_AOPLong=",eo_AOPLong,"   eo_AOPShort=",eo_AOPShort);    
            //---------------  усреднение --------------------- 
      
      if (eo_Total>0) 
         { 
         if (eo_AOPLong>0) FileWrite(ExtHandle,TimeToStr(Time[1]),(Close[1]-eo_AOPLong)/Point); 
         if (eo_AOPShort>0) FileWrite(ExtHandle,TimeToStr(Time[1]),(eo_AOPShort-Close[1])/Point); 
         if ((eo_AOPShort==0)&&(eo_AOPLong==0)) FileWrite(ExtHandle,TimeToStr(Time[1]),0.0); 
         } 
      } 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+
 
у kompostera очень клево получается (ветка называлась что-то типа "экспертописателям"), посмотри его библиотеку, уверен там есть и запись в файл
Уже можно прям на лаврах почивать =)))

Там есть, но не в csv, а в txt..
А в цсв есть в новой версии, которую я ещё тестирую - пока не выкладывал $)
Кусок кода:
#include <stdlib.mqh>
int start()
{
	int _GetLastError;
	string file_name = "logs\\" + TimeToStr( LocalTime(), TIME_DATE ) + ".csv";
	string text0 = "first string";
	string text1 = "0.0123";
	string text2 = TimeToStr( LocalTime(), TIME_SECONDS );
	int file_handle = FileOpen ( file_name, FILE_READ | FILE_WRITE );
	if ( file_handle > 0 )
	{
		FileSeek ( file_handle, 0, SEEK_END );
		if ( FileWrite ( file_handle, text0, text1, text2 ) < 0 )
		{
			_GetLastError = GetLastError();
			Print( "Ошибка при FileWrite ( ", file_handle, ", \"", text0, "\", \"", text1, "\", \"", text2, "\" ), GetLastError() = ", _GetLastError, ", ErrorDescription = ", ErrorDescription( _GetLastError ) );
		}
		FileClose ( file_handle );
	}
	else
	{
		_GetLastError = GetLastError();
		Print( "Ошибка при FileOpen( \"", file_name, "\", FILE_READ | FILE_WRITE ), GetLastError() = ", _GetLastError, ", ErrorDescription = ", ErrorDescription( _GetLastError ) );
	}
}
 
Уже можно прям на лаврах почивать =)))

Компостер молодца :) !!!
 
Вот реальная программа с помощью которой я конвертировал файлы котировок из формата МТ3 бид/аск в формат МТ4 бид. Оба файла должны быть в формате csv и иметь расширение csv.

extern double deltaO=-1;
extern double deltaH=-3;
extern double deltaL= 0;
extern double deltaC=-1;
extern string FileInput;
extern string FileOutput;

string   NumberStr;
string   DateStr;
string   TimeStr;
string   DateLong;
datetime Date;
double   O;
double   H;
double   L;
double   C;
double   V;
int      FHin;
int      FHout;
bool     FileLineEnd=false;
bool     FileEnd=false;
bool     Work=true;


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//---- 
if (Work==false) return(0); 

FHin= FileOpen (FileInput,FILE_CSV,",");
FHout=FileOpen(FileOutput,FILE_CSV|FILE_WRITE,",");

while (FileIsEnding(FHin)==false)
  {
    DateStr=FileReadString(FHin);
    TimeStr=FileReadString(FHin);
    NumberStr=FileReadString(FHin);
    O=StrToDouble(NumberStr);
    O=O+deltaO*Point;
    NumberStr=FileReadString(FHin);
    H=StrToDouble(NumberStr);
    H=H+deltaH*Point;
    NumberStr=FileReadString(FHin);
    L=StrToDouble(NumberStr);
    L=L+deltaL*Point;
    NumberStr=FileReadString(FHin);
    C=StrToDouble(NumberStr);
    C=C+deltaC*Point;
    NumberStr=FileReadString(FHin);
    V=StrToDouble(NumberStr);
    if (O>H) O=H;
    if (C>H) C=H;
    if (O<L) O=L;
    if (C<L) C=L;
    FileWrite(FHout,DateStr,TimeStr,DoubleToStr(O,4),DoubleToStr(H,4),
              DoubleToStr(L,4),DoubleToStr(C,4),DoubleToStr(V,0));
  }

FileClose(FHin);
FileClose(FHout);

Work=false;   
//----
   return(0);
  }

Причина обращения: