#4294 - Wed Apr 14 2010 01:38 PM
Re: Примеры пользовательских индикаторов
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Добрый день!
Почему при расчёте индикаторов со значениями меньше/между целых чисел не показываются значения? Показательный пример индикаторы показывающие значения в интервале 0 - 1. Можно видеть либо 0, либо 1, а что между этими значениями?
|
Наверх
|
|
|
|
#4339 - Thu Apr 15 2010 02:39 PM
Re: Расчёт индикаторов
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Для примера набросал: ((макс-мин)/мин)*100 за определённый период. В момент скрина значение 0.4312, а на графике - 0 и изменится только если значение достигнет >= 1, тогда отобразится - 1.
Attachments
15.04.png (462 downloads)
|
Наверх
|
|
|
|
#4346 - Thu Apr 15 2010 03:31 PM
Re: Расчёт индикаторов
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Нет, панель через графический редактор сделана.
|
Наверх
|
|
|
|
#6869 - Tue Jun 22 2010 09:57 PM
Re: Расчёт индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
Nektodron, скажите пож. - в визуале я так понимаю через индексирование (т.е. к [i-1]) невозможно обратиться не к значениям свечи, а именно к рассчётным данным, исходящих из блока "формула"? В скрине пример схемы, которая выдаёт ошибку: : error CS0021: Невозможно применить индексирование через [] к выражению типа "double"
т.е это нужно пользовательский блок создавать в API чтобы это посчитать?
Attachments
Индексирование.JPG (387 downloads)
_________________________
|
Наверх
|
|
|
|
#6945 - Wed Jun 23 2010 08:07 PM
Re: Расчёт индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
да, для расчетных данных таких значений нет в программе существуют понятия: IStreamHandler - потоковый вычислитель IValuesHandler - вычислитель внутри торгового цикла исходными данными для IStreamHandler могут быть только другие IStreamHandler. Блок формула автоматически становится либо IStreamHandler (если все исходные данные - потоки), либо IValuesHandler (если хотя бы один им не является). Соответственно, не потоковую формулу уже нельзя цеплять к IDoubleAccumHandler, нужно делать блок имеющий интерфейс IDouble2CalculatorHandler.
Nektodron, в связи с этим такой вопрос: т.к. в формуле не возможно обратиться к входящим вычисленным значениям[i-1], возможно ли в рассчётном блоке в API, в который будет входить значение из формулы, суммировать к примеру это входящее значение с [i-1] или [i-n]-значением самого рассчётного через IDoubleCalculatorHandler (я так понимаю у меня во входящем блоке-формуле - значение получаются IValuesHandler)? И если можно, подскжите пример какого либо кода блока (я к сожалению не нашёл примера с IDoubleCalculatorHandler где используется индексирование) Это к чему: если так не сделать, тогда мне придётся на вход подавать источники-ценные бумаги, причём несколько, и всё что я сделал в визуале до этого блока-формулы, с которым надо произвести рассчёт, писать код индикатора на C# (чего очень не хотелось бы..). А действие то в принципе простое - суммировать текущее значение входящей формулы с рассчётным предыдущим[i-1]. --------------------------- нашёл пример в AccumHandlers, где есть примеры с IDoubleCalculatorHandler, блоков-классов с индексированием CrossOver и CrossUnder, но они я так понимаю IStreamHandler, и к моему блоку не цепляются, а вот блок-класс Sub например -IValuesHandler и цепляется, но там нет индексирования.
Отредактировано uprav (Wed Jun 23 2010 09:14 PM)
_________________________
|
Наверх
|
|
|
|
#7119 - Sat Jun 26 2010 08:29 AM
Re: Расчёт индикаторов
[Re: Nektodron]
|
stranger
Registered: Wed Jun 23 2010
Записи: 18
|
Подскажите, в API как нумеруются бары, индекс возрастает от первого к последнему (т.е. от более позднего к более раннему)? Т.е. например, если мне нужно вычесть из цены открытия свечи значения закрытия предыдущего бара, то это так будет выглядеть? for (int i = 0; i < count-1; i++)
{
a[i] = open[i]-close[i+1];
} Спасибо.
Отредактировано Kovenant (Sat Jun 26 2010 08:51 AM)
|
Наверх
|
|
|
|
#7121 - Sat Jun 26 2010 08:49 AM
Re: Расчёт индикаторов
[Re: Kovenant]
|
stranger
Registered: Wed Jun 23 2010
Записи: 18
|
и еще глупый вопрос, пытаюсь разобраться, почему у меня такая простая конструкция рисует непонятно что, а не цены закрытия. И почему зависит от задаваемого периода, если он у меня аже фигурирует в коде. namespace TSLab.Script.Handlers
{
[HandlerName("test")]
[HandlerCategory("Indicators")]
public class DIP : BasePeriodIndicatorHandler, IBar2DoubleHandler, IContextUses
{
public IList<double> Execute(ISecurity source)
{
return Calc(source, Context);
}
public static IList<double> Calc(ISecurity source, IContext context)
{
int count = source.Bars.Count;
var close = source.ClosePrices;
return close;
}
public IContext Context { get; set; }
}
}
Отредактировано Kovenant (Sat Jun 26 2010 08:50 AM)
|
Наверх
|
|
|
|
#7126 - Sat Jun 26 2010 10:45 AM
Re: Расчёт индикаторов
[Re: Nektodron]
|
stranger
Registered: Wed Jun 23 2010
Записи: 18
|
соединен с источником данных
|
Наверх
|
|
|
|
|
|