qomment:
При этом в истории этого дня вообще нет.
Кто-нибудь может прояснить ситуацию?
Как может быть занято имя объекта когда я имена определяю только через Graph_counter++?
на какое имя объекта она выдает ошибку и каков в этот момент счетчик?
кстати зачем нужно это умножение на 1.0 с нормализацией чтобы получить то же самое целое число?
И кстати, почему не выводите на печать само имя, хотелось бы посмотреть.
Andrei01: кстати зачем нужно это умножение на 1.0 с нормализацией чтобы получить то же самое целое число?
Наверно, это просто буквально понятое имя функции DoubleToStr().
Рефлексия:
Вопрос: Кто-нибудь может прояснить ситуацию?
Варианты ответов (не всегда автору ветки):
1. С объектами можно поступить например так
2. зачем нужно это умножение на 1.0 с нормализацией
3. почему не выводите на печать само имя
4. это просто буквально понятое имя функции
Ответ: у Вас ошибка в алгоритме. Не в реализации.
"Порядок освобождает разум" (по-моему,- Декарт).
tara:
"Упорядоченные рефлексы освобождают разум от мышления" (ц) Ацкий Сотона.
Рефлексия:
"Порядок освобождает разум" (по-моему,- Декарт).

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Время от времени советник начинает выдавать ошибку 4200 - Object already exists. При том, что я четко контролирую присвоение каждому вновь создаваемому объекту уникального имени, типа "1l, 2l, 3l, " и т.д.
Попробовал проверять перед созданием объекта - существует ли такой уже в терминале - оказывается да, но его координаты - время и цена - совершенно неадекватны, типа цены 109 для EURUSD и времени соответствующего выходному дню 10 лет назад.
При этом в истории этого дня вообще нет.
Кто-нибудь может прояснить ситуацию?
Спасибо.
Код примерно такой:
int Handle; // handle журнала
int Graph_counter, ;// глобальная переменная, единственное обращение к ней - ниже
...
Graph_counter++;// счетчик наращивается перед любой операцией ObjectCreate и больше не используется нигде, так что пересечений имен быть не может
string Name=DoubleToStr(1.0*Graph_counter,0)+"l"; // имя объекта
if(ObjectFind(Name)==0)
{
FileWrite(Handle,"==== it says 4200 =======" );
FileWrite(Handle," time0, time1, price0, price1:",TimeToStr(ObjectGet(Name,0))," ",TimeToStr(ObjectGet(Name,2))," ", DoubleToStr(ObjectGet(Name,1),5)," ",DoubleToStr(ObjectGet(Name, 3),5));
}
ObjectCreate(Name, ...);
FileWrite(Handle, "Last error=",GetLastError());
А результат в случае ошибки (для EURUSDM5 тестируемого на интервале январь-февраль 2011)
==== it says 4200 =======
time0, time1, price0, price1: 2000.02.15 09:30 2000.02.16 06:00 109.04000 110.47500
Last error=4200