Стратегии и роботы > Как в скрипте стратегии добавить на график индикатор?

Обсуждение, описание стратегий и роботов, идеи для стратегий
Alexey
Сообщения: 19
Зарегистрирован: 16 апр 2017, 16:02
Благодарил (а): 1 раз
Поблагодарили: 6 раз

Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение Alexey » 30 май 2017, 19:22

Подскажите, пожалуйста, как добавить на график индикатор (например, машку) с расчетом не по закрытию, а по хаям и с отрисовкой заданного цвета и типа линии? В справке "СКРИПТЫ ПОЛЬЗОВАТЕЛЬСКИХ ИНДИКАТОРОВ И СТРАТЕГИЙ", че-то не нашел!!!

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение evge » 31 май 2017, 07:35

1. Создать пользовательский индикатор, рисующий MA по хаям с нужным цветом и типом линии.
примечание: Индикатор нужно делать с входящим рядом Inputs.Candle, для доступа к рядам OHLC
сам код индикатора будет предельно простым и передавать ряд Input.High в стандартный индикатор SMA.

2. Отрисовать индикатор "MY.индикатор" в стратегии через AddChartIndicator(...)

документ Терминал 4.0. Скрипты пользовательских индикаторов и стратегий.doc

Добавить на график отображение индикатора с указанными параметрами.

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

AddChartIndicator(Name, new Dictionary <type, type>, {{NameParam, ValueParam}, …}


Особенности вызова встроенных индикаторов, где P1 и P2 – переменные, определенные в стратегии.

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

AddChartIndicator("ADX", new Dictionary <string, string> {{"Period", "P1"}} );
AddChartIndicator("ATR", new Dictionary <string, string> {{"Period", "P1"}} );
AddChartIndicator("AwesomeOscillator", new Dictionary <string, string> {{"Fast", "P1"}, {"Slow", "P2"} } );
AddChartIndicator("CCI", new Dictionary <string, string> {{"Period", "P1"}} );
AddChartIndicator("Envelopes", new Dictionary <string, double> {{"Period", 30}, {"Deviation", 1} } );
AddChartIndicator("MACD", new Dictionary <string, string> {{"PeriodFast","P1"},{"PeriodSlow", "P2"},{"PeriodSignal", "P3"}});
AddChartIndicator("MFI", new Dictionary <string, string> {{"Period", "P1"}} );
AddChartIndicator("Momentum", new Dictionary <string, string> {{"Period", "P1"}} );
AddChartIndicator("ParabolicSAR", new Dictionary <string, string> {{"Step", "P1"}, {"Maximum", "P2"} } );
AddChartIndicator("RSI", new Dictionary <string, string> {{"Period", "P1"}} );
AddChartIndicator("ROC", new Dictionary <string, string> {{"Period", "P1"}} );
AddChartIndicator("Stoch", new Dictionary <string, string> {{"PeriodK","PK"},{"PeriodD","PD"},{"PeriodSignal","Psig"}});
AddChartIndicator("BB", new Dictionary <string, string> {{"Period", "P"}, {"StandardDeviation", "Dstd"}} );


Пример. Рисовать пользовательский индикатор PriceChannel с параметром Period = 20

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

AddChartIndicator("MY.PriceChannel", new Dictionary <string, double> {{"Period", 20}} );


Пример. Рисовать пользовательский индикатора PriceChannel с параметром Period, который берет значение из параметра стратегии Pc

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

AddChartIndicator("MY.PriceChannel", new Dictionary <string, string> {{"Period", "Pc"}} );
никогда такого не было и вот опять

Alexey
Сообщения: 19
Зарегистрирован: 16 апр 2017, 16:02
Благодарил (а): 1 раз
Поблагодарили: 6 раз

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение Alexey » 31 май 2017, 13:53

evge, а через AddChartIndicator(...) нельзя задать, что надо считать по хаям, цвет и тд? Это получается под каждую стратегию в которой нестандартные настройки индикатов надо еще индивидуальные пользовательские индикаторы создавать?

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение evge » 31 май 2017, 15:44

Alexey писал(а):evge, а через AddChartIndicator(...) нельзя задать, что надо считать по хаям, цвет и тд? Это получается под каждую стратегию в которой нестандартные настройки индикатов надо еще индивидуальные пользовательские индикаторы создавать?


Я просто почти не пользуюсь этой возможностью. Конечно, и я вижу, что не хватает возможности передать ряд входящий в индикатор. Цвет и стиль линии даже просто в вызове индикатора в АД4 не передать через код. Такие вот ограничения на сегодня есть.

В основной форум вопрос написать не мог, утром сегодня пробовал, но форум там ошибку выдает.
никогда такого не было и вот опять

Rabl
Сообщения: 30
Зарегистрирован: 07 май 2016, 21:08
Благодарил (а): 1 раз

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение Rabl » 18 июн 2017, 19:24

А можно до кучи поинтересоваться как рисовать уровни в виде горизонтальных линий, заданных например вручную как параметр.
Скажем ввел уровнии 1,2,3,4,5.... запустил робота и на графике текущем отображаются линии?
Спасибо.

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение evge » 19 июн 2017, 06:52

1. Создать индикатор с отрисовкой уровней из параметров.
2. Вызывать его из стратегии.

или нужен код индикатора?
никогда такого не было и вот опять

Rabl
Сообщения: 30
Зарегистрирован: 07 май 2016, 21:08
Благодарил (а): 1 раз

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение Rabl » 19 июн 2017, 20:33

evge писал(а):1. Создать индикатор с отрисовкой уровней из параметров.
2. Вызывать его из стратегии.

или нужен код индикатора?

Да нет, с кодом думаю справлюсь.
Просто хотел попробовать создать робота который будет торговать уровни. Уровни эти будут задаваться не индикатором, а руками в виде параметра, т.е все прописываются перед запуском и являются постоянными величинами. Вот именно реализация их отображения и интересует.
Напимер задал я для нефти параметр 1,2,3 равные 46, 47 , 48 и у меня при запуке линии эти отрисовались на графике.

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение evge » 20 июн 2017, 08:20

Rabl писал(а):Напимер задал я для нефти параметр 1,2,3 равные 46, 47 , 48 и у меня при запуке линии эти отрисовались на графике.


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

что-то типа этого:

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

AddChartIndicator("MY.ShowLevels", new Dictionary <string, string> {{"LVL1", "P1"}, {"LVL2", "P2"}, {"LVL3", "P3"}} );
никогда такого не было и вот опять

Rabl
Сообщения: 30
Зарегистрирован: 07 май 2016, 21:08
Благодарил (а): 1 раз

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение Rabl » 20 июн 2017, 20:09

Не получается что-то. Обычные индикаторы отображаются, а уровни эти нет

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

function Initialize()
{
   StrategyName = "01. Levels";
   AddParameter("LV1", 1, "LV1", 1);         //   Уровень 1                                          
   AddParameter("LV2", 1, "LV2", 1);         //   Уровень 2
   AddParameter("LV3", 1, "LV3", 1);         //   Уровень 3
   AddParameter("LV4", 1, "LV4", 1);         //   Уровень 4                              
   AddParameter("LV5", 1, "LV5", 1);         //   Уровень 5   
   AddParameter("LV6", 1, "LV6", 1);         //   Уровень 6   
   AddParameter("LV7", 1, "LV7", 1);         //   Уровень 7   
   AddParameter("LV8", 1, "LV8", 1);         //   Уровень 8   
   
                                 
   AddParameter("Psma", 163, "Period SMA", 1);
   AddParameter("P6", 0.2, "LossLes percent", 1);
   AddParameter("P7", 10, "Close percent", 1);
   AddParameter("MultB", 4, "MultyBody", 1);                  // Множитель для размера тела свечи
   AddParameter("DayCount", 4, "DayCount", 0);                  // Ограничение количества сделок за день
   AddChartIndicator("SMA", new Dictionary <string, string> {{"Period", "Psma"}} );
   AddChartIndicator("MY.ShowLevels", new Dictionary <string, string> {{"LVL1", "LV1"}, {"LVL2", "LV1"}, {"LVL3", "LV1"}} );
   AddInput("Input1", Inputs.Candle, 5, true, "");


Вот так делаю

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Как в скрипте стратегии добавить на график индикатор?

Непрочитанное сообщение evge » 20 июн 2017, 20:56

Rabl писал(а):Не получается что-то.


а сам индикатор создали? ShowLevels?
если, да, то отображается ли он если его просто вставить на график.
никогда такого не было и вот опять


Вернуться в «Стратегии и роботы»

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

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