Запись суммарного профита в файл.

 

Дорогие участники!

Прошу помощи.

Ищу грааль форекса в хеджировании валютных пар.

Столкнулся с проблемой: очень необходим кусок кода который записывает суммарный профит по всем открытым позициям в файл.

С уважением.

Александр.

 
Как-то так:

bool ProfitToFile( string FILE_NAME )
{   
   double profit = 0;
   for ( int i = OrdersTotal() - 1; i >= 0; i -- )
   {
           if ( !OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) { Print( "OrderSelect error #", GetLastError() ); continue; }
           //тут выбираете позиции по своему признаку: символ, меджик, тип...
           profit = profit + OrderProfit() + OrderSwap() + OrderCommission(); //Своп и комишн опционально
   }
   
   int FILE = FileOpen( FILE_NAME, FILE_READ|FILE_WRITE|FILE_CSV );
   
   if ( FILE < 0 ) { Print( "File open error #", GetLastError() ); return(false); }

   int res = FileWrite( FILE, DoubleToString( profit, 2 ) );

   FileClose( FILE );

   if ( res < 0 ) { Print( "File write error #", GetLastError() ); }

   return(true);
}
 

Спасибо щас буду пробовать.

 

Я использую MQL4

Не подскажете код функции DoubleToString

Компилятор у меня её не знает.

 
Сорри, из пятерки притащил) В 4-ке она называется DoubleToStr
 

Спасибо всё заработало.

Компилятор не ругается но и в файл не пишет.

Буду разбиратсья

 

Разобрался всё работает.

А не подскажете что нужно поправить, чтобы в файл значения добавлялись построчно а не перезаписывались.

Ваша функция перезаписывает постоянно первую запись файла.

Хотя в функции открытия файла стоит: FILE_READ | FILE_WRITE.

 

Сам удивлен, файл должен дописываться, а не перезаписываться...

Попробуйте перед вызовом функции FileWrite вызывать FileSeek( FILE, 0, SEEK_END ).

 

Огромное спасибо.

Всё работает прекрасно.

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