Страница 1 из 1

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

Добавлено: 04 янв 2022, 10:20
SergeK
Добрый день! Я не программист, но имею некоторые базовые навыки. На 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];     
 
}

}


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

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

Добавлено: 04 янв 2022, 18:33
BugsDigger
Да вроде должно было бы работать. Вот мой вариант:

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

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

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

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

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

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


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

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

Очень странно

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

Добавлено: 05 янв 2022, 11:55
BugsDigger
Система ищет скомпилированный код индикатора 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 на предмет наличия сборки с нужным именем.

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

Как-то так.

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

Добавлено: 05 янв 2022, 12:33
SergeK
BugsDigger писал(а):Видимо, вы не создали или не скомпилировали новый индикатор.


Да вроде все скомпилировал. И конечно же нажимал на кнопку компиляции, а как по другому. Иначе бы индикатор не работал и не предлагался бы в с писке при создании стратегии. На график выводится.
Но при добавлении в стратегию выдает какую то странную ошибку.

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

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

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

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

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

Добавлено: 05 янв 2022, 13:52
SergeK
BugsDigger писал(а):Задавая такое странное имя (со скобками) вы напрашиваетесь на проблемы.

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

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


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