Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это не моя строчка. Это авторская
Оптимальный код функции start()
Вот эти 2 строки, мягко говоря, выглядят странно:
лучше так:
Абсолютно не понятно, зачем такие пляски вокруг булевых переменных, когда можно написать так:
И логики тоже, логики мышления.
Третий вариант, отказываемся полностью от логических условий в индикаторе. Возникает вопрос - а возможно ли это.
Попробуем
Для этого добавим пару логических переменных
Весь код функции старт у нас стал таким
Mне кажется можно ещё упростить
for(int i = 0; i < limit; i++)
{
// Вариант три_v1
high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=high-low;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}
Мне понравилось, спасибо, что напомнили, PapaYozh. Сам ведь подобные конструкции создавал - и забыл...
На мой взгляд, там чрезмерное использоваие вызова функции Symbol().
Я б так написал:
Но это уже к логике не относится :)На самом деле все просто. Появилось желание помочь другим делать оптимальный код, да и самому поучиться у других.
Не секрет, что со временем вырабатываются вполне определенные стереотипы, которые иногда (чаще всего) помогают, а иногда и мешают.
Подготовлю вариант индикатора и попытаюсь объяснить что и почему сделано. Если конечно интересно будет.
Обяснить на примере, как делать оптимальный код - не выйдет - слишком много будет упущений.
Дело в том, что есть масса правил создания оптимального кода, И эта масса тянет на довольно толстую книгу. Например, не многие из тех, кто сталкивается с языком MQL4 знают, что для процессора гораздо проще выполнять операции сложения и вычитания, чем умножения и деления. Не многие знают, что с позиций оптимизации кода лучше написать а=b+b, чем a=b*2. Поэтому думаю, что для понимания логики программирования и оптимизации гораздо полезнее будет отослать интересующихся к сочинениям по построению оптимального кода, а так же по изучению алгоритмических языков, ну и прививать пользователям привычку строить блок-схемы будущих программ, во избежание упущений и минимизации числа переделок кода.
Прилагаю к этому посту ссылку на скачивание отличнейшей книги по построению кода.
С. Макконел "Совершенный код"
Скачать книгу можно здесь: http://depositfiles.com/files/ebk6t6t5h (размер файла 21 мегабайт. Формат - djvu)
Вобщем, в данной ветке получится лишь рассматривать частные случаи исходного и оптимизированного участка кода, с пояснениями почему оптимизированный лучше исходного и почему оптимизация проведена именно так. Думаю, именно это Вы и хотели изнчально.
Прилагаю к этому посту ссылку на скачивание отличнейшей книги по построению кода.
С. Макконел "Совершенный код"
Вобщем, в данной ветке получится лишь рассматривать частные случаи исходного и оптимизированного участка кода, с пояснениями почему оптимизированный лучше исходного и почему оптимизация проведена именно так. Думаю, именно это Вы и хотели изнчально.
тоже неплохо, но все-таки хорошо бы либо название ветки уточнить, либо начать уже логику изучать.
я, правда, сам не знаю как сделать второе...))
тоже неплохо, но все-таки хорошо бы либо название ветки уточнить, либо начать уже логику изучать.
я, правда, сам не знаю как сделать второе...))
Логика (др.-греч. λογική — «наука о рассуждении», «искусство рассуждения» от λόγος — «речь», «рассуждение», «мысль») — наука о формах, методах и законах интеллектуальной познавательной деятельности, формализуемых с помощью логического языка. Поскольку это знание получено разумом, логика также определяется как наука о формах и законах правильного мышления. Поскольку мышление оформляется в языке в виде рассуждения, частным случаем которого являются доказательство и опровержение, логика иногда определяется как наука о способах рассуждения или наука о способах доказательств и опровержений. Логика как наука изучает способы достижения истины в процессе познания опосредованным путём, не из чувственного опыта, а из знаний, полученных ранее, поэтому её также можно определить как науку о способах получения выводного знания.
Выводное знание, полученное с помощью применения законов логики и методов логического мышления, — цель любого логического действия, нацеленного на достижение истины и применение полученного знания для более глубокого познания явлений и событий окружающего мира.
Одна из главных задач логики — определить, как прийти к выводу из предпосылок (правильное рассуждение) и получить истинное знание о предмете размышления, чтобы глубже разобраться в нюансах изучаемого предмета мысли и его соотношениях с другими аспектами рассматриваемого явления.
Логика служит одним из инструментов почти любой науки.
тоже неплохо, но все-таки хорошо бы либо название ветки уточнить, либо начать уже логику изучать.
я, правда, сам не знаю как сделать второе...))
Могу поделиться тем, как оно было у меня.
На попытки вникнуть в логику как в науку у меня ушло три года - я всё не мог ухватить суть, мол, накой она вообще нужна эта логика. Она представляла тогда для меня просто набор почти бесполезных шаблонов, но я чувствовал, что что-то тут не так, поэтому продолжал вчитываться, пытаться рассуждать по её схемам, решать через формулы всякие логические задачки. А потом как гром среди ясного неба - до меня вдруг дошло... Потом, когда до меня наконец-то дошла вся ценность этой дисциплины, я начал активно привлекать к изучению логики своих друзей. Я буквально "горел" логикой. Друзья активно втягивались во весь логический юмор, в красоту жёстких выводов, в неразрешимость парадоксов и пока я был рядом, они хоть что-то познавали. Но оставшись 1 на 1 с самим собой, затухали как угли костра. Ни один из них так и не возжёг огонь собственного духа. Тут я понял, что им было со мной интересно, но не более - ни у кого из них небыло пинающей силы за спиной, которая бы вынудила их въехать в эту науку. И тогда всех, кто действительно изучил Логику, я для себя разбил на две категории. Все они были вынуждены её изучать. От этого ни куда не деться. Некоторые профессора, преподающие логику в универах говорят, что студентам она даётся очень тяжело. Зато потом они сами удивляются тому, насколько тяжко им давалась эта дисциплина и насколько легка она оказалась в применении. Ну так вот, всех этих вынужденных я для себя разбил на два класса - на тех, кто влюбился в логику в процессе её изучения и на тех, кто сдал по ней зачёты и забыл. С теми влюблёнными мне всегда приятно бесседовать - человек тебя понимает с полуслова. А вот с забывчивыми приходится иной раз вообще тяжко - такие люди играются в русскую рулетку с собственной смертью. Дело в том, что действовать сознательно можно только по заранее составленному плану. Только так можно навести порядок в своей жизни. Составление плана действий - это мыслительный процесс. Если он протекает не правильно, то и результат будет хреновый. У кого в голове хаос, у того и в делах бардак. Вот и получается, что мышление управляет нашими жизнями. И отказываться тут от Логики - это прямая быстрая дорога в могилу.
:) Хватит, пожалуй, а то я могу часами рассказывать о подобных вещах и это в конце-концов уведёт нас в сторону от темы данной ветки.
P.S.
Могу ещё лишь добавить, что у меня когда-то возникла в жизни настолько сложная ситуация, что я не знал что и делать - рушились все планы, надежды. Больно было жутко. Я просто задыхался от безысходности. Вот тогда-то я и решил, что пока ни разберусь от и до со сложившейся ситуацией, я не приму решения что мне делать со своей жизнью и как относться к тем, кто меня окружал. Из книг я знал, что есть такая наука как Логика. Тогда-то я и решил, что должен освоить её, чотб мои выводы были правильными. Сложность и боль жизненной ситуации была для меня той силой, которая подстёгивала меня, заставляя искать ответы на свои вопросы не только в логике, но и в куче других наук. Сейчас это всё в прошлом. Зачем я рассказал об этом? Да просто хотел, чтоб Вы понимали, что двигало мной, заставляя учить логику. Так сказать, показал на примере, что я не исключение и мне тоже пришлось изучать эту дисциплину из-под палки. Правда изучать не в универе, а самостоятельно.
Mне кажется можно ещё упростить
for(int i = 0; i < limit; i++)
{
// Вариант три_v1
high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=high-low;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}
Я старался сохранить отрисовку как в первоначальном коде. АТР считается по другому. Если сравнишь два индикатора, то сам увидишь разницу.