Блог им. stanislav_g_9yc

Перевод книги "Хакер фондового рынка". Второй час: Функции.

Перевод книги "Хакер фондового рынка". Второй час: Функции.
Ранее:
1. Предисловие.
2. Торговля деньгами.
3. Биржевая цена.
4. Золотоискатели и ломбарды.
5. Тики, бары, свечи.
6. Как работают торговые системы?
7. Технический анализ — смысл и бессмыслица.
8. Трехчасовой курс программирования.
9. Первый урок: Переменные.
10. Разновидность калькулятора.

Второй час: Функции.

Как только вы поймете переменные и функции, вы узнаете, как работает сценарий. Точно так же, как объявляются переменные, вы должны объявить функции, прежде чем сможете их использовать. Вот небольшой пример объявления функции:

function addiere()
{
  var a, b, c;
  a = 3;
  b = 5;
  c = a + b;
}

Функция — это не что иное, как набор деклараций и инструкций, которые затем поочередно выполняются компьютером. Давайте рассмотрим некоторые свойства функций:

► Функция объявляется словом function, за которым следует имя функции и пара скобок ( ). Скобки используются для передачи дополнительных переменных в функцию; подробнее об этом позже. В нашем случае мы не передавали никаких переменных, поэтому скобки пусты.

► Тело функции (список инструкций) должно быть заключено в фигурные скобки { }. Тело состоит из одной или нескольких строк кода, которые могут содержать объявления переменных и утверждения. Для ясности программисты отступают от кода в теле функции на несколько пробелов, чтобы было понятно, что он находится внутри чего-то. Кстати, дополнительные пробелы игнорируются в C, поэтому вы можете поместить их в любом месте кода.

► К именам функций применяются те же соглашения, что и к именам переменных. Однако не следует давать одно и то же имя переменной и функции.

Если вы хотите взломать фондовый рынок, надеюсь, вы можете мысленно конвертировать евро в доллары по курсу 1,36. Что, вы не можете? Хорошо, тогда давайте напишем функцию, которая конвертирует 500 евро в доллары. Итак, мы пишем слово function, а затем имя функции; назовем ее euro_to_dollar:

function euro_to_dollar()
{
  //Быстрая проверка: скобки после имени функции не забыты, и первая фигурная скобка уже есть. В функции нам понадобятся некоторые переменные, которые мы объявим сейчас:
  var Euro = 500;  // Сумма в евро для конвертации
  var Kurs = 1.36;
  //Пока ничего нового. Мы объявили две переменные var и присвоили им начальные значения. Как мне теперь сказать компьютеру, чтобы он конвертировал евро в доллары? <br />  //Как бы я сделал это с помощью калькулятора? Я бы ввел что-то вроде этого: 500 * 1.36
  //Если мы используем переменные вместо чисел, это будет выглядеть следующим образом: Euro * Kurs
  //Поэтому давайте закончим объявление нашей функции следующим образом:
  var Dollar = Euro * Kurs;
  printf("%.f Euro sind %.f Dollar.", Euro, Dollar);
}

Мы также подумали о второй фигурной скобке, так что тело функции теперь находится между двумя скобками. Давайте проверим это прямо сейчас. Запустите Zorro и выберите [Новый сценарий] в самом низу окна прокрутки сценариев. Подождите, пока редактор не откроется с новым пустым файлом. Затем впишите в него следующие строки:

function euro_to_dollar()
{
  var Euro = 500;  // Сумма в евро для конвертации
  var Kurs = 1.36;
  var Dollar = Euro * Kurs;
  printf("%.f Euro sind %.f Dollar.", Euro, Dollar);
}

Теперь сохраните файл (File/Save As) в папке Strategy в Zorro под новым именем, которое должно заканчиваться на ".c", например, «EuroDollar.c». Если теперь вы откроете окно прокрутки сценария Zorro, вы увидите ваш новый сценарий. Выберите его и нажмите [Test].

Перевод книги "Хакер фондового рынка". Второй час: Функции.

Что это значит сейчас? Всегда ли сценарию нужна функция main или run? Действительно, main — это предопределенное имя функции. Главная функция автоматически выполняется при запуске сценария. Функция с именем run, с другой стороны, является не обычной частью языка C, а особенностью Zorro; она содержит торговую стратегию и автоматически выполняется один раз за период бара. Если в сценарии нет ни функции main, ни функции run, Zorro предполагает, что вы допустили ошибку.

Поэтому дайте скрипту то, что ему нужно, и добавьте следующие строки в конце:

function main()
{
  euro_to_dollar();
}

Эта функция main, очевидно, очень короткая — она содержит только один оператор для выполнения функции euro_to_dollar — или «call» на жаргоне программистов. Чтобы вызвать функцию из другой функции, очевидно, нужно написать только имя функции, за которым следуют две скобки и обычная точка с запятой для завершения. Доказательство:
Перевод книги "Хакер фондового рынка". Второй час: Функции.
С помощью функций можно добавлять в язык программирования любые новые команды — это все равно что придумывать новые слова для языка. Важный совет: объявляйте функцию перед строкой, в которой она вызывается. Это происходит потому, что компилятор читает код как страницу книги, сверху вниз. Если бы мы написали сценарий наоборот:

function main()
{
  euro_to_dollar();
}
function euro_to_dollar()
{
  ...
}

 

компилятор говорит следующее: Итак, вот функция main. Она будет выполняться каждый раз. Но что это говорит — вызов euro_to dollar()? Этого я еще не знаю. Я не могу вызвать то, чего не знаю. Я выдал сообщение об ошибке и на этом закончил.

Перевод книги "Хакер фондового рынка". Второй час: Функции.

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

Краткое резюме:

► Мы определяем простые функции через "function Name (...) {...}".

► Если функция имеет имя main или run, она выполняется автоматически. Все остальные функции должны вызываться из уже запущенной функции.

► Не паникуйте из-за сообщений об ошибках компилятора — их почти всегда легко обнаружить и исправить в коде. Не круто просить помощи с ошибками компилятора на форуме программистов!

Продолжение следует...
1.3К | ★2

Читайте на SMART-LAB:
Фото
🥳 В десяточку! Два выпуска на сумму более 10 млрд рублей
ГК «А101» завершила сбор книги заявок на два выпуска облигаций общим объемом 10,5 млрд рублей. Начало торгов состоится 26 декабря....
"Русагро" начала независимую оценку активов для защиты инвесторов от излишнего налога
Агрохолдинг «Русагро» сделал важный шаг для защиты инвесторов, запустив процедуру независимой оценки активов. Эта оценка призвана решить серьезный...
Фото
📈 Синара: целевая цена акций МГКЛ на конец 2026 года — 5,2 рубля
Ниже приводим краткое содержание мнения аналитиков. Инвестиционный банк Синара обновил прогноз по МГКЛ: оценочная капитализация ПАО...
Фото
Какая доходность среди облигаций с наивысшим рейтингом надежности и сроком погашения от 3 лет?

теги блога Stanislav Gribanov

....все тэги



UPDONW
Новый дизайн