Добрый день коллеги!
Необходимо решить вопрос стат информации, отражающей после прогона в тестере время удержания каждой сделки в часах/днях и барах.
Лучше даже с выгрузкой в отдельный файл, дабы проще потом было перенести в excel и там провести анализ полученного.
Как лучше можно это сделать, кто-то затевался?
Через OnTester() можно сделать.
Перебрать историю ордеров (этого прогона в тестере) в цикле и собрать нужную статистику. Я так и делаю, только не в файл вывожу, а в журнал, уже посчитанную и оформленную статистику в компактном виде.
Через OnTester() можно сделать.
Перебрать историю ордеров (этого прогона в тестере) в цикле и собрать нужную статистику. Я так и делаю, только не в файл вывожу, а в журнал, уже посчитанную и оформленную статистику в компактном виде.
Благодарю! Все получилось!!
Добрый день коллеги!
Необходимо решить вопрос стат информации, отражающей после прогона в тестере время удержания каждой сделки в часах/днях и барах.
Лучше даже с выгрузкой в отдельный файл, дабы проще потом было перенести в excel и там провести анализ полученного.
Как лучше можно это сделать, кто-то затевался?
А что, сразу в excel нельзя записывать? Вопрос не подколка. Я сам не знаю. Поэтому спрашиваю. Если можно, то как надо прописать открытие файла в советнике? Заранее благодарю. Тип excel_евского файла там явно при открытии вроде не разрешён, но можно ли сформировать и получится ли так, чтобы просто можно было открыть этот файл Excel_ем.
Мне недавно была нужна некоторая статистика, я написал индикатор для мт5 который при работе советника в режиме визуализации пишет информацию в файл.
Если очень, очень, очень надо могу подправить чтобы писал нужную информацию.
Если вы сами сможете исправить, могу выложить код.
Мне недавно была нужна некоторая статистика, я написал индикатор для мт5 который при работе советника в режиме визуализации пишет информацию в файл.
Если очень, очень, очень надо могу подправить чтобы писал нужную информацию.
Если вы сами сможете исправить, могу выложить код.
Буду признателен за код. С интересом его рассмотрю и надеюсь применю в своём тестировании.
Буду признателен за код. С интересом его рассмотрю и надеюсь применю в своём тестировании.
Только для MT5
//+------------------------------------------------------------------+ //| WriteResult.mq5 | //| Viktorov | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Viktorov" #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #property indicator_plots 0 input string fileName = "TradeResult"; // Имя файла для записи int fileHandle = -1; /**************Custom indicator initialization function**************/ int OnInit() { fileHandle = FileOpen(fileName+".csv", FILE_CSV|FILE_READ|FILE_WRITE|FILE_COMMON); ulong fileSize = FileSize(fileHandle); bool fileSeek = FileSeek(fileHandle, (long)fileSize, SEEK_SET); FileWrite(fileHandle, "Тип", "Лот", "Profit в деньгах", "Profit в пунктах"); FileClose(fileHandle); return(INIT_SUCCEEDED); }/*******************************************************************/ /****************Custom indicator iteration function*****************/ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { ENUM_DEAL_TYPE type = -1; static int total = -1; HistorySelect(0, TimeCurrent()); if(MQLInfoInteger(MQL_TESTER) && HistoryDealsTotal() > total) { total = HistoryDealsTotal(); ulong ticket = HistoryDealGetTicket(total-1); type = (ENUM_DEAL_TYPE)HistoryDealGetInteger(ticket, DEAL_TYPE); if(HistoryDealGetInteger(ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT) { HistorySelectByPosition(HistoryDealGetInteger(ticket, DEAL_POSITION_ID)); double priceOpen = HistoryDealGetDouble(HistoryDealGetTicket(0), DEAL_PRICE); double priceClose = HistoryDealGetDouble(ticket, DEAL_PRICE); double profit = HistoryDealGetDouble(ticket, DEAL_PROFIT); int pipsProfit = int(profit > 0 ? fabs(priceOpen-priceClose)/_Point : -fabs(priceOpen-priceClose)/_Point); type = (ENUM_DEAL_TYPE)HistoryDealGetInteger(HistoryDealGetTicket(0), DEAL_TYPE); double lot = HistoryDealGetDouble(HistoryDealGetTicket(0), DEAL_VOLUME); fileHandle = FileOpen(fileName+".csv", FILE_CSV|FILE_READ|FILE_WRITE|FILE_COMMON); ulong fileSize = FileSize(fileHandle); bool fileSeek = FileSeek(fileHandle, (long)fileSize, SEEK_SET); FileWrite(fileHandle, (type == DEAL_TYPE_SELL ? "Sell" : type == DEAL_TYPE_BUY ? "Buy" : EnumToString(type)) , DoubleToString(lot, 2) , DoubleToString(profit, 2) , pipsProfit); FileClose(fileHandle); } } //--- return value of prev_calculated for next call return(rates_total); }/*******************************************************************/
Только для MT5
Спасибо, буду работать.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день коллеги!
Необходимо решить вопрос стат информации, отражающей после прогона в тестере время удержания каждой сделки в часах/днях и барах.
Лучше даже с выгрузкой в отдельный файл, дабы проще потом было перенести в excel и там провести анализ полученного.
Как лучше можно это сделать, кто-то затевался?