Думаю, можно в Экселе поправить. Не надо для этого ничего переписывать.
_________
Так вот же автор! Не пытались обратиться к нему?
Я написал ему письмо. Но тем не менее. Поправить можно где угодно. Но хотелось бы не делать постоянно лишние действия. Хотелось бы чтобы сам файл был таким, чтобы его понимала другая программа, где я и буду разрабатывать алгоритм. Чтобы оставалось только нажимать одну кнопку - и айл прочитан. А не менять его постоянно руками.
Попробуйте, не ошибся ли:
//+------------------------------------------------------------------+ //| Записываем поступившие тики //+------------------------------------------------------------------+ void WriteTick() { int _GetLastError; double curBid; int curDigits; Comment( strComment ); for ( int curSymbol = 0; curSymbol < SymbolsCount; curSymbol ++ ) { if ( FileHandle[curSymbol] < 0 ) { continue; } curBid = MarketInfo( SymbolsArray[curSymbol], MODE_BID ); curDigits = MarketInfo( SymbolsArray[curSymbol], MODE_DIGITS ); if ( NormalizeDouble( curBid - preBid[curSymbol], curDigits ) < 0.00000001 && NormalizeDouble( preBid[curSymbol] - curBid, curDigits ) < 0.00000001 ) { continue; } preBid[curSymbol] = curBid; if ( WriteWarnings ) { if ( !FileSeek( FileHandle[curSymbol], -strLEN, SEEK_END ) ) { _GetLastError = GetLastError(); Alert( "FileSeek( " + FileHandle[curSymbol] + ", -strLEN, SEEK_END ) - Error #", _GetLastError ); continue; } } else { if ( !FileSeek( FileHandle[curSymbol], 0, SEEK_END ) ) { _GetLastError = GetLastError(); Alert( "FileSeek( " + FileHandle[curSymbol] + ", 0, SEEK_END ) - Error #", _GetLastError ); continue; } } string sdt = TimeToStr( TimeCurrent(), TIME_DATE | TIME_SECONDS ); int nchar, npos = 20; while (npos > 0) { npos--; nchar = StringGetChar( sdt, npos); if (nchar < '0' || nchar > '9') StringSetChar( sdt, npos, ' '); } if ( FileWrite( FileHandle[curSymbol], sdt, DoubleToStr( curBid, curDigits ) ) < 0 ) { _GetLastError = GetLastError(); Alert( "FileWrite() Error #", _GetLastError ); } if ( WriteWarnings ) { if ( FileWrite ( FileHandle[curSymbol], strEXPERT_WAS_STOPED ) < 0 ) { _GetLastError = GetLastError(); Alert( "FileWrite() Error #", _GetLastError ); } } FileFlush( FileHandle[curSymbol] ); } }
// old: // if ( FileWrite( FileHandle[curSymbol], TimeToStr( TimeCurrent(), TIME_DATE | TIME_SECONDS ), DoubleToStr( curBid, curDigits ) ) < 0 ) // { // _GetLastError = GetLastError(); // Alert( "FileWrite() Error #", _GetLastError ); // } if ( FileWrite( FileHandle[curSymbol], StringConcatenate( TimeYear( TimeCurrent() ), " ", str00( TimeMonth( TimeCurrent() ) ), " ", str00( TimeDay( TimeCurrent() ) ), " ", str00( TimeHour( TimeCurrent() ) ), " ", str00( TimeMinute( TimeCurrent() ) ), " ", str00( TimeSeconds( TimeCurrent() ) ), " ", DoubleToStr( curBid, curDigits ) ) ) < 0 ) { _GetLastError = GetLastError(); Alert( "FileWrite() Error #", _GetLastError ); }
Зачем так часто вызывать функцию TimeCurrent. Должен ли компилятор оптимизировать код, чтобы вызов был сделан только один раз, ведь текущее время постоянно меняется?
И если подсчёта секунд TimeCurrent будет вызван, когда минута сменится, то получится (хоть это и маловероятно), что предыдущий записанный тик будет иметь время в секундах большее, а минуты у них будут одинаковы. Будет так примерно: "2009 09 21 19 14 57 1.4684 2009 09 21 19 14 00 1.4685".
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
В приложении эксперт.
Он пишет в файл тики.
В виде вот таких строк:
2009.09.21 19:14:07;1.4684
а нужно например так:
2009 09 21 19 14 07 1.4684
кто-нибудь может поправить код? С языком mql не знаком совсем.