Страница 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# (и, видимо, во всех языках): начинаться с буквы, содержать только буквы и цифры (подчеркивание в крайнем случае), без пробелов.
Сам по себе индикатор со странным именем, возможно, будет работать, но когда вы вставляете такое имя в текст программы (стратегии или в другой индикатор), компилятор будет недоволен.
))) Да проблема в этом была. Заработало. Спасибо за помощь!