Stanislav писал(а):Но при компиляции пишет: "Имя ROC_WMA отсутствует в текущем контексте at 23" - это 23 строка:
AddChartIndicator("ROC_WMA", new Dictionary <string, string>{{"Period", "P2"}});
...Вроде ничего не менял, только уровни для ROC_WMA добавил, но работать не хочет
И хотелось бы чтобы уровни прорисовывались - это удобно для визуализации. Но в скриптах пользователя не вижу такой команды DrawLevel
Буду признателен за помощь. Спасибо!
Если брали мой вариант ROC_WMA, то:
1. Там 2 параметра на вход PeriodWMA и PeriodROC;
2. Тогда заменить:
Код: Выделить всё
AddChartIndicator("ROC_WMA", new Dictionary <string, string>{{"Period", "P2"}});
на
Код: Выделить всё
AddChartIndicator("MY.ROC_WMA", new Dictionary <string, double>{{"PeriodWMA", "P1"},{"PeriodROC", "P2"}});
Выше я ошибся не указав MY. (уже поправил сообщение), это необходимо для пользовательских индикаторов.
заменить на
По поводу уровней в индикаторах.
Ищите в документации это есть:
В Initialize():
AddLevel(Value, Color, SeriesName)AddLevel(Value, Color, LineStyle, LineWidth, SeriesName) – создание уровня. Может быть несколько уровней.
Параметры:
• Value – значение по умолчанию
• Color – цвет уровня (значения стандартные для MicroSoft)
• LineStyle – стиль линии
• LineWidth – толщина линии
• SeriesName – имя ряда, к которому привязана линия (требуется для определения области, где будет размещена линия)
Пример. Создание уровня в индикаторе. ( в Initialize() {...} )
Код: Выделить всё
AddLevel(0, Color.Red, "Last"); // Создание уровня со значением 0 в области ряда Last
AddLevel(70, Color.Red, LineStyles.Dot, 1, "Last"); // задание типа и толщины линии
Пример. Изменение значения и цвета уровня с индексом 0.
Код: Выделить всё
function Evaluate()
{
//Далее в области вычисления можно изменять значение и цвет уровня
Levels[0].Level = 12.0;
Levels[0].Color = Color.Red;
Это для первого из ранее добавленных AddLevel() уровней. Для последующих индекс меняем на другой
Levels[1] - второй, Levels[2] - третий и т.д.