Пользовательские индикаторы > Индикатор PVT. Помогите допилить?

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Аватара пользователя
SergeK
Сообщения: 5
Зарегистрирован: 04 янв 2022, 09:57
Благодарил (а): 1 раз

Индикатор PVT. Помогите допилить?

Непрочитанное сообщение SergeK » 04 янв 2022, 10:20

Добрый день! Я не программист, но имею некоторые базовые навыки. На pine script по крайней мере делаю, все что в голову приходит. Но на этом языке, как у типичного нуба, у меня мозг отваливается. Поэтому прошу помощи сделать индикатор PVT. Индикатор полезный, думаю, кому надо, всем пригодится.

Код: Выделить всё

function Initialize()
{
  IndicatorName = "MyPVT_0.2";
  PriceStudy = false;
  AddInput("Input", Inputs.Candle);            
  AddSeries("PVT", DrawAs.Line, Color.Blue);
}

function Evaluate()
{


// PVT
{
   
     PVT = (Input.Close[0] - Input.Close[-1])/Input.Close[-1]*Input.Volume[0]+PVT[-1];     
 
}

}


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

BugsDigger
Сообщения: 502
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 84 раза

Re: Индикатор PVT. Помогите допилить?

Непрочитанное сообщение BugsDigger » 04 янв 2022, 18:33

Да вроде должно было бы работать. Вот мой вариант:

Код: Выделить всё

function Initialize()
{
 IndicatorName = "PVT";
 AddInput("Input", Inputs.Candle);
 PriceStudy = false;
 AddSeries("PVT", DrawAs.Line, Color.Blue); 
 AddLevel(0, Color.Black, "PVT");
 AddParameter("Daily", 0, "0-за все время, иначе от начала дня");               
}

function Evaluate()
{
 if(CurrentIndex==0 || // старт или
    (Daily!=0 && BarDate()>BarDate(-1))) // первый бар дня при дневном счете
 {
  double o=Input.Open;
  PVT=Input.Volume*(Input.Close-o)/o;
 }
 else
 { // очередной бар
  double c=Input.Close[-1];
  PVT=PVT[-1]+Input.Volume*(Input.Close-c)/c;
 }
}


Аналогичный я сам изобрел несколько лет назад (возможно, как велосипед), только без нормирования на предыдущую цену закрытия. График тот же, но с нормированием цифры менее зверские.

Capital
viewtopic.php?t=727#p4530

Аватара пользователя
SergeK
Сообщения: 5
Зарегистрирован: 04 янв 2022, 09:57
Благодарил (а): 1 раз

Re: Индикатор PVT. Помогите допилить?

Непрочитанное сообщение SergeK » 05 янв 2022, 09:53

Спасибо. Интересная вариация индикатора. Немного отличается, но в чем то даже лучше обычного.
Пойду тестить.

Аватара пользователя
SergeK
Сообщения: 5
Зарегистрирован: 04 янв 2022, 09:57
Благодарил (а): 1 раз

Re: Индикатор PVT. Помогите допилить?

Непрочитанное сообщение SergeK » 05 янв 2022, 11:27

BugsDigger писал(а):Аналогичный я сам изобрел несколько лет назад (возможно, как велосипед), только без нормирования на предыдущую цену закрытия. График тот же, но с нормированием цифры менее зверские.


Индикатор добавил нормально. Но дальше пошли чудеса какие то. При попытке добавить его в стратегию выдает ошибку как на скриншоте. То есть предлагает добавить PVT из библиотеки.

Сразу возникает легкое недоумение:
1. Откуда система поняла вообще, что это PVT?
2. Да я бы с удовольствием скачал и установил из библиотеки если бы он там был
3. Чем систему не устраивает этот код, почему не дает его использовать и в чем собственно ошибка?

Очень странно
Вложения
2022-01-05_01-28-57.png
2022-01-05_01-28-57.png (23.6 КБ) 1326 просмотров

BugsDigger
Сообщения: 502
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 84 раза

Re: Индикатор PVT. Помогите допилить?

Непрочитанное сообщение BugsDigger » 05 янв 2022, 11:55

Система ищет скомпилированный код индикатора PVT.alfa в
C:\Documents and Settings\<User>\AppData\Local\Alfa-Direct\Scripts\Indicators\Bin

Видимо, вы не создали или не скомпилировали новый индикатор.
Чтобы создать новый индикатор, вызовите окно добавления пользовательских индикаторов, выберите любой из них, нажмите "Редактор".
В редакторе нажмите иконку "Новый" (самая левая), в текст вставьте нужное, нажмите "Сохранить как" (самая правая иконка), сохраните.
Текст будет сохранен в C:\Documents and Settings\<User>\AppData\Local\Alfa-Direct\Scripts\Indicators\Src.
Далее нажмите кнопку "Компилировать" (справа). после успешной компиляции в Bin появится скомпилированный скрипт (фактически сборка .NET). При компиляции стратегии или другого индикатора система просматривает Bin на предмет наличия сборки с нужным именем.

Обратите внимание, что в окне добавления индикаторов есть крыжик. Его состояния (меняются при кликах):
- отмечен: показываются только успешно скомпилированные (готовые к использованию) индикаторы
- не отмечен: показываются все (в том числе и еще нескомпилированные) индикаторы
- серый: показываются только нескомпилированные индикаторы.

Как-то так.

Аватара пользователя
SergeK
Сообщения: 5
Зарегистрирован: 04 янв 2022, 09:57
Благодарил (а): 1 раз

Re: Индикатор PVT. Помогите допилить?

Непрочитанное сообщение SergeK » 05 янв 2022, 12:33

BugsDigger писал(а):Видимо, вы не создали или не скомпилировали новый индикатор.


Да вроде все скомпилировал. И конечно же нажимал на кнопку компиляции, а как по другому. Иначе бы индикатор не работал и не предлагался бы в с писке при создании стратегии. На график выводится.
Но при добавлении в стратегию выдает какую то странную ошибку.
Вложения
2022-01-05_16-21-09.png
2022-01-05_16-21-09.png (7.55 КБ) 1317 просмотров

BugsDigger
Сообщения: 502
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 84 раза

Re: Индикатор PVT. Помогите допилить?

Непрочитанное сообщение BugsDigger » 05 янв 2022, 13:23

Задавая такое странное имя (со скобками) вы напрашиваетесь на проблемы.

На самом деле имя индикатора должно соответствовать правилам именования функций в C# (и, видимо, во всех языках): начинаться с буквы, содержать только буквы и цифры (подчеркивание в крайнем случае), без пробелов.

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

Аватара пользователя
SergeK
Сообщения: 5
Зарегистрирован: 04 янв 2022, 09:57
Благодарил (а): 1 раз

Re: Индикатор PVT. Помогите допилить?

Непрочитанное сообщение SergeK » 05 янв 2022, 13:52

BugsDigger писал(а):Задавая такое странное имя (со скобками) вы напрашиваетесь на проблемы.

На самом деле имя индикатора должно соответствовать правилам именования функций в C# (и, видимо, во всех языках): начинаться с буквы, содержать только буквы и цифры (подчеркивание в крайнем случае), без пробелов.

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


))) Да проблема в этом была. Заработало. Спасибо за помощь!


Вернуться в «Пользовательские индикаторы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей