У вас не стоит Flash Player
Настройки
#28650 - Tue Jun 21 2011 12:48 PM Два входящих источника для индикатора
Envilogger Offline
stranger

Registered: Tue Jun 21 2011
Записи: 6
Здравствуйте, существует ли возможность реализовать на C# индикатор, который в качестве входящего параметра будет принимать 2 источника данных.
К примеру, описанная в интерфейсе IBar2DoubleHandler функция Execute принимает только один источник, а хотелось бы 2 таких.

Наверх
#28654 - Tue Jun 21 2011 03:35 PM Re: Два входящих источника для индикатора [Re: Envilogger]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Да, возможность существует, но нужно "собрать" такой интерфейс самостоятельно.
В данном случае это будет:
ITwoSourceHandler, ISecurityInputs, IDoubleReturns, IStreamHandler

и метод должен иметь следующий вид:
IList<double> Execute(ISecurity source1, ISecurity source2);

Наверх
#28670 - Wed Jun 22 2011 09:35 AM Re: Два входящих источника для индикатора [Re: Nektodron]
Envilogger Offline
stranger

Registered: Tue Jun 21 2011
Записи: 6
Спасибо! Интересует только: а не возникнет ли проблем с синхронизацией? К примеру, в одном источнике данных чуть больше, чем в другом. Или этот вопрос нужно урегулировать самостоятельно?
И как я понимаю TSLab сам нормально распознает такой индикатор и его можно будет использовать в блок схемах обычным способом? (перетащить на него 2 источника данных)

Наверх
#28672 - Wed Jun 22 2011 10:39 AM Re: Два входящих источника для индикатора [Re: Envilogger]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
TSLab сам выравнивает данные. Да, нужно будет перетащить два источника.

Наверх
#28673 - Wed Jun 22 2011 11:13 AM Re: Два входящих источника для индикатора [Re: Nektodron]
Envilogger Offline
stranger

Registered: Tue Jun 21 2011
Записи: 6
Спасибо за помощь. Все сделал. Но возникла следующая проблема: TSLab не видит индикатор.

Вот код:


Code:
using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;

namespace Correlation
{
    [HandlerName("Correlation")]
    [HandlerCategory("Indicators")]
    public class CorrelationBlock : I2Bar2DoubleHandler, IStreamHandler
    {
        [HandlerParameter(IsShown = true, Default = "1", Min = "1", Max = "1000", Name = "Depth")]
        public int Depth { get; set; }

        public IList<double> Execute(ISecurity source1, ISecurity source2)
        {
            var close1 = source1.ClosePrices;
            var close2 = source2.ClosePrices;
            var result = new List<double>();

            // some logics here

            return result;
        }

        public IContext Context { get; set; }
    }

    public interface I2Bar2DoubleHandler : ISecurityInputs, IDoubleReturns
    {
        IList<double> Execute(ISecurity source1, ISecurity source2);
    }
}


После компиляции и помещения .dll файла в папку %ProgramFiles%\TSLab\Handlers - ничего не происходит. Индикатор не отображается.
Пробовал и в корень папки TSLab кидать. Так же пробовал компиляцию под все типы платформ x86/x64/any - не видит.
Так же пробовал давать разные имена HandlerName и HandlerCategory

Полный код индикатора в прилагаемом файле


Attachments
CorrelationBlock.cs (266 downloads)


Наверх
#28676 - Wed Jun 22 2011 11:48 AM Re: Два входящих источника для индикатора [Re: Envilogger]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8143
перезагружали ТсЛаб, после помещения индикатора?

Наверх
#28677 - Wed Jun 22 2011 11:58 AM Re: Два входящих источника для индикатора [Re: ViL]
Envilogger Offline
stranger

Registered: Tue Jun 21 2011
Записи: 6
Да, и TSLab и компьютер. Но проблема в другом оказалась. Я компилировал под .NET Framework 4, пересобрал под 3.5 - все видит, но теперь блок в TSLab перетащить не могу, другие индикаторы работают, а этот нет.

Наверх
#28680 - Wed Jun 22 2011 03:46 PM Re: Два входящих источника для индикатора [Re: Envilogger]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Не хватает ITwoSourceHandler

Наверх
#28685 - Thu Jun 23 2011 11:27 AM Re: Два входящих источника для индикатора [Re: Nektodron]
Envilogger Offline
stranger

Registered: Tue Jun 21 2011
Записи: 6
Да, действительно.
Прописал интерфейс ITwoSourcesHandlers,
удалил существующую библиотеку из папки Handlers в TSLab, перезагрузил компьютер, скомпилировал новую библиотеку с ITwoSourcesHandler - скопировал DLL в папку Handlers - TSLab индикатор видит, но разместить его в редакторе не получается.
Код и скриншот окна настроек параметров построения прилагается.


Attachments
CorrelationBlock.cs (297 downloads)
tslabCompilationParameters.PNG (294 downloads)


Наверх
#28763 - Mon Jun 27 2011 10:00 AM Re: Два входящих источника для индикатора [Re: Envilogger]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
что значит разместить в редакторе не получается?

Наверх
#28777 - Mon Jun 27 2011 01:44 PM Re: Два входящих источника для индикатора [Re: Nektodron]
Envilogger Offline
stranger

Registered: Tue Jun 21 2011
Записи: 6
Пробовал открыть TSLab и в редакторе блок-схем перетащить индикатор на панель - ничего не получалось (это в Win XP). На Win7 все работает.
Будем ковыряться у себя. Спасибо за помощь.

Наверх


Moderator:  ViL, sar