У вас не стоит Flash Player
Page 1 of 4 1 2 3 4 >
Настройки
#7177 - Mon Jun 28 2010 11:38 AM Создание индикаторов на API
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: uprav
Кажется что блок "Удерживалось баров" не совсем корректно считает бары на свече перед выходом, перепрыгивает через 1.

Originally Posted By: Nektodron
Да, есть такое. Если была команда закрыть позицию на след баре, то после этого позиция будет всегда выдавать расстояние между закрытием и открытием. Будет поправлено.

Nektodron, подскажите пож: написал такой код:

public class balanse : IPosition2Double
{
public double Execute(IPosition pos, int barNum)
{ var n = pos.ExitBarNum;
if (pos == null || !pos.IsActive)
{
return 0;
} else
{return (pos.OpenProfit(barNum));}
}
}
Это блок "доход" но отличающийся тем , что выводит занчение только при активной позиции, но есть загвоздка - этот блок не выводит значение дохода на послеюней свече (в скрине). Думаю что это связано с pos.IsActive - почему то его действие заканчивается за 2 бара до выхода. Как сделать чтобы занчение выводилось на полседней свече перед выходом?


Attachments
Блок пользовательский доход.JPG (506 downloads)

_________________________


Наверх
#7178 - Mon Jun 28 2010 12:01 PM Re: Создание индикаторов на API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
pos.IsActive не учитывает номер свечи, поэтому если код скрипта сгенерился так, что сначала позиция закрылась, а потом вызвался индикатор, то там уже будет false.

надо написать так
"!(pos.IsActive || pos.ExitBarNum > barNum)"

Наверх
#7255 - Mon Jun 28 2010 06:09 PM Re: Создание индикаторов на API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron

надо написать так
"!(pos.IsActive || pos.ExitBarNum > barNum)"

Вот вставил, получился код:

public class balanse : IPosition2Double
{
public double Execute(IPosition pos, int barNum)
{ if (pos == null || !(pos.IsActive || pos.ExitBarNum > barNum))
{
return 0;
} else
{return (pos.OpenProfit(barNum));}
}
}

Теперь он стал работать как стандартный блок "Доход" и протягивает значение до следующей позиции (а нужно только до конца собственной активной позиции), получается что на это выражение "!(pos.ExitBarNum > barNum)" нет должного реагирования, т.е. должен выводиться 0, когда номер exitбара <= текущего бара? Скрин прилагаю. По разному изголялся, даже писал pos.ExitBarNum-1..2..3 - в этом случае, при 1 продлевает(как в скрине), с 2 начинат рисовать по старому, т.е. без значения последнего бара перед выходом (как в первом посте этой темы).


Attachments
Блок пользовательский доход1.JPG (495 downloads)

_________________________


Наверх
#7258 - Mon Jun 28 2010 06:32 PM Re: Создание индикаторов на API [Re: uprav]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Nektodron, натолкните на мысль, т.е. для чего я горожу этот блок, м.б. и не в ту степь полез, нужно то всего навсего накопленный (кумулятивный) баланс позиции за время её жизни, т.е. если представить этот баланс в виде гистограммы, то нужно вычилслять её площадь, например: баланс соответственно на свечах жизни позиции 1,2,3,4,5 а значения кумуляты на этих пяти свечах буду равны 1,3,6,10,15 и т.д., ну и нужны их модули, т.е. не важно баланс позиции + или -. В Визуале это не сделать т.к. нет циклов и невозможно обращаться к предыдущему рассчётному значению в формуле, подскажите пож. м.б., хотя бы какими интерфейсами воспользоваться в API, т.к. нужно будет вычислять цикл, брать цену закрытия бара и цену входа в поз., или брать доход позиции и обращаться к предыдущим барам активной позиции.
_________________________


Наверх
#7273 - Mon Jun 28 2010 08:20 PM Re: Создание индикаторов на API [Re: uprav]
Nektodron Offline

Carpal Tunnel

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

Наверх
#7276 - Mon Jun 28 2010 08:59 PM Re: Создание индикаторов на API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron
а дальше для чего используется значение этого индикатора?

дальше я буду сравнивать значение одного инструмента со значением инструмента-антипода(антипод-имеется ввиду коррелирующий в + или в -,не важно, инструмент), цель этого - выяснить на сколько нужно изменить количество позиций (или позиции) для уравновешивания балансов взаимодействующих инструментов*
* для рынокв акций м.б. и не нужно было бы это городить, там можно на всей истории прокинуть типа скользящей средней цен закрытия (или просто цен закрытия) двух антиподов х на коэфф.количества для выравнивания баланса, и они вполне возможно будут идти рядом (я не делал этого), но для сшитых фьюч.ФОРТСА я пробовал прокинуть на постоянном коэфф.количества баланса - линии расходятся далеко, поэтому нужно постоянно корректировать баланс количеством, и как один из варинатов - это сранивать их накопленные балансы за время жизни позиций-антиподов.
-------------------------
Вполне возможно, что сначала м.б. нужно просто смоделировать поведение балансов на индикаторе, а не входить в позиции , но с другой стороны дисбаланс может пойти и в нашу сторону...без прогонки на истории трудно сказать.


Отредактировано uprav (Tue Jun 29 2010 07:25 AM)
_________________________


Наверх
#7317 - Tue Jun 29 2010 01:23 PM Re: Создание индикаторов на API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Я к тому, что может проще все алгоритм на C# написать?
Просто в редакторе код, который получается, несколько хитро генерируется, расчет значений из позиции вызывается только когда позиция существует, а потом копируется последнее. Поэтому нулей и нет.

Наверх
#7380 - Tue Jun 29 2010 09:00 PM Re: Создание индикаторов на API [Re: Nektodron]
Kovenant Offline
stranger

Registered: Wed Jun 23 2010
Записи: 18
Поскажите, как вывести график доходности. И на стандартный блок, и на на написанный на API ругается:
Элемент 'Item1' содержит ошибку: Не получается создать график для этого элемента.

Наверх
#7382 - Tue Jun 29 2010 09:36 PM Re: Создание индикаторов на API [Re: Kovenant]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Kovenant
Поскажите, как вывести график доходности. И на стандартный блок, и на на написанный на API ругается:
Элемент 'Item1' содержит ошибку: Не получается создать график для этого элемента.
появился блок "доходность"? Или вы говорите про блок "доход"? А какой код на API? Икакая версия программы? У меня версия 1.1.7.36 и блок "Доход" рисуется на графике. До этой версии тоже такую ошибку выдавал.


Отредактировано uprav (Tue Jun 29 2010 09:38 PM)
_________________________


Наверх
#7386 - Tue Jun 29 2010 09:58 PM Re: Создание индикаторов на API [Re: Nektodron]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Подскажите пожалуйста!
Задача - создать индикатор и компилировать. Знаю, что мои вопросы будут дурацкими, но все же прошу ответить, не обязательно разработчиков. Мне просто нужно понять программу SharpDevelop. Я реально завис на мелочах, которые уже кажутся нерешаемыми. Вот посмотрите на настройки, при таких настройках компилируемый файл DLL должен оказаться в папке handlers? Ничего не нужно нигде менять? :



Подскажите, что нужно нажать, что бы появилось окно редактора, куда бы можно было скопировать код индикатора из примера:

using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;

namespace test
{
public class MyStochK : IBar2DoubleHandler, IContextUses
{
[HandlerParameter]
public int Period { get; set; }

public IList<double> Execute(ISecurity source)
{
var high = Context.GetData("Highest", new[] { Period.ToString() },
() => Series.Highest(source.HighPrices, Period));
var low = Context.GetData("Lowest", new[] { Period.ToString() },
() => Series.Lowest(source.LowPrices, Period));
var closes = source.ClosePrices;
IList<double> list = new List<double>(closes.Count);
for (int i = 0; i < closes.Count; i++)
{
var stochK = 100 * (closes[i] - low[i]) / (high[i] - low[i]);
list.Add(stochK);
}
return list;
}

public IContext Context { get; set; }
}
}


Attachments
Компиляция.JPG (2268 downloads)



Отредактировано 777 (Tue Jun 29 2010 10:08 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#7388 - Tue Jun 29 2010 10:11 PM Re: Создание индикаторов на API [Re: uprav]
Kovenant Offline
stranger

Registered: Wed Jun 23 2010
Записи: 18
Originally Posted By: uprav
Originally Posted By: Kovenant
Поскажите, как вывести график доходности. И на стандартный блок, и на на написанный на API ругается:
Элемент 'Item1' содержит ошибку: Не получается создать график для этого элемента.
появился блок "доходность"? Или вы говорите про блок "доход"? А какой код на API? Икакая версия программы? У меня версия 1.1.7.36 и блок "Доход" рисуется на графике. До этой версии тоже такую ошибку выдавал.

Да, дело в билде оказалось.
Вопрос такой: подскажите, почему доходность считается с предыдущего бара от входа в позицию? На скрине на верхней панели вход в позиицию, на самой нижней - Доход%


Attachments
30.06.jpg (1876 downloads)



Отредактировано Kovenant (Tue Jun 29 2010 10:12 PM)

Наверх
#7391 - Tue Jun 29 2010 10:14 PM Re: Создание индикаторов на API [Re: 777]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Нужно создать пустой файл, для этого правой мышью на названии TSLAB -> add -> New Item -> Empty File. Пишешь название. Место менять не стоит. Он сохранится в папке проекта.
_________________________


Наверх
#7394 - Tue Jun 29 2010 10:32 PM Re: Создание индикаторов на API [Re: uprav]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: uprav
Нужно создать пустой файл, для этого правой мышью на названии TSLAB -> add -> New Item -> Empty File. Пишешь название. Место менять не стоит. Он сохранится в папке проекта.

Спасибо uprav!

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





Attachments
Проверка на ошибки.JPG (1997 downloads)



Отредактировано 777 (Tue Jun 29 2010 10:34 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#7395 - Tue Jun 29 2010 10:42 PM Re: Создание индикаторов на API [Re: 777]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: 777
Originally Posted By: uprav
Нужно создать пустой файл, для этого правой мышью на названии TSLAB -> add -> New Item -> Empty File. Пишешь название. Место менять не стоит. Он сохранится в папке проекта.

Спасибо uprav!

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




Снимается вопрос.
Такой вопрос:
Что нужно нажать, что бы появился DLL?
_________________________
То же снимается


Отредактировано 777 (Wed Jun 30 2010 12:09 AM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#7397 - Tue Jun 29 2010 11:29 PM Re: Создание индикаторов на API [Re: 777]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Вот такой файл(из примера):



После компиляции записываются файлы в папку hendlers:



В папке пользовательские находится нужный индикатор но ТСЛАБ выдает ошибку:



Свойства выходного файла приведены выше. В чем может быть проблема?


Attachments
Пример sharp.JPG (2045 downloads)
папка handlers.JPG (2036 downloads)
Ошибка в Тслабе.JPG (2022 downloads)



Отредактировано 777 (Tue Jun 29 2010 11:33 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#7406 - Wed Jun 30 2010 08:37 AM Re: Создание индикаторов на API [Re: 777]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: 777
Вот такой файл(из примера): Свойства выходного файла приведены выше. В чем может быть проблема?
М.б. что то с кодом не то? Я тоже сначала из справки делал, тоже ошибка была, было что то с кодом.
1. Попробуй переименовать блок - для этого надо MyStock в publik class заменить на другое.
2. Побробуй для примера взять код попроще, Nektodron выкладывал примеры .cs на форуме. Для этого можно в этом же проекте открыть другой .cs в другой вкладке он появится, и скопировать код в свою вкладку. Они друг на друга не влияют при компиляции.
_________________________


Наверх
#7440 - Wed Jun 30 2010 12:47 PM Re: Создание индикаторов на API [Re: uprav]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Не прокатывает. Теперь опять вообще ничего не компилируется. Беру индикаторы из основных, тех что нектодрон выкладывал, компилирую, в папке hendlers ничего не появляется... То пишет ошибку 39 то Sharp пишет сексесфул, но в папке ничего нет.
Ничего не понимаю. Очень не хватает видеоуроков по-этому sharp-у.
А с самым первым, тем что из примера, все в порядке, изменяются названия переменных и все такое, но в тслабе пишет ошибку:
System.TypeLoadException: Не удалось загрузить тип "test.ПРОБА" из сборки "TSLAB, Version=1.0.3832.33524, Culture=neutral, PublicKeyToken=null".
в TSLab.User.Script..ctor()


Отредактировано 777 (Wed Jun 30 2010 12:49 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#7485 - Wed Jun 30 2010 06:04 PM Re: Создание индикаторов на API [Re: Kovenant]
Kovenant Offline
stranger

Registered: Wed Jun 23 2010
Записи: 18
Originally Posted By: Kovenant
Originally Posted By: uprav
Originally Posted By: Kovenant
Поскажите, как вывести график доходности. И на стандартный блок, и на на написанный на API ругается:
Элемент 'Item1' содержит ошибку: Не получается создать график для этого элемента.
появился блок "доходность"? Или вы говорите про блок "доход"? А какой код на API? Икакая версия программы? У меня версия 1.1.7.36 и блок "Доход" рисуется на графике. До этой версии тоже такую ошибку выдавал.

Да, дело в билде оказалось.
Вопрос такой: подскажите, почему доходность считается с предыдущего бара от входа в позицию? На скрине на верхней панели вход в позиицию, на самой нижней - Доход%

прояните пож-ста..


Отредактировано Kovenant (Wed Jun 30 2010 06:05 PM)

Наверх
#7732 - Fri Jul 02 2010 10:23 PM Re: Создание индикаторов на API [Re: 777]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: 777
Вот такой файл(из примера):



После компиляции записываются файлы в папку hendlers:



В папке пользовательские находится нужный индикатор но ТСЛАБ выдает ошибку:



Свойства выходного файла приведены выше. В чем может быть проблема?
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#7749 - Sat Jul 03 2010 11:29 AM Re: Создание индикаторов на API [Re: 777]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Такое ощущение, что файлы TSLab.ScriptCommon.dll и TSLab.DataSourceCommon.dll используемые при компиляции - другие, чем, которые сейчас в программе.

Наверх
#8136 - Sun Jul 11 2010 10:24 PM И опять ошибка CS0103 [Re: Nektodron]
dmfx Offline
stranger

Registered: Fri Apr 16 2010
Записи: 9
2 Nektodron и другие спецы.

Здравствуйте.
Я опять застрял. Ниже код индикатора, который должен выполнять простое вычисление (среднее между максимумом и минимумом, которые сдвигаются по определенному закону. в примере - упрощенный вариант). При компиляции - ошибка CS0103. Господа, подскажите, плз, что не так.
Code:
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
using System;

namespace test
{
	public class MyInd : IBar2DoubleHandler, IContextUses
	{
		[HandlerParameter]
		public int Period { get; set; }
		
		public IList<double> Execute(ISecurity source)
		{
		    
			int k;
			for (k = 0; k < Math.Pow(2, 5); k++)
			{
				int m;       //сдвиг как-то вичисляется. для примера - пусть будет так.
				m = k * 3;   //сдвиг как-то вичисляется. для примера - пусть будет так.
			    var hh = Series.Highest(Series.Shift(source.HighPrices, m), Period);
		        var ll = Series.Lowest(Series.Shift(source.LowPrices, m), Period);
			}
		    
		    var closes = source.ClosePrices;
		    IList<double> list = new List<double>(closes.Count);
		    for (int i = 0; i < closes.Count; i++)
		    {
		        var mv = (hh[i] + ll[i]) / 2;
		        list.Add(mv);
		    }
		    return list;
		}
		
		public IContext Context { get; set; }
	}
}

Наверх
#8137 - Mon Jul 12 2010 12:00 AM Re: И опять ошибка CS0103 [Re: dmfx]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Все же реально не хватает документации.
Предлагаю разработчикам создать "рыбу", вернее рыбы для написания индикаторов. Потому-что среди клиентов реально мало программемров.
Допустим:
1 Рыба.: Математическое вычисление. Данные: close, open, high, low. Далее возможные вычисления, например для вычисления натурального логарифма, мне пришлось перевернуть весь инет, т.к. ни в документации Microsoft(там было что то типа [JSFunctionAttribute(JSFunctionAttributeEnum.None, JSBuiltin.Math_log)]
public static double log(
double x
)
) ни в Вашей, нигде не было нормального описалово, оказывается, для его вычисления не надо ничего объявлять, достаточно написать System.Math.Log(X). Где X абсолютно любые математические исчисления. Потом, меня лично сейчас интересует вычисление интегралла.
2 Рыба: Доступ к портфелю. Данные: цена входа, последний доход и т.д.
3 Рыба: Доступ из создаваемого индикатора к уже существующим.
4 Рыба: Преобразование из переменного в постоянное

Потом сильно не хватает описалово ошибок... Ошибка № - скорее всего Вы сделали не так вот это...

Короче, я сколько вопросов пишу Nektodron-у, столько он и отвечает, но с каждым следующим ответом чувствуется его напряжение и с каждым разом надо задавать большее кол-во вопросов, что бы получить конкретный ответ, и это понятно, потому-что он уже десять раз на них кому-то отвечал(а на сайте поисковик честно сказать так себе - и это почти ничего не сказать), а во вторых ему дана конкретная установка отвечать только на ошибки...
Может стоит уделить внимание документации и просто отвечать на вопросы, которые уже задавались, конкретным примером. Потом не понятно, в примерах появляется большое кол-во торгующих скриптов, но еще мало кто может из них просто выделять нужные индикаторы. И поверьте, это не из-за того, что не хотят(usas у нас только один такой), а реально просто не хватает знаний.
Вообщем предложение мое: уделить внимание созданию индикаторов, а начать можно с того, что выкладывать исходники вновь появляющихся индикаторов в ТСЛаб, допустим из исходников на сайте выложено сейчас по порядку RSI следующий сразу сумма за т.е. пропущено как минимум 6! штук. А из примеров не хватает как пример: CCI>0?(LOW-TR):(HIGH+TR) Т.е. как объявить переменные, как обратиться к уже существующему CCI и TR, как правильно организовать алгоритм на API?
Вообщем не хватает простетских вещей, понятно, что Вы сейчас пытаетесь привлечь внимание программеров, для этого устроили "Лучшая стратегия - и мы ее реализуем". Но поверьте у многих есть такие стратегии, включая меня, но я ее никому не дам, и никогда не продам, мне нужны только инструменты для ее реализации. Я всегда был трейдером и никогда программистом, пожалуйста постарайтесь такому большинству дать больше информации.... smile Может быть даже лучше преобразовать "Заказ Индикаторов" во что-то типа "Реализация на API", т.е. выкладывать только исходники, кому надо - тот компильнул, кому надо тот обучается... Все конечно же ИМХО, можете даже не отвечать...


Отредактировано 777 (Mon Jul 12 2010 12:30 AM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8139 - Mon Jul 12 2010 08:40 AM Re: И опять ошибка CS0103 [Re: 777]
usas Offline
Pooh-Bah

Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
Originally Posted By: 777
..И поверьте, это не из-за того, что не хотят(usas у нас только один такой), а реально просто не хватает знаний...

Вот именно..
Сам наехал, сам и объяснил.. да и потом.. слесарю-слесарево, по писанию..:-))

Наверх
#8142 - Mon Jul 12 2010 10:22 AM Re: И опять ошибка CS0103 [Re: dmfx]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Originally Posted By: dmfx
При компиляции - ошибка CS0103. Господа, подскажите, плз, что не так.

hh и ll объявлены и вычисляются внутри одного цикла (зачемто), а используются в другом.

Наверх
#8143 - Mon Jul 12 2010 10:24 AM Re: И опять ошибка CS0103 [Re: 777]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Originally Posted By: 777
Все конечно же ИМХО, можете даже не отвечать...


Отвечу.
Уровень подготовки Клиентов разный.
Спектр задач, которые хочет решить Клиент с помощью TSLab, широкий.
Понятно что постепенно будет расширяться документация и примеры, но быстро это не произойдет.
Кто в состоянии сам копать, мы отвечаем на форуме. Кто не в состоянии, но реально надо для торговли какие-то вещи, пишет на contact@tslab.ru будем решать в частном порядке.

Наверх
#8144 - Mon Jul 12 2010 10:34 AM Re: И опять ошибка CS0103 [Re: andy]
usas Offline
Pooh-Bah

Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
Жаль только что понять, надо или не надо это для реальной торговли можно только пощупав, но... увы, кот где-то в мешке на contact@... :-))
Бум ждать..

Наверх
#8146 - Mon Jul 12 2010 11:02 AM Re: И опять ошибка CS0103 [Re: Nektodron]
dmfx Offline
stranger

Registered: Fri Apr 16 2010
Записи: 9
Originally Posted By: Nektodron
Originally Posted By: dmfx
При компиляции - ошибка CS0103. Господа, подскажите, плз, что не так.

hh и ll объявлены и вычисляются внутри одного цикла (зачемто), а используются в другом.

Хорошо. Пусть объявляются и вычисляются в одном цикле. Второй же цикл нужен для вывода (расчета на всех барах на истории) рассчитанного значения. Если второй цикл не нужен (я и сам не уверен в его необходимости - или вроде так можно организовать расчет для всех баров по истории?) - так как можно сделать? Или если второй цикл все-таки нужен - как использовать значения, вычисленные в первом? Основная "фишка" - вычисление сдвига. Но там проблем нет - вычисляется в том же цикле, что и hh и ll (но там проблем нет и я привел слегка видоизменненый код.). Помогите, плз. Уже неделю бьюсь frown


Отредактировано dmfx (Mon Jul 12 2010 11:05 AM)

Наверх
#8148 - Mon Jul 12 2010 11:07 AM Re: И опять ошибка CS0103 [Re: andy]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: andy
Originally Posted By: 777
Все конечно же ИМХО, можете даже не отвечать...


Отвечу.
Уровень подготовки Клиентов разный.
Спектр задач, которые хочет решить Клиент с помощью TSLab, широкий.
Понятно что постепенно будет расширяться документация и примеры, но быстро это не произойдет.
Кто в состоянии сам копать, мы отвечаем на форуме. Кто не в состоянии, но реально надо для торговли какие-то вещи, пишет на contact@tslab.ru будем решать в частном порядке.



Позвольте и я отвечу. В "частном порядке" сложные вопросы, у меня по крайней мере, давно решены через Метасток, ТсЛаб мне как раз и нужен для того, что бы вопросы решались не "в частном порядке", очень уж хотелось уйти от зависимости от программистов. Пришла мысль - есть инструмент для решения. И каждый раз отдавать деньги за свои порой откровенно глупые мысли программисту..., смысл от торговли? Зачем ТСЛаб нужен, если даже простые вопросы "в частном порядке"? smile
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8156 - Mon Jul 12 2010 12:57 PM Re: И опять ошибка CS0103 [Re: 777]
Vladimir / Offline
old hand

Registered: Tue Jan 05 2010
Записи: 1098
Loc: Набережные Челн...
Originally Posted By: 777
И каждый раз отдавать деньги за свои порой откровенно глупые мысли программисту...

пардон
а кубами нельзя проверить индюк? по сути это череда формул ...

Наверх
#8162 - Mon Jul 12 2010 02:06 PM Re: И опять ошибка CS0103 [Re: Vladimir /]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: Vladimir /
Originally Posted By: 777
И каждый раз отдавать деньги за свои порой откровенно глупые мысли программисту...

пардон
а кубами нельзя проверить индюк? по сути это череда формул ...

Да нет конечно! Такое кубами не проверишь!
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8166 - Mon Jul 12 2010 02:28 PM Re: И опять ошибка CS0103 [Re: 777]
Vladimir / Offline
old hand

Registered: Tue Jan 05 2010
Записи: 1098
Loc: Набережные Челн...
Originally Posted By: 777
Originally Posted By: Vladimir /
Originally Posted By: 777
И каждый раз отдавать деньги за свои порой откровенно глупые мысли программисту...

пардон
а кубами нельзя проверить индюк? по сути это череда формул ...

Да нет конечно! Такое кубами не проверишь!

Не верю!(с)

Наверх
#8167 - Mon Jul 12 2010 02:35 PM Re: И опять ошибка CS0103 [Re: Vladimir /]
usas Offline
Pooh-Bah

Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
Я что-то не догоняю - как можно кубиком проверить работу индикатора, если оный кубик еще не сваяли?
Или Вы имеете ввиду какие-то иные кубЫ?

Наверх
#8168 - Mon Jul 12 2010 02:41 PM Re: И опять ошибка CS0103 [Re: Vladimir /]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: Vladimir /

Не верю!(с)

Ну и как интеграл в кубике записать:

Code:
                                 inf.
                                    -
                         2         | |          2
          erfc(x)  =  --------     |    exp( - t  ) dt
                      sqrt(pi)   | |
                                  -
                                   x



Если Вы сможете, тогда лучше Гаусса:
Code:
                             x
                                    -
                          1        | |          2
           ndtr(x)  = ---------    |    exp( - t /2 ) dt
                      sqrt(2pi)  | |
                                  -
                                 -inf.

                    =  ( 1 + erf(z) ) / 2
                    =  erfc(z) / 2

        где z = x/sqrt(2)
erfc был выше, а erf это:

                                    x
                                   -
                        2         | |          2
          erf(x)  =  --------     |    exp( - t  ) dt.
                     sqrt(pi)   | |
                                 -
                                  0


Отредактировано 777 (Mon Jul 12 2010 03:03 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8172 - Mon Jul 12 2010 03:12 PM Re: И опять ошибка CS0103 [Re: usas]
Vladimir / Offline
old hand

Registered: Tue Jan 05 2010
Записи: 1098
Loc: Набережные Челн...
Originally Posted By: usas
Я что-то не догоняю - как можно кубиком проверить работу индикатора, если оный кубик еще не сваяли?
Или Вы имеете ввиду какие-то иные кубЫ?

есть кубЫ формула

Наверх
#8173 - Mon Jul 12 2010 03:19 PM Re: И опять ошибка CS0103 [Re: 777]
Vladimir / Offline
old hand

Registered: Tue Jan 05 2010
Записи: 1098
Loc: Набережные Челн...
Originally Posted By: 777
Originally Posted By: Vladimir /

Не верю!(с)

Ну и как интеграл в кубике записать:
[/code]

да вы я смотрю подготовились)) нет с интегралами не дружу

Наверх
#8174 - Mon Jul 12 2010 03:24 PM Re: И опять ошибка CS0103 [Re: Vladimir /]
usas Offline
Pooh-Bah

Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
А, Вы это имели ввиду.
Я пытался, кое-что можно, но это "чесать правой ногой левое ухо
через спину"..себе дороже.. Похерил это дело и решил терпеливо ждать..:-((

Наверх
#8176 - Mon Jul 12 2010 03:34 PM Re: И опять ошибка CS0103 [Re: Vladimir /]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: Vladimir /
с интегралами не дружу

Жаль smile
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8177 - Mon Jul 12 2010 03:36 PM Re: И опять ошибка CS0103 [Re: usas]
Vladimir / Offline
old hand

Registered: Tue Jan 05 2010
Записи: 1098
Loc: Набережные Челн...
вот если по честному
я к всякого рода индикаторам вообще отношусь скептически,
так же как и к безиндикаторным системам))).
Индикаторы показывают прошлое...


Отредактировано Vladimir / (Mon Jul 12 2010 03:39 PM)

Наверх
#8180 - Mon Jul 12 2010 03:50 PM Re: И опять ошибка CS0103 [Re: Vladimir /]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: Vladimir /
вот если по честному
я к всякого рода индикаторам вообще отношусь скептически,
так же как и к безиндикаторным системам))).
Индикаторы показывают прошлое...

Как же Вы торгуете, графический анализ? Даже не знаете, что есть формулы для вычисления будущей цены с определенной вероятностью?


Отредактировано 777 (Mon Jul 12 2010 03:54 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8210 - Mon Jul 12 2010 07:20 PM Re: И опять ошибка CS0103 [Re: Nektodron]
dmfx Offline
stranger

Registered: Fri Apr 16 2010
Записи: 9
Originally Posted By: Nektodron
Originally Posted By: dmfx
При компиляции - ошибка CS0103. Господа, подскажите, плз, что не так.

hh и ll объявлены и вычисляются внутри одного цикла (зачемто), а используются в другом.


Ошибку указали. Спасибо. Но как правильно сделать?!

Наверх
#10251 - Tue Aug 17 2010 10:44 PM Re: И опять ошибка CS0103 [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron
Чтобы сослаться в формуле на свое значение можно воспользоваться зарезервированным именем list.
Например:
"list[i-1] + 1"

Originally Posted By: uprav

Nektodron, я правильно понимаю, что это ссылка в выражении в визуальном редакторе в блоке формула на своё собственное значение 1 бар назад "list[i-1]"? И в какой сборке? Пишет ошибку error CS0103: Имя 'list' отсутствует в текущем контексте. Или это относится к API?
ЗЫ. Нужно ссылаться на предыдущее значение формулы и прибавлять к нему текущее, и т.д.

Originally Posted By: Nektodron
Это работает уже давно, можно использовать в формулах, но не во всех, а только в тех, которые от списков считаются.
Т.е. если в формулу идет обновляемое значение или чтото из позиции, то работать не будет.

Nektodron, в том то и вопрос, что нужно работать с позицией: обращаться к балансу активной позиции на i-той свече, и проводить с ней расчёты, возможно ли в принципе сделать такой блок для визуала индикатора на API и какие использовать интерфейсы:
1. в IPosition2Double - который цепляется к блоку входа, я так понимаю что нельзя например обращаться к i-му значению pos.OpenProfit, или можно через BarNum, но как запоминать i-тое значение переменной, т.е. нужно pos.OpenProfit[i]=pos.OpenProfit[i-1]+pos.OpenProfit[i] и т.д. пока активна позиция?
2.Для расчёта такого выражения с помощью IBar2DoubleHandler можно создать список из источника, но как проверить наличие активной позиции, через source.Positions.GetLastActiveForSignal? а как обратиться к балансу позиции, в source.Positions не нашёл значения баланса или перехода не к IPositionList, а к IPosition, откуда можно взять и IsActive и OpenProfit?

Или можно какие то другие использовать интерфейсы? Или такое можно сделать только во внешнем скрипте с помощью IExternalScript? Подскажите пож. чтобы зря время не терять с индикатором
-----------------
P.S. Почему то тема топика меняется - писал в топик "Создание индикаторов на API", а высвечивается "И опять ошибка CS0103"



Отредактировано uprav (Tue Aug 17 2010 10:51 PM)
_________________________


Наверх
#10253 - Tue Aug 17 2010 11:32 PM Re: И опять ошибка CS0103 [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Для простоты, для сохранения значений переменных, которые высчитываются в главном используйте TSLab.Script.Helpers.ChartHelper класс, как это делает генератор скриптов.

Можете взять скрипт с обновляемым значением, вывести обновляемое значение на график, а потом посмотреть какой c# код сгенерил TSLab для этого.

Наверх
#10336 - Thu Aug 19 2010 11:05 AM Создание индикаторов на API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Nektodron, подскажите пож: вот в этом коде что возможно изменить, чтобы ошибку при компилировании устранить:

вот код:

public class Cumbalanse2 : IPosition2Double
{
public double Execute(IPosition pos, int barNum)
{
if (pos == null || !pos.IsActive)
{
return 0;
}
int count = pos.Security.Bars.Count;
IList<double> n = new double[count];
for (int i = 1; i < count; i++)
{n[i] = pos.OpenProfit(i);}

return n;

}
}

Ошибка: Неявное преобразование типа 'System.Collections.Generic.IList<double>' в 'double' невозможно (CS0029)
_________________________


Наверх
#10347 - Thu Aug 19 2010 12:38 PM Re: Создание индикаторов на API [Re: uprav]
Nektodron Offline

Carpal Tunnel

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

Наверх
#10373 - Thu Aug 19 2010 05:09 PM Re: Создание индикаторов на API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron
возвращаемое значение у вас заявлено double, а возвращаете список

имеете ввиду этоу строчку?
public double Execute(IPosition pos, int barNum)
но исправление её на
public IList<double> Execute(IPosition pos, int barNum)
и такой код:

public class Cumbalanse2 : IPosition2Double
{
public IList<double> Execute(IPosition pos, int barNum)
{
if (pos == null || !pos.IsActive)
{
return 0;
}
int count = pos.Security.Bars.Count;
var n = new double[count];
for (int i = 1; i < count; i++)
{n[i] = pos.OpenProfit(i);}

return n;

}
}

выдаёт ошибку:
"balans.Cumbalanse2" не реализует член интерфейса "TSLab.Script.Handlers.IPosition2Double.Execute(TSLab.Script.IPosition, int)". "balans.Cumbalanse2.Execute(TSLab.Script.IPosition, int)" не удается реализовать "TSLab.Script.Handlers.IPosition2Double.Execute(TSLab.Script.IPosition, int)", поскольку он не содержит соответствующего типа возвращаемого значения "double". (CS0738)
Подскажите пож какое нужно сделать исправление? И возможно ли в этом коде простое исправление, чтобы он выдавал доход позиции на i-м баре?
_________________________


Наверх
#10452 - Fri Aug 20 2010 02:15 PM Re: Создание индикаторов на API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
а зачем вы изобретаете велосипед, когда уже есть стандартный кубик "Доход" и "Доход %"?
И код его примитивный:
Code:

    public class Profit : IPosition2Double
    {
        public double Execute(IPosition pos, int barNum)
        {
            if (pos == null)
            {
                return 0;
            }
            return pos.OpenProfit(barNum);
        }
    }

Наверх
#10581 - Tue Aug 24 2010 07:12 AM Re: Создание индикаторов на API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Nektodron, подскажите пож какой интерфейс можно использовать наподобие IBar2DoubleHandler для создания блока индикатора, но чтобы цеплялось 2 источника (ценных бумаги) и как в этом случае будет прописываться public IList<double> Execute(ISecurity source)?
_________________________


Наверх
#10590 - Tue Aug 24 2010 10:31 AM Re: Создание индикаторов на API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
В принципе все прозрачно:
Code:
class MyClass : ISecurityInputs, IDoubleReturns, ITwoSourcesHandler, IStreamHandler
{
 public IList<double> Execute(ISecurity source1, ISecurity source2)
 {
 }
}

Наверх
#11866 - Sun Sep 05 2010 04:06 PM Re: Создание индикаторов на API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Nektodron, пытаюсь сделать индикатор в виде свечей от 2-х источников, этот код комиплируется в SharpDevelop, но в ТСЛабе при запуске скрипта выдаёт ошибку:

Code:
public class spread : ISecurityInputs, IDoubleReturns, 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);
        }
    }


18:17:55.84 c:\Documents and Settings\...\Local Settings\Application Data\TSLab\TSLab\temp\code8.cs(27,24) : error CS0266: Неявное преобразование типа 'TSLab.Script.ISecurity' в 'System.Collections.Generic.IList<double>' невозможно. Существует явное преобразование (возможно, отсутствует приведение)

18:17:55.84 c:\Documents and Settings\...\Local Settings\Application Data\TSLab\TSLab\temp\code8.cs(27,17) : error CS1662: Не удается преобразовать "анонимный метод" в тип делегата "TSLab.DataSource.CacheObjectMaker<System.Collections.Generic.IList<double>>", так как некоторые типы возвращаемого значения в блоке не являются неявно преобразуемыми в тип возвращаемого значения делегата



Что в этом коде нужно исправить?


Отредактировано uprav (Sun Sep 05 2010 04:21 PM)
_________________________


Наверх
#11942 - Mon Sep 06 2010 01:52 PM Re: Создание индикаторов на API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
IDoubleReturns стоит, а возвращаете бумагу.
Компилироваться будет, а скрипт в визуальном редакторе собирается не верно.

Наверх
#12084 - Tue Sep 07 2010 02:38 PM Re: Создание индикаторов на API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron
IDoubleReturns стоит, а возвращаете бумагу.
Компилироваться будет, а скрипт в визуальном редакторе собирается не верно.
Спасибо, заработало. Nektodron посмотрите пож пост http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Main=734&Number=11855#Post11855
_________________________


Наверх
#13992 - Thu Sep 23 2010 08:52 PM Re: Создание индикаторов в API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Nektodron, подскажите пож по коду блока-индикатора: возможно ли здесь чтобы вместо цены закрытия новой свечи на графике отражалось расчётное значение bid/ask 2-х источников в режиме реальных торгов, например: bid источника1 - ask источника 2, и что нужно использовать? И можно ли сделать это в этом коде используя эти интерфейсы?

Code:
namespace spr1
{	  
	  public class spreadkR : ISecurityInputs, ISecurityReturns, ITwoSourcesHandler, IStreamHandler
	  {
	  	[HandlerParameter(true, "", NotOptimized = true)]
		 public double k1 { get; set; }
		 [HandlerParameter(true, "", NotOptimized = true)]
		 public double k2 { get; set; }
		 
		
		 public ISecurity Execute(ISecurity source1, ISecurity source2)
		{
			var Bars = new List<Bar>(source1.Bars.Count);
			var C1 = source1.ClosePrices;
			var H1 = source1.HighPrices;
			var L1 = source1.LowPrices;
			var O1 = source1.OpenPrices;
			var C2 = source2.ClosePrices;
			var H2 = source2.HighPrices;
			var L2 = source2.LowPrices;
			var O2 = source2.OpenPrices;			
		    IList<Bar> NC = new List<Bar>(Bars.Count);
		    IList<double> op = new List<double>(C1.Count);
		    IList<double> hi = new List<double>(C1.Count);
		    IList<double> lo = new List<double>(C1.Count);
		    IList<double> cl = new List<double>(C1.Count);		    
		    
		    double Open,High,Low,Close,L,H;
			
		    for(int i=0; i<C1.Count; i++)
		    {		    	
		    	    Open=k1*O1[i]-k2*O2[i];
		    		Close=k1*C1[i]-k2*C2[i];
		    		L = k1*L1[i]-k2*L2[i];
		    		H = k1*H1[i]-k2*H2[i];
		    		Low = Math.Min(Math.Min(L,H),Math.Min(Open,Close));
		    		High= Math.Max(Math.Max(L,H),Math.Max(Open,Close));
		    	
		    	op.Add(Open);
		    	hi.Add(High);
		    	lo.Add(Low);
		    	cl.Add(Close);
		    }
		    
		    int j=0;
		    foreach(var bar in source1.Bars)
		    {
		    	var hav = new Bar(bar.Color, bar.Date,
		    	                  op[j],
		    	                  hi[j],
		    	                  lo[j],
		    	                  cl[j],
		    	                  bar.Volume);
		    	NC.Add(hav);
		    	j++;
		    }
		    
		    return source1.CloneAndReplaceBars(NC);
		}		
		public IContext Context { get; set; }
	}	  
}


Отредактировано uprav (Thu Sep 23 2010 08:53 PM)
_________________________


Наверх
#13999 - Thu Sep 23 2010 11:21 PM Re: Создание индикаторов в API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
public class spreadkR : ISecurityInputs, IDoubleReturns, ITwoSourcesHandler, IStreamHandler {
public IList<double> Execute(ISecurity source1, ISecurity source2)
{
var vv = new double[source1.Bars.Count];
for(int i=0; i< bars.Count; i++)
{
vv[i] = source1.Bars[i].Bid / source1.Bars[i].Ask;
}
return vv;
}
}

Наверх
#14097 - Sat Sep 25 2010 11:31 PM Re: Создание индикаторов в API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron
public class spreadkR : ISecurityInputs, IDoubleReturns, ITwoSourcesHandler, IStreamHandler {
public IList<double> Execute(ISecurity source1, ISecurity source2)
{
var vv = new double[source1.Bars.Count];
for(int i=0; i< bars.Count; i++)
{
vv[i] = source1.Bars[i].Bid / source1.Bars[i].Ask;
}
return vv;
}
}


Nektodron, по этому коду возникли такие вопросы:
1. source1.Bars[i].Bid (или source1.Bars[i].Ask) в реал-тайме почему то ничего не выдаёт, точнее выдаёт 0 . Транзак. ТСЛаб 1.1.11.1.(это не принципиально, т.к. я заменил на выр в п.2, ниже, хочу просто узнать выдают они что нибудь вообще и при каких условиях?)
2. Я правильно понимаю, что в выражении: source1.GetBuyQueue(i)[0].Price, [0] - обозначает первую строчку стакана, т.е. лучший bid? Если будет стоять [1] - то это сдвиг вниз на 1 шаг цены?
3. При использовании source.CloneAndReplaceBars() обновление новой индикаторной свечи происходит по мере пересчёта скрипта, возможно ли , чтобы индикатор с его использованием обновлялся по мере обновления входящих в него источников(как обычный график ценной бумаги в реал-тайме) и не зависимо от режима обновления скрипта? Или что нужно для этого использовать?


Отредактировано uprav (Sun Sep 26 2010 04:01 PM)
_________________________


Наверх
#14131 - Mon Sep 27 2010 11:05 AM Re: Создание индикаторов в API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
1. Возьмите чуть более свежую версию, будет выдавать.
2. Да, правильно понимаете.
3. Нет, сейчас такое не возможно, нужно модернизировать API.

Наверх
#14259 - Mon Sep 27 2010 09:10 PM Re: Создание индикаторов в API [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Nektodron, спасибо за ответы! Ещё вопросы по API
1.В коде в посте выше (сообщение 13992), при использовании интерфейсов: ISecurityInputs, ISecurityReturns, ITwoSourcesHandler, IStreamHandler и далее: public ISecurity Execute(ISecurity source1, ISecurity source2) каким образом можно проверить на реал-тайм?

Я написал выражение: if(n[i]==C1.Count-1&&source1.Positions.IsRealtime), но оно почему то на реальных торгах игнорируется, и это выражение всегда false(в лабе и на реале), убираю вообще выражение source1.Positions.IsRealtime - и всё работает в реале (т.е. выражение без него всегда true). Можно ли этим выражением вообще проверять на реал-тайм с этими интерфейсами? И можно ли тут вообще это проверить?
* Под реал-таймом здесь я понимаю наличие данных стакана.
2. А вот это выражение: if(n[i]==C1.Count-1&&source1.GetBuyQueue(i)[0].Price!=null) почему то всегда true, даже в лабе, когда нет данных стакана. Как тогда можно проверить на наличие данных стакана(и таким образом проверить на наличие реал-тайма)? Версия 1.1.11.1.
_________________________


Наверх
#14288 - Tue Sep 28 2010 10:14 AM Re: Создание индикаторов в API [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
1. что именно проверить на реалтайм? бумагу? сделать привение к ISecurityRt, если результат не null то реалтайм.
Для какой бумаги проверяете, если после CloneAndReplaceBars, то там всегда false будет.
2. Проверяйте, либо приведение оригинального секурити к ISecurityRt или Positions.IsRealtime тоже у оригинального секурити.

Наверх
#17131 - Sat Nov 20 2010 10:17 AM Re: Создание индикаторов в API [Re: Nektodron]
Stanley Offline
enthusiast

Registered: Mon Jun 21 2010
Записи: 283
Подскажите пожалуйста, я только начинаю программировать.Хочу обьединить фрактал на покупку и на продажу в один блок. Как это лучше сделать?
Quote:
using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;

namespace FractalSell_
{
public class FractalSell : IBar2BoolsHandler, IContextUses
{
[HandlerParameter(true, "5", Min = "1", Max = "20", Step = "1")]
public int Right { get; set; }

[HandlerParameter(true, "5", Min = "1", Max = "20", Step = "5")]
public int Left { get; set; }

[HandlerParameter(true, "0", Min = "0", Max = "1", Step = "1")]
public int CurrentBar { get; set; }

[HandlerParameter(true, "0", Min = "0", Max = "1", Step = "1")]
public int Fractal { get; set; }

public IList<bool> Execute(ISecurity source)
{
var L = source.LowPrices;
IList<bool> frsell1 = new List<bool>(L.Count);
IList<bool> frsell2 = new List<bool>(L.Count);
bool frsellv =false;
bool frsellv1 =false;
int StartIndex=Left+(Right+CurrentBar);
int ResCheck=Left+Right;

for (int i = 0; i < L.Count; i++)
{
if(i<StartIndex)
frsellv=false;
else
{
int Check = 0;
int IndFr = i-(CurrentBar+Right);
for(int j=(i-StartIndex);j<=(i-CurrentBar);j++)
{
if(j!=IndFr)
{
if(L[j]>L[IndFr])
Check++;
else
break;
}
}

if(Check==ResCheck)
frsellv=true;
else
frsellv=false;
}
frsell1.Add(frsellv);
}
//shift
for (int i = (Right+CurrentBar); i < L.Count; i++)
{
if(frsell1[i]==true)
frsellv1=true;
else
frsellv1=false;
frsell2.Add(frsellv1);
}
for (int i = L.Count-(Right+CurrentBar); i < L.Count; i++)
{
frsellv1=false;
frsell2.Add(frsellv1);
}
return Fractal==0?frsell1:frsell2;
}
public IContext Context { get; set; }
}
}

и
Quote:
using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;

namespace FractalBuy_
{
public class FractalBuy : IBar2BoolsHandler, IContextUses
{
[HandlerParameter(true, "5", Min = "1", Max = "20", Step = "1")]
public int Right { get; set; }

[HandlerParameter(true, "5", Min = "1", Max = "20", Step = "5")]
public int Left { get; set; }

[HandlerParameter(true, "0", Min = "0", Max = "1", Step = "1")]
public int CurrentBar { get; set; }

[HandlerParameter(true, "0", Min = "0", Max = "1", Step = "1")]
public int Fractal { get; set; }

public IList<bool> Execute(ISecurity source)
{
var H = source.HighPrices;
IList<bool> frbuy1 = new List<bool>(H.Count);
IList<bool> frbuy2 = new List<bool>(H.Count);
bool frbuyv =false;
bool frbuyv1 =false;
int StartIndex=Left+(Right+CurrentBar);
int ResCheck=Left+Right;

for (int i = 0; i < H.Count; i++)
{
if(i<StartIndex)
frbuyv=false;
else
{
int Check = 0;
int IndFr = i-(CurrentBar+Right);
for(int j=(i-StartIndex);j<=(i-CurrentBar);j++)
{
if(j!=IndFr)
{
if(H[j]<H[IndFr])
Check++;
else
break;
}
}
if(Check==ResCheck)
frbuyv=true;
else
frbuyv=false;
}
frbuy1.Add(frbuyv);
}
//shift
for (int i = (Right+CurrentBar); i < H.Count; i++)
{
if(frbuy1[i]==true)
frbuyv1=true;
else
frbuyv1=false;
frbuy2.Add(frbuyv1);
}
for (int i = H.Count-(Right+CurrentBar); i < H.Count; i++)
{
frbuyv1=false;
frbuy2.Add(frbuyv1);
}
return Fractal==0?frbuy1:frbuy2;
}
public IContext Context { get; set; }
}
}

Наверх
#17765 - Fri Dec 03 2010 08:14 PM Re: Создание индикаторов в API [Re: Stanley]
Stanley Offline
enthusiast

Registered: Mon Jun 21 2010
Записи: 283
Что значит ошибка - 'TSLab.Script.Handlers.CLK' не реализует член интерфейса 'TSLab.Script.Handlers.IDouble2DoubleHandler.Execute(System.Collections.Generic.IList<double>)' (CS0535)

Наверх
#19914 - Fri Jan 21 2011 09:47 AM Re: Создание индикаторов на API [Re: Nektodron]
ivergoo Offline
stranger

Registered: Sat Sep 25 2010
Записи: 16
Здравствуйте!
Нужна помощь в настройке (интеграции Visual Studio 10 )по подобию Sharp develop.
С уважением, Василий.

Наверх
#37093 - Tue Feb 07 2012 09:23 PM Re: Создание индикаторов на API [Re: uprav]
tslab.trader Offline
enthusiast

Registered: Fri Jan 20 2012
Записи: 329
using System;
using System.Collections.Generic;
using TSLab.Script.Handlers;

public class Fish : IDouble1CalculatorHandler, IDoubleReturns
// IDoubleInputs???
{

public double Execute(double source1)
{
double v2= source1;
return (Math.Exp (2*v2) - 1) / (Math.Exp(2*v2) + 1);

}


}
}

"Ни одна из перегрузок метода Execute не принимает 2 аргументов". Что я не так делаю?

Извините за глупый вопрос, просто я знаю синтаксис C, но плохо разбираюсь в ООП.


Отредактировано tslab.trader (Tue Feb 07 2012 09:40 PM)
_________________________

Наверх
#37096 - Tue Feb 07 2012 09:52 PM Re: Создание индикаторов на API [Re: tslab.trader]
Ti_ru Offline
writer

Registered: Sun Oct 17 2010
Записи: 479
что на входе в индикатор должно быть?

Наверх
Page 1 of 4 1 2 3 4 >


Moderator:  ViL, sar