4.2.2.25: Indicators. Метод OnProcess возвращает IIndicatorValue.

4.2.2.25: Indicators. Метод OnProcess возвращает IIndicatorValue.
Atom
27.09.2014
devruss


У меня были написаны собственные индикаторы, возвращающие значения decimal. Как теперь нужно переписать код, чтобы возвращаемы значения были IIndicatorValue?

Можно на основе примера: [code=csharp] public class Dummy : LengthIndicator { protected override decimal OnProcess(IIndicatorValue input) { var i = input.GetValue(); return i+100; } } [/code]


Теги:


Спасибо:


Mikhail Sukhov

Фотография
Дата: 27.09.2014
Ответить


Было в чате

Спасибо:

devruss

Фотография
Дата: 28.09.2014
Ответить


[quote=Михаил Сухов;31745]Было в чате[/quote]

Я конечно порылся в чате и нашел. А вот что делать всем остальным пользователям, которые не имеют эту историю? Мало того, что непонятно зачем поменяли тип данных, так еще и сделали это по-тихому вообще без какой-либо документации. Неужели сложно хоть пример использования составить? Я уже не говорю про какие-то новые фичи, которые вообще непонятно как использовать без документации. Я не первый про это пишу, но думаю, напомнить стоит.

Спасибо:

Rebelion

Фотография
Дата: 30.09.2014
Ответить


[quote=devruss;31749][quote=Михаил Сухов;31745]Было в чате[/quote]

Я конечно порылся в чате и нашел. А вот что делать всем остальным пользователям, которые не имеют эту историю? Мало того, что непонятно зачем поменяли тип данных, так еще и сделали это по-тихому вообще без какой-либо документации. Неужели сложно хоть пример использования составить? Я уже не говорю про какие-то новые фичи, которые вообще непонятно как использовать без документации. Я не первый про это пишу, но думаю, напомнить стоит.[/quote]

Коллега, а выложите чат для тех, кто данной инфой не обладает...

Спасибо:

devruss

Фотография
Дата: 30.09.2014
Ответить


[quote=Rebelion;31760] Коллега, а выложите чат для тех, кто данной инфой не обладает...[/quote]

[code=csharp] protected override IIndicatorValue OnProcess(IIndicatorValue input) { var newValue = input.GetValue();

if (input.IsFinal) { Buffer.Add(newValue);

if ((Buffer.Count - 1) > Length)
 Buffer.RemoveAt(o);

}

if (Buffer.Count == 0) return new DecimalIndicatorValue();

return (DecimalIndicatorValue)(newValue - Buffer[0]); } [/code]

Спасибо: Rebelion

Rebelion

Фотография
Дата: 02.10.2014
Ответить


[quote=devruss;31761][quote=Rebelion;31760] Коллега, а выложите чат для тех, кто данной инфой не обладает...[/quote]

[code=csharp] protected override IIndicatorValue OnProcess(IIndicatorValue input) { var newValue = input.GetValue();

if (input.IsFinal) { Buffer.Add(newValue);

if ((Buffer.Count - 1) > Length)
 Buffer.RemoveAt(o);

}

if (Buffer.Count == 0) return new DecimalIndicatorValue();

return (DecimalIndicatorValue)(newValue - Buffer[0]); } [/code] [/quote]

Теперь вопрос.

Было

[code=csharp]protected override decimal [] OnProcess(IIndicatorValue input) { return new decimal[2] {1.0m, 1.0m}; }[/code]

На вариант

[code=csharp]protected override IIndicatorValue [] OnProcess(IIndicatorValue input) { new DecimalIndicatorValue[2] {(DecimalIndicatorValue)1.0m, (DecimalIndicatorValue)1.0m}; }[/code]

ругается, что возвращаемое значение должно быть IIndicatorValue. Внимание, вопрос - что делать? Теперь массив не передать?

Спасибо:

Andrii

Фотография
Дата: 02.10.2014
Ответить


[quote=Rebelion;31780][quote=devruss;31761][quote=Rebelion;31760] Коллега, а выложите чат для тех, кто данной инфой не обладает...[/quote]

[code=csharp] protected override IIndicatorValue OnProcess(IIndicatorValue input) { var newValue = input.GetValue();

if (input.IsFinal) { Buffer.Add(newValue);

if ((Buffer.Count - 1) > Length)
 Buffer.RemoveAt(o);

}

if (Buffer.Count == 0) return new DecimalIndicatorValue();

return (DecimalIndicatorValue)(newValue - Buffer[0]); } [/code] [/quote]

Теперь вопрос.

Было

[code=csharp]protected override decimal [] OnProcess(IIndicatorValue input) { return new decimal[2] {1.0m, 1.0m}; }[/code]

На вариант

[code=csharp]protected override IIndicatorValue [] OnProcess(IIndicatorValue input) { new DecimalIndicatorValue[2] {(DecimalIndicatorValue)1.0m, (DecimalIndicatorValue)1.0m}; }[/code]

ругается, что возвращаемое значение должно быть IIndicatorValue. Внимание, вопрос - что делать? Теперь массив не передать?[/quote]

Не уверен, что вообще когда-то можно было... походу если нужно вернуть несколько значений, то нужно сделать как у Bollinger-а BaseComplexIndicator или этот ComplexIndicatorValue

Спасибо: Rebelion

Rebelion

Фотография
Дата: 02.10.2014
Ответить


Работало, чесслово. Использовал BaseIndicator<decimal []>. теперь же, видимо, придётся переделывать код - разбираться в ComplexIndicatorValue или делать какие-либо собственные обёртки... Да, если будет возможность, пожалуйста, какой-нибудь dummy код приведите с использованием ComplexIndicatorValue. Заранее пасиба!

Спасибо:

Rebelion

Фотография
Дата: 03.10.2014
Ответить


Ап! Камрады, плз, не останьтесь безучастными к проблемам собрата!

Спасибо:

Andrii

Фотография
Дата: 03.10.2014
Ответить


[quote=Rebelion;31805]Ап! Камрады, плз, не останьтесь безучастными к проблемам собрата![/quote]

[code=csharp]class ExtraDummyMultiIndicator : BaseComplexIndicator { protected override ComplexIndicatorValue OnProcess(IIndicatorValue input) { return base.OnProcess(input); } }[/code]

Спасибо: Rebelion

Rebelion

Фотография
Дата: 03.10.2014
Ответить


[quote=Andrii;31806][quote=Rebelion;31805]Ап! Камрады, плз, не останьтесь безучастными к проблемам собрата![/quote]

[code=csharp]class ExtraDummyMultiIndicator : BaseComplexIndicator { protected override ComplexIndicatorValue OnProcess(IIndicatorValue input) { return base.OnProcess(input); } }[/code]

[/quote]

Пасибочки! Этот вариант норм. Плюс ещё через [code=csharp]SingleIndicatorValue<decimal []>[/code] получилось сделать. Мб кривоватенько, но пашет. :-)

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy