В индикаторе подобные схемы будут работать только на демо или реале, потому что для индикаторов не моделируется серверное время, все функции получения даты и время возвращают данные последней записи в текущей истории, вот такой косяк в тестере.
Проверить это просто в метод start() индикатора просто добавте код возвращающий через алерт текущее «смоделированное» время
и будете во время теста получать все время одни и теже данные. Хотя в справке четко написано
datetime TimeCurrent(
)
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.
Замечание: при тестировании последнее известное время сервера моделируется.
Но нет уточнения для чего именно моделируется, а для чего нет, для индикаторов видимо нет.
И какой выход из этого, как мне в тестере решать эту проблему? Для демо и реала проблем нет, можно взять iTime с часового ТФ.
Но мне нужно не последнее время сервера, а начало нового часа определить.
Ох, этот вечный парсинг строк… и сейчас выручил :)
Параметр step – номер текущего считаемого бара в индикаторе,
если нужно конечно корректно считать историю, а если нужно только текущее данные
во время теста то можно просто присвоить 0.
Ох, этот вечный парсинг строк… и сейчас выручил :)
Параметр step – номер текущего считаемого бара в индикаторе, если нужно конечно корректно считать историю, а если нужно только текущее данные во время теста то можно просто присвоить 0.
Спасибо, попробую приспособить, но уже завтра, пора спать.
То есть, открыл файл на запись, записал туда текст, закрыл файл.
Опять открыл, но для чтения, прочитал из него текст, вывел текст в строку комментария на графике, закрыл файл.
Так вот, всё это работает и комментарий на график выводится, но файла в той директории я не нашёл! Более того, пустил поиск по всему диску C:\, но опять файла не нашёл! Мистика какая-то! Файл, вроде есть, но его нет.
Когда к простому имени файла я добавил полный путь к папке /EXPERTS/FILES, то вышла ошибка о неправильном имени файла.
Кстати ваш код, тоже очень даже рабочий. Его можно даже еще более упростить
Так что со своим методом я немного перемудрил, все можно сделать и по проще :))
Я не случайно брала двойную конструкцию if, я использую как проверку на начало нового бара для определенных логических задач, так и переопределение переменных при наступлении нового часа, а последнюю функцию я внесла внутрь первой, чтобы к ней не было обращений по каждому тику, а только по началу нового бара.
В индикаторе подобные схемы будут работать только на демо или реале, потому что для индикаторов не моделируется серверное время, все функции получения даты и время возвращают данные последней записи в текущей истории, вот такой косяк в тестере.
Проверить это просто в метод start() индикатора просто добавте код возвращающий через алерт текущее «смоделированное» время
и будете во время теста получать все время одни и теже данные. Хотя в справке четко написано
Замечание: при тестировании последнее известное время сервера моделируется.
Но нет уточнения для чего именно моделируется, а для чего нет, для индикаторов видимо нет.
И какой выход из этого, как мне в тестере решать эту проблему? Для демо и реала проблем нет, можно взять iTime с часового ТФ.
Сейчас что-нибудь изобразим и для этого случая…
в принципе с натяжкой можно считать что последнее время сервера совпадает с Time(0)
Попробовала такую конструкцию, начала работать, но не совсем корректноНо мне нужно не последнее время сервера, а начало нового часа определить.
Но мне нужно не последнее время сервера, а начало нового часа определить.
Ох, этот вечный парсинг строк… и сейчас выручил :)
Параметр step – номер текущего считаемого бара в индикаторе, если нужно конечно корректно считать историю, а если нужно только текущее данные во время теста то можно просто присвоить 0.
Ох, этот вечный парсинг строк… и сейчас выручил :)
Параметр step – номер текущего считаемого бара в индикаторе, если нужно конечно корректно считать историю, а если нужно только текущее данные во время теста то можно просто присвоить 0.
Спасибо, попробую приспособить, но уже завтра, пора спать.
Помогите разобраться в мистике.
Хочу сохранять в файле данные торговли. Знаю, что они сохраняются в папке терминала /EXPERTS/FILES .
Написал следующий тестовый код (обработку ошибок убрал):
---------------
string FileName = "MyFile.csv";
int handle;
handle = FileOpen(FileName, FILE_CSV|FILE_WRITE, ';');
FileWrite(handle, " Proba");
FileClose(handle);
handle = FileOpen(FileName, FILE_CSV|FILE_READ,';');
Comment (FileReadString(handle), " FileName = ", FileName, " FileSize = ", FileSize (handle));
FileClose(handle);
------------
То есть, открыл файл на запись, записал туда текст, закрыл файл.
Опять открыл, но для чтения, прочитал из него текст, вывел текст в строку комментария на графике, закрыл файл.
Так вот, всё это работает и комментарий на график выводится, но файла в той директории я не нашёл! Более того, пустил поиск по всему диску C:\, но опять файла не нашёл! Мистика какая-то! Файл, вроде есть, но его нет.
Когда к простому имени файла я добавил полный путь к папке /EXPERTS/FILES, то вышла ошибка о неправильном имени файла.
Ну не должно так быть! Не правильно это!
Где мой файл?
В ОЗУ.
Разбейте процесс записи и чтения, например так
Файл успеет записаться на жесткий диск и вы его найдете.
Попробовала такую конструкцию, начала работать, но не совсем корректноНо мне нужно не последнее время сервера, а начало нового часа определить.
Похоже, не корректность работы связана с пропуском баров в истории на которой произвожу тестирование.
Попробовала такую конструкцию, начала работать, но не совсем корректноНо мне нужно не последнее время сервера, а начало нового часа определить.
Кстати ваш код, тоже очень даже рабочий. Его можно даже еще более упростить
Так что со своим методом я немного перемудрил, все можно сделать и по проще :))
Кстати ваш код, тоже очень даже рабочий. Его можно даже еще более упростить
Так что со своим методом я немного перемудрил, все можно сделать и по проще :))
Я не случайно брала двойную конструкцию if, я использую как проверку на начало нового бара для определенных логических задач, так и переопределение переменных при наступлении нового часа, а последнюю функцию я внесла внутрь первой, чтобы к ней не было обращений по каждому тику, а только по началу нового бара.