Затенение переменной в операторе цикла for

#pine-script

Вопрос:

В настоящее время я пишу стратегию с использованием Pine-скрипта, что также является моим первым опытом написания кодов. Затем я столкнулся с этой проблемой, касающейся циклов for.

 if bcktst and strategy.opentrades lt; 6  for n = 0 to 5  n = strategy.opentrades  strategy.entry("Short #"   str.tostring(n   1),strategy.short, when=barstate.isconfirmed, oca_type=strategy.oca.cancel)  if sld gt; emaLTFs  strategy.exit("Close #"   str.tostring(n   1),"Short #"   str.tostring(n   1), limit=tp1, stop=sld   atr,  trail_price=tst1, trail_offset=(tst1 * beper1)/syminfo.mintick)  else  strategy.exit("Close #"   str.tostring(n   1),"Short #"   str.tostring(n   1), limit=tp2, stop=emaLTFs   atr,  trail_price=tst2, trail_offset=(tst2 * beper2)/syminfo.mintick)  

Код отображает мои ожидаемые результаты, как показано на рисунке ниже(Отображение диаграммы).

Отображение диаграммы

Однако он показывает запрос о затенении переменной, и я обеспокоен, так как я буду повторять код несколько раз для разных триггеров, и он зальет консоль одним и тем же запросом.

строка 239: Затенение переменной «n», существующей в родительской области. Вы хотели использовать оператор ‘:=’ вместо ‘=’ ?

Я попытался заменить оператора ( = на:=), но сценарий не может быть выполнен, и консоль отображается (см. подсказку об ошибке изображения).

Ошибка добавления в диаграмму, причина: строка 239: Переменная «n» не может быть изменяемой.

Запрос на ошибку

Я пробовал несколько методов, но это единственный оператор цикла for, который отображает то, что я намеревался.

Поэтому мой вопрос в том, есть ли какие-либо обходные пути для удаления приглашения или я что-то упускаю.

Спасибо, что уделили мне время.

Комментарии:

1. Что такое версия скрипта pine?

2. Pine-скрипт //@версия=5

Ответ №1:

Вы повторно присваиваете значение переменной counter ( n в данном случае) оператора for.

 for n = 0 to 5  n = strategy.opentrades  

Используйте другое имя переменной, и все будет в порядке.

 for n = 0 to 5  n_trades = strategy.opentrades  

Комментарии:

1. Спасибо, чувак! Изменение переменной действительно удалило приглашение, но заказы на ввод накапливаются, добавляя оператор if после цикла for.