#8107 - Sat Jul 10 2010 11:49 AM
Доходность фактора риска
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Добрый день подскажите пожалуйста, компиляция проходит успешно, но в ТСлабе получаю ошибку: System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) в System.ThrowHelper.ThrowArgumentOutOfRangeException() в System.Collections.Generic.List`1.get_Item(Int32 index) в ДФР.DFR.Execute(ISecurity source) в c:\Users\НР\Documents\SharpDevelop Projects\DFR\DFR.cs:строка 24 в TSLab.User.Script.<>c__DisplayClass3.<Execute>b__2() в c:\Users\НР\AppData\Local\TSLab\TSLab\temp\code15.cs:строка 51 в TSLab.DataSource.ObjectsCacheBase`3.Get(TKey name, CacheObjectMaker`1 maker) в TSLab.ScriptEngine.BaseTemplateContext.GetData(String handlerName, String[] parameters, CacheObjectMaker`1 maker) в TSLab.User.Script.Execute(IContext context, ISecurity var0) в c:\Users\НР\AppData\Local\TSLab\TSLab\temp\code15.cs:строка 48 Код, того, что компилирую: using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace ДФР
{
public class DFR : 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 K = System.Math.Log(closes[i]/closes[i-1]);
list.Add(K);
}
return list;
}
public IContext Context { get; set; }
}}При этом нет ошибок, если все то же самое сделать через блок формула : Я так понимаю, что ошибка указывает на проблему [i-1], но как тогда ее учитывать в коде C#? Если счетчик начинать с I=1, тогда ошибку выдает другую, а график рисует со смещением относительно построения "Формула"(синий - API, красный формула), но смещение, то мне не нужно: Помогите пожалуйста разобраться.
Attachments
ДФР.jpg (1115 downloads)ДФР тот и другой + ошибка.jpg (978 downloads)
Отредактировано 777 (Sat Jul 10 2010 12:05 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8110 - Sat Jul 10 2010 12:36 PM
Re: Доходность фактора риска
[Re: Nektodron]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Ну правильно, я же написал, что если цикл начинаю с 1, тогда мало того, что получаю смещение, так еще и ошибку №2.
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8115 - Sat Jul 10 2010 02:25 PM
Re: Доходность фактора риска
[Re: Nektodron]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Спасибо Нектодрон! Все получилось.
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8119 - Sat Jul 10 2010 07:38 PM
Re: Доходность фактора риска
[Re: usas]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
777-й, а откуда у Вас столько индикаторов во вкладке "пользовательские" (на скрине увидел). А у меня нет..:-((( Есть такая программа SharpDevelop, помогает делать ... 
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8124 - Sun Jul 11 2010 01:09 AM
Re: Доходность фактора риска
[Re: usas]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Можно Царь, просто Царь....всея земли...  Могу поделиться .... Все в вопросы в личку 
Отредактировано 777 (Sun Jul 11 2010 01:26 AM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8718 - Wed Jul 21 2010 09:14 AM
Re: Доходность фактора риска
[Re: Nektodron]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Nektodron, подскажите пожалуйста, компилирую индикатор. Смысл индикатора: он должен цепляться к какому либо блоку и имея close, выщитывать определенную величину, но при компиляции выдает ошибку: 'TSLab.Script.Handlers.dar' не реализует член интерфейса 'TSLab.Script.Handlers.IContextUses.Context' (CS0535). Вот код того, что компилирую: using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace TSLab.Script.Handlers
{
//[HandlerCategory("Indicators")]
public class dar : IBar2DoubleHandler, IContextUses
{
[HandlerParameter]
public int Day { get; set; }
public IList<double> Execute(IList<double> source,ISecurity source)
{
var DaR = new double[source.Count];
var closes = source.ClosePrices;
IList<double> list = new List<double>(closes.Count);
for(int i = Day; i < source.Count; i++)
{
DaR[i] = closes[i]*(source[i]*Day);
}
return DaR;
}
}
} Подскажите пожалуйста, что я делаю не так?
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8728 - Wed Jul 21 2010 10:12 AM
Re: Доходность фактора риска
[Re: Nektodron]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Теперь не реализует член интерфейса 'TSLab.Script.Handlers.IBar2DoubleHandler.Execute(TSLab.Script.ISecurity)' (CS0535).
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8763 - Wed Jul 21 2010 05:37 PM
Re: Доходность фактора риска
[Re: Nektodron]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Nektodron, у меня все компилируется, но эффект не тот, что ожидался, посмотрите пожалуйста код. Я просто не понимаю какой-то мелочи, может поможете. Сейчас, индикатор подцепляется только к источнику, а мне нужно, что бы он подцеплялся к источнику и к еще одному блоку(любому, где брал бы значение var r). Помогите пожалуйста! using System;
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace DaR
{
//[HandlerCategory("Indicators")]
public class dar : IBar2DoubleHandler, IContextUses
{
[HandlerParameter]
public int Day { get; set; }
public IList<double> Execute(ISecurity source)
{
int count = source.Bars.Count;
var r = new double[count];
var closes = source.ClosePrices;
IList<double> list = new List<double>(closes.Count);
for(int i = Day; i < closes.Count; i++)
{
var DaR = closes[i]*r[i]*Day;
list.Add(DaR);
}
return list;
}
public IContext Context { get; set; }
}}
Merci d'avace!
Отредактировано 777 (Wed Jul 21 2010 05:38 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8766 - Wed Jul 21 2010 06:48 PM
Re: Доходность фактора риска
[Re: 777]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Пошел пиво пить! Нифега в документации не понятно. Честное слово!
Пиво выпил, сразу все нашел, вот так заработало: IDoubleAccumHandler,IContextUses Правда с расчетами что-то не то...Надо наверное еще пива!
_________________________________ Помогло! Работает! Спасибо Нектодрон!
Отредактировано 777 (Wed Jul 21 2010 11:38 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8868 - Fri Jul 23 2010 05:04 PM
Re: Доходность фактора риска
[Re: 777]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
Нектодрон, подскажите пожалуйста для свечи [i-4] нужно использовать: list.Add(0);
for (int i = 4; ??? Работает, но у меня смещение на графике, не поможите? Еще скажите пожалуйста, я правильно сформировал логику, в одном случае fr принимает значение high в другом low ??? Вот полный код: using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace FractalSimple
{
public class Fractal_Simple : 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;
double fr=0;
IList<double> list = new List<double>(closes.Count);
list.Add(0);
for (int i = 4; i < closes.Count; i++)
{
if((high[i-2] >= high[i-4]) && (high[i-2] >= high[i-3]) && (high[i-2] >= high[i-1]) && (high[i-2] > high[i]))
{
fr = high[i] ;
}
if((low[i-2] < low[i-4]) && (low[i-2] < low[i-3]) && (low[i-2] <= low[i-1]) && (low[i-2] < low[i]))
{
fr = low[i];
}
list.Add(fr);
}
return list;
}
public IContext Context { get; set; }
}
} Смещение  С Заранее огромное спасибо!!!
Attachments
смещение фрактал.jpg (832 downloads)
Отредактировано 777 (Fri Jul 23 2010 05:05 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#8905 - Mon Jul 26 2010 11:28 AM
Re: Доходность фактора риска
[Re: Nektodron]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
СПАСИБО!!!! 
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
|
|