У вас не стоит Flash Player
Page 9 of 17 < 1 2 ... 7 8 9 10 11 ... 16 17 >
Настройки
#5450 - Wed May 05 2010 03:42 PM Re: Насчёт создания скриптов и индикаторов [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
вот


Attachments
PositionHandlers.cs (449 downloads)


Наверх
#5454 - Wed May 05 2010 03:49 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Спасибо, Nektodron.

Наверх
#6093 - Sun May 30 2010 10:46 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
uprav Offline
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)
_________________________


Наверх
#6094 - Sun May 30 2010 11:14 PM Re: Насчёт создания скриптов и индикаторов [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Откуда берется ошибка мне пока не понятно, код для IDoubleAccumHandler верный... Возможно, не та скомпилированная dll подсовывается, старая например.

Если хочется чтобы на вход было два источника, а на выходе IList<double> то нужно иметь следующий список интерфейсов:
ITwoSourcesHandler, IDoubleReturns, IStreamHandler, ISecurityInputs

а метод Excecute должен выглядеть так:
IList<double> Execute(ISecurity source1, ISecurity source2)

Наверх
#6558 - Mon Jun 14 2010 12:00 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
uprav Offline
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]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: uprav
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]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Nektodron, посмотрите пож. 2 поста выше. Спасибо.
_________________________


Наверх
#6577 - Tue Jun 15 2010 12:21 PM Re: Насчёт создания скриптов и индикаторов [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Интерфейс нужно составить вручную, только определитесь, что нужно на вход, а что на выход (выход только один). Я вам напишу здесь.

Наверх
#6583 - Tue Jun 15 2010 02:08 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron
Интерфейс нужно составить вручную, только определитесь, что нужно на вход, а что на выход (выход только один). Я вам напишу здесь.

На вход блока нужно подавать:
1. Источник (ценную бумагу; ISecurity source), откуда будет браться цена открытия бара, ну и т.д.
2. Блок открытия позиции (IPosition2Double),(*- думаю что в IPosition2Double, кроме того что есть в IBar2BoolHandler, есть больше других возможностей использования)

На выходе: double значение цены открытия из Источника (ценной бумаги; ISecurity source) или закрытия, и т.д.
_________________________


Наверх
#6587 - Tue Jun 15 2010 02:51 PM Re: Насчёт создания скриптов и индикаторов [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
с позициями прошла накладка в API, не хватало необходимых интерфейсов.
В сегодняшней ночной сборки они появятся.
Список будет таким:
IValuesHandler, ITwoSourceHandler, IDoubleReturns, ISecurityInput0, IPositionInput1

а функция Execute:
double Execute(ISecurity source, IPosition pos, int barNum)

Наверх
#6591 - Tue Jun 15 2010 03:50 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
ок! А после этих дополнений блок "Цена входа" случайно не начнёт корректно работать(имеется ввиду вывод на график через блок формула с использованием в формуле в рассчётах), я насколько понял проблема там глубже, чем просто исправление кода блока?
_________________________


Наверх
#6596 - Tue Jun 15 2010 05:28 PM Re: Насчёт создания скриптов и индикаторов [Re: uprav]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Начнет.
Сборка уже доступна, можно посмотреть.


Отредактировано Nektodron (Tue Jun 15 2010 05:28 PM)

Наверх
#6605 - Tue Jun 15 2010 10:10 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
uprav Offline
addict

Registered: Thu Jan 14 2010
Записи: 594
Originally Posted By: Nektodron
Начнет.
Сборка уже доступна, можно посмотреть.

Ок, блок "цена входа" работает - выводится на график, учавствует в расчётах в формуле и выводит значение из формулф на график, НО почему то наполовину - на истории из текстового файла не выводится и не рассчитывается с 01.01.09 до 01.06.09 (хотя вх и до и после есть), после с 01.06.09 и до конца даты 31.12.09 выводится и рассчитывается, помогите пож.выявить причину?. Вышлю всё что нужно, скрипт, текстовый источник (м.б. дело в нём).
-----------------------------
Разобрался, извините! В визуале делаю попытку управления количеством позиции, для этого создал гору блоков на вход с разным количеством, а цену входа тестил только на одном блоке... crazy


Attachments
Цена открытия.JPG (359 downloads)



Отредактировано uprav (Tue Jun 15 2010 10:24 PM)
_________________________


Наверх
#7149 - Sat Jun 26 2010 11:10 PM Re: Насчёт создания скриптов и индикаторов [Re: uprav]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Добрый день.
Подскажите пожалуйста, что в Класс TSLab.Script.Helpers.Series, обозначает аргумент: candles Входящий список баров у индикаторов RSI и CCI?

Наверх
#7171 - Mon Jun 28 2010 10:38 AM Re: Насчёт создания скриптов и индикаторов [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
это список баров, он берется из ISecurity.Bars

Наверх
#7239 - Mon Jun 28 2010 03:32 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
Craft Offline
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

Наверх
#7274 - Mon Jun 28 2010 08:21 PM Re: Насчёт создания скриптов и индикаторов [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Не понял вопроса...

а строки из лога - это не ошибки, просто отладочная информация

Наверх
#7278 - Mon Jun 28 2010 09:10 PM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: Nektodron
Не понял вопроса...
Я тоже не понимаю смысла - "берется из 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];

Наверх
#7315 - Tue Jun 29 2010 01:19 PM Re: Насчёт создания скриптов и индикаторов [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
да, только зачем копировать?
var MyCCI = Series.CCI(ISecurity.Bars,PeriodB)

Наверх
#7865 - Tue Jul 06 2010 11:47 AM Re: Насчёт создания скриптов и индикаторов [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Nektodron, буду благодарен, если сможете помочь. Необходимо было внести изменения в код, как всегда сделал это по дилетантски
Было:
Code:
var MyAtrNoSma = new double[sec.Bars.Count];
MyAtrNoSma[i] = ((sec.HighPrices[i]-sec.LowPrices[i])/sec.LowPrices[i]);
Trig = (Series.SMA(MyAtrNoSma, PerB)[i]*...;

Хочется получить:
Code:
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

Таких сообщений нет при компиляции других скриптов.

Наверх
Page 9 of 17 < 1 2 ... 7 8 9 10 11 ... 16 17 >


Moderator:  ViL, sar