#56545 - Tue Jul 09 2013 11:13 AM
Индикатор-кубик с 2-мя входами
|
stranger
Registered: Mon Jul 08 2013
Записи: 8
Loc: г.Петрозаводск
|
Смотрю, все примеры создания индикаторов используют данные одного инструмента. А как кодом описать если нужно использовать данные 2-х инструментов - например индикатор арбитражного спреда. И возможно ли сделать индикатор, который имел бы 2 входа к которым можно подключить не инструменты, а другие блоки (индикаторы, формулы)? Как эти входы кодом описать и использовать? В справке API и на форуме ничего похожего не нашел. 
|
|
Наверх
|
|
|
|
#56552 - Tue Jul 09 2013 04:44 PM
Re: Индикатор-кубик с 2-мя входами
[Re: mumbo jumbo]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Например из двух источников свой "Какой-то" инструмент ): using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace spr
{
public class sprd : ISecurityInputs, ISecurityReturns, ITwoSourcesHandler, IStreamHandler
{
public ISecurity Execute(ISecurity source1, ISecurity source2)
{
var bars = new List<Bar>(source1.Bars.Count);
for (int i = 0; i < source1.Bars.Count; i++)
{
var bar = source1.Bars[i];
var o1 = source2.OpenPrices[i];
var h1 = source2.HighPrices[i];
var l1 = source2.LowPrices[i];
var c1 = source2.ClosePrices[i];
var newBar = new Bar(bar.Color, bar.Date,bar.Open-o1,
bar.High-h1,
bar.Low-l1,
bar.Close-c1,
bar.Volume){ Ask = bar.Ask, Bid = bar.Bid, AskQty = bar.AskQty, BidQty = bar.BidQty };
bars.Add(newBar);
}
return source1.CloneAndReplaceBars(bars);
}
}
}
Отредактировано 777 (Tue Jul 09 2013 04:45 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#56555 - Tue Jul 09 2013 05:45 PM
Re: Индикатор-кубик с 2-мя входами
[Re: 777]
|
stranger
Registered: Mon Jul 08 2013
Записи: 8
Loc: г.Петрозаводск
|
777, Здорово! Спасибо за помощь! +++ не нашел куда плюсы ставить  ООООО, можно даже 3 и 4 источника сделать! Круто, только пока не надо ))) А как бы еще данные других "кубиков" использовать? Есть такая возможность? Например, сделал я 2 индикатора, и делая третий нужно использовать те же данные, что расчитаны первыми двумя.
|
|
Наверх
|
|
|
|
#56557 - Tue Jul 09 2013 06:12 PM
Re: Индикатор-кубик с 2-мя входами
[Re: Nektodron]
|
stranger
Registered: Mon Jul 08 2013
Записи: 8
Loc: г.Петрозаводск
|
Спасибо, Nektodron! Интересная возможность посмотреть сгенерированный код. Правда в этом коде известно какие кубики подключены, а при написании своего индикатора их имена еще не известны.
|
|
Наверх
|
|
|
|
#56558 - Tue Jul 09 2013 06:19 PM
Re: Индикатор-кубик с 2-мя входами
[Re: mumbo jumbo]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
тут есть под старую версию. Сейчас не знаю работает ли. Но если нет, то как то похоже: http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=8738#Post8738 В коде обратного нормального распределения.
Отредактировано 777 (Tue Jul 09 2013 06:20 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#56559 - Tue Jul 09 2013 06:25 PM
Re: Индикатор-кубик с 2-мя входами
[Re: 777]
|
stranger
Registered: Mon Jul 08 2013
Записи: 8
Loc: г.Петрозаводск
|
Спасибо! 777, посмотрю.
Еще вопрос - Индикатор может возвращать только 1 значение или как то можно больше вернуть?
В этом коде используется интерфейс на 3 источника IDoubleAccum3Handler, в текущей документации нашел только на 2. IDoubleAccumHandler IList< double > Execute (IList< double > source1, IList< double > source2)
Я правильно понимаю что "IList< double > source1" это и есть источник не в виде баров, а массив индикатора или чего то еще?
Отредактировано mumbo jumbo (Tue Jul 09 2013 07:15 PM)
|
|
Наверх
|
|
|
|
|
|