Циклы
Оператор for
Оператор for позволяет выполнить ряд инструкций повторно:
Где:
- i — переменная счетчика цикла.
- from — начальное значение счетчика.
- to — конечное значение счетчика. Когда счетчик становится больше чем to (или меньше чем to, from > to), цикл останавливается.
- step — шаг цикла. Опционально. По умолчанию 1. Если from больше чем to, то шаг цикла автоматически изменит направление; не нужно использовать отрицательный шаг.
- var_decl0,… var_declN, return_expression— тело цикла. Он должен иметь отступ в 4 пробела [1].
- return_expression Возвращаемое значение. Когда цикл закончен или прерван, возвращаемое значение присваивается var_declarationX.
- continue— ключевое слово. Может использоваться только в циклах. используется для перехода к следующей итерации цикла.
- break— ключевое слово. Может использоваться только в циклах. Используется для выхода из цикла for.
Пример цикла:
Variable sum — это мутирующая переменная, поэтому в теле цикла ей может быть присвоено новое значение оператором :=. Обратите внимание, что для простых скользящих средних рекомендуется использовать встроенную функцию sma, так как она вычисляет быстрее.
Обратите внимание, что некоторые встроенные функции могут работать неожиданно в цикле for.
Давайте посмотрим на следующий пример:
Хотя вы можете ожидать, что сумма будет содержать sma(close, 1) + sma(close, 2), это не так. Она будет содержать sma(close, 1) + sma(close, 1), потому что как только sma инициализируется длиной 1, эта длина будет сохранятся до тех пор, пока скрипт не будет удален с графика. Чтобы избежать этого, вы можете использовать свою собственную реализацию функции, без сохранения состояния. Это список встроенных функций, которые имеют такое же поведение:
- sma(source, length): с length состоянием.
- ema(source, length): с length состоянием.
- sum(source, length): с length состоянием.
- valuewhen(condition, source, occurrence): с occurrence состоянием.
- rsi(x, y): когда y имеет тип целое число и ведет себя как длина, с y состоянием.
Сноски
( 1, 2 ) TradingView в Pine Editor автоматически заменяет Tab на 4 пробела.