Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавили поддержку испанского языка. Заходи и изучай!
Alexander
300
Alexander 2010.09.17 12:26 

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

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

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

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

С уважением.

Александр.

hasayama
609
hasayama 2010.09.17 13:00  
Как-то так:

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);
}
Alexander
300
Alexander 2010.09.17 13:10  

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

Alexander
300
Alexander 2010.09.17 13:17  

Я использую MQL4

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

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

hasayama
609
hasayama 2010.09.17 13:20  
Сорри, из пятерки притащил) В 4-ке она называется DoubleToStr
Alexander
300
Alexander 2010.09.17 13:26  

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

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

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

Alexander
300
Alexander 2010.09.17 13:42  

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

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

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

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

hasayama
609
hasayama 2010.09.17 14:34  

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

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

Alexander
300
Alexander 2010.09.17 14:46  

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

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

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий