Уж больно все запутано. Имена переменных вообще кошмар. Половина переменных вынесена в глобальные хотя таковыми совсем не является. Короче сейчас сижу все переписываю, чтобы самому понять как все функционирует.
извините за возможно глупый вопрос... Скажите, а эти все оптимизации как то связаны между собой, я имею ввиду этап-2 основывается на данных после этап-1? ведь после первого этапа, я загружаю _этап_2=y_l3.set и те входные параметры которые были после первой оптимизации как я понимаю заменяются на те что прописаны в _этап_2=y_l3.set? какой тогда смысл в первой оптимизации? или я ошибаюсь и что то не так делаю? сейчас я делаю так: загружаю _этап_1=x_l3.set, оптимизирую, выбираю лучший по моему мнению результат, правой кнопкой мыши выбираю "Установить входные параметры", прогоняю его на тестере, затем загружаю _этап_2=y_l3.set, ставлю галочку на оптимизации... и так 6 оптимизаций, после 6-ой оптимизации получаю нужный мне сет, правильно делаю?
Все правильно делаете. И понимаете почти все верно. За исключением того, что оптимизационные сет файлы типа _этап_2=y_l3.set специально написаные мной файлы, которые при последовательной загрузке никоим образом не влияют на полученые ранее значения. Насчет зависимости, то первый и второй этапы не зависят друг от друга(почти :-)) третий зависит от двух(первого и второго) четвертый от трех, пятый тоже от трех и почти не зависит от четвертого, а шестой зависит от всех.
Сегодня решил разобраться в принципах функционирования советника и я был в шоке. Уж больно все запутано помоему. Мне интересно кто нибудь кроме SHOOTER777 понимает как функционирует советник? Я имею ввиду не то как он должен быть оптимизирован, а именно принцип работы.
Sorry, но это один из если не самый простой мой советник. В других даже я через некоторое время быстро разобраться не могу - забывается, а чтоб еще и другим объяснить как и что работает вообще труба(звучали даже намеки, что не моих рук дело). Пробовал выкладывать, чтоб помогли кое-какие моменты подправить или улучшить, но.... Хотя я стараюсь создавать коды в основном через функции, так нагляднее и проще понимать. Мне бы еще научиться в коде лаконичные комментарии давать...
Уж больно все запутано. Имена переменных вообще кошмар. Половина переменных вынесена в глобальные хотя таковыми совсем не является. Короче сейчас сижу все переписываю, чтобы самому понять как все функционирует.
С переменными могут быть "косяки". Я не изучал подробно программирование, так-что подсказывайте, конструктивная критика привествуется.
int init(){
expertInitHour =Hour();
SYMBOL =Symbol();
lastBarTime =iTime(NULL,0,0);
H1();
AO_Delta = indicatorDelta();if(IsOptimization()){
TrBlnc =false;}if(VSR()!=0){
Flg=false;}else{
Flg=true;}
cmmnt();}
Код становится более удобочитаемым, но даже с этой заменой остается непонятно, что такое H1, VSR, Flg.
Называть переменные осмысленно. Лучше потратить на пару минут дольше времени, чтобы придумать имя переменной или функции, но потом легко вспомнить зачем она нужна. Пример: функция G12 - зачем она? Рассчитывает дельту между последними значениями индикатора(у вас это делается даже с выбором варианта индикатора). Ну так ее и надо назвать indicatorDelta, помоему гораздо проще и понятнее.
Не делать переменные глобальными если они локальные. Не помню в какой функции видел.
Не делать глобальные переменные статическими - это не имеет смысла. Если это не так пожалуйста объясните.
Использовать стандартные константы определенные в языке. Например указание временного интервала. double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} мне кажется лучше заменить на double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));}.
Я сейчас этот эксперт попробую переписать и сделать более понятным для себя, а возможно и для других.
Большое спасибо, что поделились своей идеей. Очень приятно, что вы делитель своими наработками и каждую неделю постите результаты. Извиняюсь за критику :)
А что конкретно Вас шокирует, можно поконкретнее?
Уж больно все запутано. Имена переменных вообще кошмар. Половина переменных вынесена в глобальные хотя таковыми совсем не является. Короче сейчас сижу все переписываю, чтобы самому понять как все функционирует.
:) я тоже для себя начал переделывать, в выходные думаю закончу можно будет сравнить варианты :)
Вот видите! Значит ни я один такой непонятливый :)
помоему, кстати, так даже лучше для усвоения кода:). Так что шутеру за это отдельное спасибо
посмотри личные сообщения
Интересное наблюдение!А если можно - назовите ДЦ, хотя бы первую букву)
А
извините за возможно глупый вопрос... Скажите, а эти все оптимизации как то связаны между собой, я имею ввиду этап-2 основывается на данных после этап-1? ведь после первого этапа, я загружаю _этап_2=y_l3.set и те входные параметры которые были после первой оптимизации как я понимаю заменяются на те что прописаны в _этап_2=y_l3.set? какой тогда смысл в первой оптимизации? или я ошибаюсь и что то не так делаю? сейчас я делаю так: загружаю _этап_1=x_l3.set, оптимизирую, выбираю лучший по моему мнению результат, правой кнопкой мыши выбираю "Установить входные параметры", прогоняю его на тестере, затем загружаю _этап_2=y_l3.set, ставлю галочку на оптимизации... и так 6 оптимизаций, после 6-ой оптимизации получаю нужный мне сет, правильно делаю?
Все правильно делаете. И понимаете почти все верно. За исключением того, что оптимизационные сет файлы типа _этап_2=y_l3.set специально написаные мной файлы, которые при последовательной загрузке никоим образом не влияют на полученые ранее значения. Насчет зависимости, то первый и второй этапы не зависят друг от друга(почти :-)) третий зависит от двух(первого и второго) четвертый от трех, пятый тоже от трех и почти не зависит от четвертого, а шестой зависит от всех.
Сегодня решил разобраться в принципах функционирования советника и я был в шоке. Уж больно все запутано помоему.
Мне интересно кто нибудь кроме SHOOTER777 понимает как функционирует советник? Я имею ввиду не то как он должен быть оптимизирован, а именно принцип работы.
Sorry, но это один из если не самый простой мой советник. В других даже я через некоторое время быстро разобраться не могу - забывается, а чтоб еще и другим объяснить как и что работает вообще труба(звучали даже намеки, что не моих рук дело). Пробовал выкладывать, чтоб помогли кое-какие моменты подправить или улучшить, но.... Хотя я стараюсь создавать коды в основном через функции, так нагляднее и проще понимать. Мне бы еще научиться в коде лаконичные комментарии давать...
Уж больно все запутано. Имена переменных вообще кошмар. Половина переменных вынесена в глобальные хотя таковыми совсем не является. Короче сейчас сижу все переписываю, чтобы самому понять как все функционирует.
С переменными могут быть "косяки". Я не изучал подробно программирование, так-что подсказывайте, конструктивная критика привествуется.
С переменными могут быть "косяки". Я не изучал подробно программирование, так-что подсказывайте, конструктивная критика привествуется.
Не люблю критиковать вещи которые работают. Приведу просто некоторую критику по коду:
мне кажется лучше написать
Код становится более удобочитаемым, но даже с этой заменой остается непонятно, что такое H1, VSR, Flg.
Я сейчас этот эксперт попробую переписать и сделать более понятным для себя, а возможно и для других.
Большое спасибо, что поделились своей идеей. Очень приятно, что вы делитель своими наработками и каждую неделю постите результаты.
Извиняюсь за критику :)