religare:
Как прочитать время-дату создания файлов в формате TimeLocal()?
Файлы в папке \experts\files\.
как то так наверное...
http://www.bigpi.biysk.ru/bibl/_fullpage/prog/winapi_rumiantsev_ii.pdf
Спасибо, нашел, функция GetFileTime(). Только у меня она возвращает "0". Что-то не так с извлечением данных.
#import "kernel32.dll" int CreateFileA(string lpFileName,int dwDesiredAccess,int dwShareMode,int & lpSecurityAttributes[],int dwCreationDisposition,int dwFlagsAndAttributes,int hTemplateFile); bool GetFileTime (int hFile,int & lpCreationTime[],int & lpLastAccessTime[],int & lpLastWriteTime[]); int CloseHandle (int hObject); int FileTimeToSystemTime (int & lpFileTime[],int & lpSystemTime[]); #import #define GENERIC_READ 0x80000000 #define FILE_SHARE_READ 1 #define OPEN_EXISTING 3 #define INVALID_HANDLE_VALUE -1 int start(){ string FileName="test.txt"; int lpSecurityAttributes[3]; int ftCreate[2]; int ftAccess[2]; int ftWrite[2]; int lpSystemTime[4]; int hFile = CreateFileA(TerminalPath()+"\\experts\\files\\"+FileName, GENERIC_READ, FILE_SHARE_READ, lpSecurityAttributes, OPEN_EXISTING, 0, 0); if(hFile!=INVALID_HANDLE_VALUE){ if(GetFileTime(hFile,ftCreate,ftAccess,ftWrite)){ FileTimeToSystemTime(ftCreate,lpSystemTime); //FileTimeToSystemTime(ftAccess,lpSystemTime); //FileTimeToSystemTime(ftWrite,lpSystemTime); int nYear=lpSystemTime[0]&0x0000FFFF; int nMonth=lpSystemTime[0]>>16; int nDay=lpSystemTime[1]>>16; int nHour=lpSystemTime[2]&0x0000FFFF; int nMin=lpSystemTime[2]>>16; int nSec=lpSystemTime[3]&0x0000FFFF; Alert("nYear="+nYear+", nMonth="+nMonth+", nDay="+nDay+", nHour="+nHour+", nMin="+nMin+", nSec="+nSec+""); } CloseHandle(hFile); } return(0); }
Integer:
Вместо lpSecurityAttributes надо 0.
Круто! Спасибо! Буду экспериментировать. Теперь смогу реализовать такую задачу: 2 файла сохраняются - один из советника, другой - из индикатора. Если различия в сроках обновления больше 2-3 минут, то из индикатора делаем переход на другой тайм-фрейм и возврат на предыдущий. Советник перезапускается. Так можно решить проблему, когда с сервером есть связь, интернет есть, а советник не работает.
religare:
Круто! Спасибо! Буду экспериментировать. Теперь смогу реализовать такую задачу: 2 файла сохраняются - один из советника, другой - из индикатора. Если различия в сроках обновления больше 2-3 минут, то из индикатора делаем переход на другой тайм-фрейм и возврат на предыдущий. Советник перезапускается. Так можно решить проблему, когда с сервером есть связь, интернет есть, а советник не работает.
Круто! Спасибо! Буду экспериментировать. Теперь смогу реализовать такую задачу: 2 файла сохраняются - один из советника, другой - из индикатора. Если различия в сроках обновления больше 2-3 минут, то из индикатора делаем переход на другой тайм-фрейм и возврат на предыдущий. Советник перезапускается. Так можно решить проблему, когда с сервером есть связь, интернет есть, а советник не работает.
А не проще писать в файл TimeLocal()?
Snaf:
А не проще писать в файл TimeLocal()?
А не проще писать в файл TimeLocal()?
Можно и не в файл, проще в глобальную переменную терминала.
religare:
Круто! Спасибо! Буду экспериментировать. Теперь смогу реализовать такую задачу: 2 файла сохраняются - один из советника, другой - из индикатора. Если различия в сроках обновления больше 2-3 минут, то из индикатора делаем переход на другой тайм-фрейм и возврат на предыдущий. Советник перезапускается. Так можно решить проблему, когда с сервером есть связь, интернет есть, а советник не работает.
Круто! Спасибо! Буду экспериментировать. Теперь смогу реализовать такую задачу: 2 файла сохраняются - один из советника, другой - из индикатора. Если различия в сроках обновления больше 2-3 минут, то из индикатора делаем переход на другой тайм-фрейм и возврат на предыдущий. Советник перезапускается. Так можно решить проблему, когда с сервером есть связь, интернет есть, а советник не работает.
Это действительно реально реализовать? Как? Не читать индикатором из другого тайма, а именно окно в котором советник работает перевести на другой тайм и обратно...
evillive:
Это действительно реально реализовать? Как? Не читать индикатором из другого тайма, а именно окно в котором советник работает перевести на другой тайм и обратно...
Это действительно реально реализовать? Как? Не читать индикатором из другого тайма, а именно окно в котором советник работает перевести на другой тайм и обратно...
Раздел 4.5.
Это на случай случайного нажатия того тайм-фрейма, который не является рабочим. Возвращает на минутки. Можно переделать под свои задачи, т.е. в моем случае переключится на один тайм-фрейм, а через несколько секунд вернутся. По идее этого будет достаточно, чтобы советник перезапустился.
void Startimeframe() { int hWnd, wParam; switch(Period()) { case PERIOD_M1: wParam = 33137; break; case PERIOD_M5: wParam = 33138; break; case PERIOD_M15: wParam = 33139; break; case PERIOD_M30: wParam = 33140; break; case PERIOD_H1: wParam = 33135; break; case PERIOD_H4: wParam = 33136; break; case PERIOD_D1: wParam = 33134; break; case PERIOD_W1: wParam = 33141; break; case PERIOD_MN1: wParam = 33334; break; } hWnd = WindowHandle(SymbolMax[nnnn],Period()); if(wParam!=33137) PostMessageA(hWnd,WM_COMMAND,33137,0); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как прочитать время-дату создания файлов в формате TimeLocal()?
Файлы в папке \experts\files\.