Да что ж это творится то??? - страница 3

 
Сергей Таболин:

Ренат, спасибо. Только вот объясните мне тёмному, какая разница между 2*2+2*3 в оптимизаторе и одиночном проходе? Ну хоть намекните где именно может быть нестыковка?

Намекну.

Это в вашем сознании есть только 2*2, а в реальности есть громадное рыночное окружение и громадное количество вашего кода. Грубо, минимум на 3 порядка больше переменных и условий.

Пока вы будете бегать вокруг в эконом режиме, причин  не найдете. Как и играя в игру "простого кодера". Взялись за програмирование, научитесь отлаживаться.

Я третий раз вам советую - распринтуйте и глазами посмотрите где начались расхождения в сделках.

 
Renat Fatkhullin:

Намекну.

Это в вашем сознании есть только 2*2, а в реальности есть громадное рыночное окружение и громадное количество вашего кода. Грубо, минимум на 3 порядка больше переменных и условий.

Пока вы будет бегать вокруг в эконом режиме, причин  не найдете. Как и играя в игру "простого кодера". Взялись за програмирование, научитесь отлаживаться.

Я третий раз вам советую - распринтуйте и глазами посмотрите где начались расхождения в сделках.

Хорошо, я распринтую. Посмотрю. Только вот понять причину этих расхождений смогу вряд ли.

Тем более, что открытие, сопровождение и закрытие позиций, у меня прописаны в собственном классе. И в других советниках никакого диссонанса между оптимизацией и одиночным проходом я не замечал уже очень давно (раньше была уже моя тема с аналогичным вопросом). 

И именно поэтому я опять открыл этот вопрос. 

Для себя я понимаю так - работа с позициями отлажена и вмешательства не требует. Значит косяк где-то в другом месте. Но! Все другие места - это код из скриптов по подготовке, созданию, обучению и проверке сети. Тоже всё отлажено.

Остаётся возможность использования неинициализированной переменной. Я проверил каждую. Ну, может быть, что-то пропустил. В таком случае я ожидаю предупреждения от компилятора.

Или другой вариант - при компиляции код строится так, что инициализация переменной происходит позже обращения к ней.

Как Вы понимаете, я могу только гадать. Реальных средств выявления этой ошибки у меня нет.

 
Сергей Таболин:

Хорошо, я распринтую. Посмотрю. Только вот понять причину этих расхождений смогу вряд ли.

Тем более, что открытие, сопровождение и закрытие позиций, у меня прописаны в собственном классе. И в других советниках никакого диссонанса между оптимизацией и одиночным проходом я не замечал уже очень давно (раньше была уже моя тема с аналогичным вопросом). 

И именно поэтому я опять открыл этот вопрос. 

Для себя я понимаю так - работа с позициями отлажена и вмешательства не требует. Значит косяк где-то в другом месте. Но! Все другие места - это код из скриптов по подготовке, созданию, обучению и проверке сети. Тоже всё отлажено.

Остаётся возможность использования неинициализированной переменной. Я проверил каждую. Ну, может быть, что-то пропустил. В таком случае я ожидаю предупреждения от компилятора.

Или другой вариант - при компиляции код строится так, что инициализация переменной происходит позже обращения к ней.

Как Вы понимаете, я могу только гадать. Реальных средств выявления этой ошибки у меня нет.

Для начала убедитесь, что в торговой логике не используете функции GetTickCount64(), GetTickCount()  или GetMicrosecondCount(). Они могут быть причиной расхождений результата в тестере и оптимизаторе.

 
Geess:

Для начала убедитесь, что в торговой логике не используете функции GetTickCount64(), GetTickCount()  или GetMicrosecondCount(). Они могут быть причиной расхождений результата в тестере и оптимизаторе.

Не использую.

 
Сергей Таболин:
...

Для себя я понимаю так - работа с позициями отлажена и вмешательства не требует. Значит косяк где-то в другом месте. Но! Все другие места - это код из скриптов по подготовке, созданию, обучению и проверке сети. Тоже всё отлажено.

...

А не тут ли собачка порылась?

 

" инициализация практически всех данных происходит в цикле " 

Парни, нельзя инициализировать в цикле. В цикле нужно считать. 

 
Вообще, должна быть ошибка Stack Overflow. 
 
 
Artyom Trishkin:

А не тут ли собачка порылась?

Каким боком? На лету сеть в советнике не обучается. По крайней мере пока ))

Правильно она обучена или нет, переобучена или недообучена, а сигнал выдаёт то один.

Если, к примеру, при оптимизации на открытии бара выдаёт сигнал buy, то и при одиночном тесте должна выдать этот же сигнал. А если не выдаёт, то ни там, ни там.

Так вот откуда могут появляться "лишние" позиции (при условии, что ценовые данные одинаковы, надеюсь)?

 
Сергей Таболин:

Каким боком? На лету сеть в советнике не обучается. По крайней мере пока ))

Правильно она обучена или нет, переобучена или недообучена, а сигнал выдаёт то один.

Если, к примеру, при оптимизации на открытии бара выдаёт сигнал buy, то и при одиночном тесте должна выдать этот же сигнал. А если не выдаёт, то ни там, ни там.

Так вот откуда могут появляться "лишние" позиции (при условии, что ценовые данные одинаковы, надеюсь)?

А попробуйте отключить текущую логику и заменить её на обычную машку. Сразу будет видно, где кот порылся, в логике или исполнении.