Блог им. stanislav_g_9yc
Пока я еще не стал миллионером, я должен продолжать торговать. Это был просто пример цикла «while».
В коде это будет выглядеть следующим образом:
while(Vermoegen < 1000000) trade(Vermoegen);
Оператор while имеет точно такой же синтаксис, как и оператор if. Имеется условие — в данном случае, что переменная Vermoegen меньше одного миллиона — и последующий оператор, который выполняется, если условие истинно. В этом случае программа будет просто продолжена. С другой стороны, с помощью оператора while программа «перепрыгивает» назад к условию и проверяет его снова. Если он по-прежнему применим, зависимое утверждение выполняется снова. Это повторяется до тех пор, пока либо условие не станет ложным в какой-то момент, либо пока кто-то не выдернет вилку из розетки.
Эта конструкция также называется циклом, поскольку программа некоторое время работает по кругу. Вот основная форма цикла while:
while(Условие_есть_истина) tu_was(); // Выполните эту инструкцию несколько раз (одна единственная инструкция!) или - если несколько команд должны быть повторены условно: while(Условие_есть_истина) { tu_was(); tu_noch_was(); }
Обратите внимание, что утверждения tu_was должны оказывать некоторое влияние на условие while. Потому что если условие всегда остается выполненным, независимо от того, сколько раз выполняется tu_was, мы имеем «бесконечный цикл», который никогда не закончится!
Вот практический пример цикла while. Проверьте это с помощью Zorro:
function main() { int n = 0; while(n < 10) { n = n + 1; printf("%i ", n); } }
Эта небольшая программа прибавляет 1 к переменной n, выводит число в окно сообщений и повторяет это до тех пор, пока n не достигнет 10.
И вот еще одно небольшое задание, чтобы проверить, были ли вы внимательны до сих пор. Условие while выполняется до тех пор, пока n меньше 10. Поэтому если 10, то оно ложно и следующие операторы не выполняются. Почему 10 по-прежнему выводится как последнее число?.
C знает различные типы циклов. Вторым по распространенности является цикл for, который используется для подсчета:
for(Начало; Состояние; Изменение) { tu_was(); tu_noch_was(); }
Теперь в скобках находятся три инструкции. Start выполняется в начале цикла. Условие проверяется перед каждым запуском и прерывает цикл, если оно не выполняется. И изменение выполняется в конце каждого запуска. Цикл for позволяет сформулировать приведенный выше пример немного более элегантно:
function main() { int n; for(n = 0; n < 10; n = n + 1) printf("%i ", n); }
Циклы очень полезны, когда что-то нужно делать снова и снова. Например, если у нас есть список активов, и мы всегда запускаем один и тот же торговый алгоритм с каждым из них. Поэтому мы можем написать стратегию, которая торгует портфелем активов.
Сейчас мы находимся в конце трехдневного курса по общему программированию. В следующей главе мы начнем с разработки торговых систем. Вы уже изучили почти все элементы языка Си, которые вам для этого понадобятся. Но есть и многое другое. Мы не обсуждали здесь макросы, указатели, массивы, структуры, классы или Windows API, потому что они обычно не нужны для стратегий. При желании вы можете изучить «настоящее» программирование, которое выходит за рамки потребностей торговых систем. Прочитайте один из бесплатных онлайн-учебников по языку Си, например, «Sam's Teach Yourself C in 24 Hours», и проработайте его с помощью Zorro. Вы также можете присоединиться к сообществу Gamestudio, которое использует язык программирования lite-C от Zorro для создания небольших или больших компьютерных игр. Программирование может быть отличным развлечением — даже если не зарабатывать на этом деньги.
► Zorro — это хакерский инструмент для изучения ценовых кривых, разработки, тестирования и запуска торговых систем.
► Сценарий описывает задачу для компьютера на формализованном языке. Он состоит из ряда инструкций.
► Элементами сценария являются переменные и функции. Функции содержат инструкции к действию, переменные данные, к которым они применяются.
► С помощью скриптов можно делать гораздо более сложные и интересные вещи, чем разработка торговых систем.
Продолжение следует...