#5454 - Wed May 05 2010 03:49 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
|
|
Наверх
|
|
|
|
#6093 - Sun May 30 2010 10:46 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
Nektodron, подскажите пож. пытаюсь создать блок-индикатор, куда входят 2 значения формул, где он их обрабатывает и выводит своё значение, вот код: using System; using System.Collections.Generic; using TSLab.Script; using TSLab.Script.Handlers; using TSLab.DataSource; using TSLab.Script.Helpers; namespace test { public class balanse : IDoubleAccumHandler {public IList<double> Execute(IList<double> source1, IList<double> source2) { var count = source1.Count; var dx1 = new double[count];
for (int i = 1; i < count; i++) { dx1[i] = source1[i]+source2[i]; } return dx1; } } } --------- В ТСЛабе выдаётся ошибка: c:\Documents and Settings\Local Settings\Application Data\TSLab\TSLab\temp\code5.cs(89,24) : error CS1501: Ни одна из перегрузок метода 'Execute' не принимает '1' аргумент(ов) М.б. эта ошибка возникает от того что не могу подцепить 2-й блок, цепляется только один, поэтому не хватает аргументов...?
Пример взял из кода ADX, к этому блоку цепляется 2 блока. ЗЫ: вообще хотел обрабатывать данные из 2-х источников ценных бумаг, а не из 2-х блоков-формул, м.б. для этого использовать какой либо другой класс, кроме IDoubleAccumHandler?
Отредактировано uprav (Sun May 30 2010 10:53 PM)
_________________________
|
|
Наверх
|
|
|
|
#6558 - Mon Jun 14 2010 12:00 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
Nektodron, подскажите пож: нужно использовать данные из этих двух интерфейсов: IBar2DoubleHandler, IBar2BoolHandler, т.е. одновременно нужны переменные double и bool, как можно их одновремнно объявить в одном пользовательском классе? Для чего: т.к. блок "Цена входа" не работает в расчётах, хочу сделать блок на проверку наличия позиции (через bool из IBar2BoolHandler) на каждом баре, затем искать условие отсутствия позиции на [i-1], и возвращать открытие бара (через double из IBar2DoubleHandler) при этом условии, эту цену буду использовать как цену открытия позиции.
_________________________
|
|
Наверх
|
|
|
|
#6564 - Mon Jun 14 2010 09:19 PM
Re: Насчёт создания скриптов и индикаторов
[Re: uprav]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
Nektodron, подскажите пож: нужно использовать данные из этих двух интерфейсов: IBar2DoubleHandler, IBar2BoolHandler, т.е. одновременно нужны переменные double и bool, как можно их одновремнно объявить в одном пользовательском классе? Для чего: т.к. блок "Цена входа" не работает в расчётах, хочу сделать блок на проверку наличия позиции (через bool из IBar2BoolHandler) на каждом баре, затем искать условие отсутствия позиции на [i-1], и возвращать открытие бара (через double из IBar2DoubleHandler) при этом условии, эту цену буду использовать как цену открытия позиции. Или вот пытаюсь скомпилировать код: public class balans : IPosition2Double, IBar2DoubleHandler { public IList<double> Execute(IPosition pos, int barNum, ISecurity source) .....} выдается ошибка: 'testbal.balans' не реализует член интерфейса 'TSLab.Script.Handlers.IPosition2Double.Execute(TSLab.Script.IPosition, int)' (CS0535) Как можно применить одновременно Execute к IPosition2Double и IBar2DoubleHandler?
_________________________
|
|
Наверх
|
|
|
|
#6576 - Tue Jun 15 2010 12:10 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
Nektodron, посмотрите пож. 2 поста выше. Спасибо.
_________________________
|
|
Наверх
|
|
|
|
#6583 - Tue Jun 15 2010 02:08 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
Интерфейс нужно составить вручную, только определитесь, что нужно на вход, а что на выход (выход только один). Я вам напишу здесь. На вход блока нужно подавать: 1. Источник (ценную бумагу; ISecurity source), откуда будет браться цена открытия бара, ну и т.д. 2. Блок открытия позиции (IPosition2Double),(*- думаю что в IPosition2Double, кроме того что есть в IBar2BoolHandler, есть больше других возможностей использования) На выходе: double значение цены открытия из Источника (ценной бумаги; ISecurity source) или закрытия, и т.д.
_________________________
|
|
Наверх
|
|
|
|
#6591 - Tue Jun 15 2010 03:50 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
ок! А после этих дополнений блок "Цена входа" случайно не начнёт корректно работать(имеется ввиду вывод на график через блок формула с использованием в формуле в рассчётах), я насколько понял проблема там глубже, чем просто исправление кода блока?
_________________________
|
|
Наверх
|
|
|
|
#6605 - Tue Jun 15 2010 10:10 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
addict
Registered: Thu Jan 14 2010
Записи: 594
|
Начнет. Сборка уже доступна, можно посмотреть. Ок, блок "цена входа" работает - выводится на график, учавствует в расчётах в формуле и выводит значение из формулф на график, НО почему то наполовину - на истории из текстового файла не выводится и не рассчитывается с 01.01.09 до 01.06.09 (хотя вх и до и после есть), после с 01.06.09 и до конца даты 31.12.09 выводится и рассчитывается, помогите пож.выявить причину?. Вышлю всё что нужно, скрипт, текстовый источник (м.б. дело в нём). ----------------------------- Разобрался, извините! В визуале делаю попытку управления количеством позиции, для этого создал гору блоков на вход с разным количеством, а цену входа тестил только на одном блоке... 
Attachments
Цена открытия.JPG (359 downloads)
Отредактировано uprav (Tue Jun 15 2010 10:24 PM)
_________________________
|
|
Наверх
|
|
|
|
#7149 - Sat Jun 26 2010 11:10 PM
Re: Насчёт создания скриптов и индикаторов
[Re: uprav]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Добрый день. Подскажите пожалуйста, что в Класс TSLab.Script.Helpers.Series, обозначает аргумент: candles Входящий список баров у индикаторов RSI и CCI?
|
|
Наверх
|
|
|
|
#7239 - Mon Jun 28 2010 03:32 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
А как практически берётся список баров Series.CCI(ISecurity.Bars,PeriodB)?
И ещё, подскажите что означает ошибка при отладке в SharpDevelop: 15:32:01.66[1]DEBUG:Start logging... 15:32:01.67[1]DEBUG:Show splash... 15:32:01.68[1]DEBUG:Using PNG in SplashScreen
|
|
Наверх
|
|
|
|
#7278 - Mon Jun 28 2010 09:10 PM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Я тоже не понимаю смысла - "берется из ISecurity.Bars", поэтому спрашиваю, как это практически прописывается в коде, к примеру, необходимо узнать значение CCI, как это реализуется, так: int PeriodB = 14 ... var MyCCI = new double[barsCount]; for (int i = 0; (i < barsCount); i++) MyCCI[i] = Series.CCI(ISecurity.Bars,PeriodB)[i];
|
|
Наверх
|
|
|
|
#7865 - Tue Jul 06 2010 11:47 AM
Re: Насчёт создания скриптов и индикаторов
[Re: Nektodron]
|
enthusiast
Registered: Thu Jan 21 2010
Записи: 319
|
Nektodron, буду благодарен, если сможете помочь. Необходимо было внести изменения в код, как всегда сделал это по дилетантски Было: var MyAtrNoSma = new double[sec.Bars.Count];
MyAtrNoSma[i] = ((sec.HighPrices[i]-sec.LowPrices[i])/sec.LowPrices[i]);
Trig = (Series.SMA(MyAtrNoSma, PerB)[i]*...; Хочется получить: var MyAtrNoSma = new double[sec.Bars.Count];
var var0 = new double[sec.Bars.Count];
var var1 = new double[sec.Bars.Count];
MyAtrNoSma[i] = ((sec.HighPrices[i]-sec.LowPrices[i])/sec.LowPrices[i]);
{
var0[i-1] = Series.SMA(MyAtrNoSma, PerB)[i-1]; //необходимо найти среднее значение MyAtrNoSma на сформировавшихся барах [i-1]
var1[i] = Delit/Series.SMA(varb0, Usred)[i]; //далее полученное среднее значение MyAtrNoSma дополнительно усреднить (т. е. найти SMA полученного значения var0 - аналогично наложению мувинга на инидкатор ATR заданного периода), чтобы разделить полученным значением число Delit
}
Trig = varb0[i-1]*varb1[i]*...;В Trig необходимо перемножить varb0 на коэффициент varb1 (полученный из varb0). P. S. При компиляции кода SharpDevelop пишет: 11:57:08.00[1]DEBUG:Start logging... 11:57:08.01[1]DEBUG:Show splash... 11:57:08.01[1]DEBUG:Using PNG in SplashScreen Таких сообщений нет при компиляции других скриптов.
|
|
Наверх
|
|
|
|
|
|