PineScript — добавление входных данных для включения / ВЫКЛЮЧЕНИЯ графиков

#pine-script #algorithmic-trading #trading #pine-script-v4

Вопрос:

Новичок в PineScript.

Я добавил этот скрипт индикаторов (https://www.tradingview.com/script/a0vTLaS6-Double-Top-Bottom-Ultimate-OS /) к моей первоначальной стратегии, поэтому я могу добавить новые условия для strategy.close / entry, но проблема в том, что мои предыдущие графики графиков и некоторые кнопки теперь больше не работают. Я думаю, что новый скрипт, который я вставил (копирование / прошлое), накладывается на предыдущую стратегию, поэтому предыдущие графики графиков не работают. В этом случае, я думаю, лучшим вариантом будет создать Input.bool для полей, показанных ниже.

введите описание изображения здесь

Я придумал это:

xyz = ввод (title=»XYZ», type=input.bool, defval= false)

Но я не знаю, как я должен связать этот ввод с соответствующей строкой. Я думаю, что строка 172 является соответствующим кодом для этих полей:

 labelText = (doubleTop? "Double Top" : "Double Bottom")   (DisplayRiskPerReward ? " RR - " tostring(riskPerReward) : "")
 

Кроме того, на случай, если я захочу добавить (скопировать / перенести) новые сценарии в свою стратегию. Есть ли способ
создать кнопку для всего индикатора в моем индикаторе? Например, мой индикатор называется «XYZ», и я хочу добавить «ABC» внутри «XYZ». Есть ли способ установить кнопку для «ABC», чтобы, когда я использую общий индикатор («XYZ»), я мог просто выключать и включать его? Это обычный ввод? или я должен делать отступы во всем коде?

Ответ №1:

Итак, если вы хотите иметь входные данные для включения / выключения метки «Двойное дно RR», вы можете иметь для этого входную переменную и использовать условие if, чтобы решить, следует ли вам строить график или нет.

Создайте входные данные: bool PlotLabel = input(true)

Затем измените строку 172, где построение графика обрабатывается, как показано ниже (обратите внимание на отступ):

 var  label baseLabel = na

if (plotLabel == true)
    labelText = (doubleTop? "Double Top" : "Double Bottom")   (DisplayRiskPerReward ? " RR - " tostring(riskPerReward) : "")

    baseLabel := label.new(x=index, y=value, text=labelText, yloc=doubleTop?yloc.abovebar:yloc.belowbar,
      color=doubleTop?bearishColor:bullishColor, 
      style=doubleTop?label.style_label_down:label.style_label_up,
      textcolor=textColor, size=size.normal)
 

Итак, чтобы отобразить эту метку, ввод PlotLabel должен быть true .

Кроме того, на случай, если я захочу добавить (скопировать / вставить) новые сценарии в свою стратегию. Есть ли способ создать кнопку для всего индикатора в моем индикаторе? Например, имя моего индикатора «XYZ», и я хочу добавить «ABC» внутри «XYZ». Есть ли способ установить кнопку для «ABC», чтобы при использовании общего индикатора («XYZ») я мог просто выключить и включить его? Это обычный ввод? или я должен делать отступы во всем коде?

Нет, вам нужно изменить код и добавить включение / отключение ввода для всего сценария, который вы копируете.

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

1. Ваш ответ находится в версии 5 или версии 4? (Я использую V4), потому что я получил кучу ошибок «Необъявленный идентификатор». пример: необъявленный идентификатор ‘plotLable’

2. Это в версии 4. Вы скопировали мой код или написали его сами? Потому что похоже, что у вас опечатка. Этого нет plotLable в моем примере. Это так plotLabel . Также, пожалуйста, обратите внимание на отступ в блоке if.

3. Возникла проблема с отступом. Это сработало! Спасибо!

4. «Нет, вам нужно изменить код и добавить включение / отключение ввода для всего копируемого скрипта». можете ли вы сказать мне, как я могу настроить аргумент input.bool для этого индикатора?

5. Это есть в моем ответе: bool plotLabel = input(true)