#8857 - Fri Jul 23 2010 12:35 PM
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
[Re: SysKreator]
|
Carpal Tunnel
Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
|
SysKreator а Вы не сделаете ради примера индикатор: Индикатор "Индекс положительного объема" (PVI) изменяется по периодам, в которых значение объема увеличилось по сравнению с предыдущим периодом. В связи с тем, что рост цен чаще всего связан с увеличением объемов, то PVI будет обычно изменяться в направлении повышательного тренда: Описание: Индикатор "Индекс положительного объема" (PVI) изменяется по периодам, в которых значение объема увеличилось по сравнению с предыдущим периодом. В связи с тем, что рост цен чаще всего связан с увеличением объемов, то PVI будет обычно изменяться в направлении повышательного тренда.
Начальное значение PVI:
PVI0 = 1.
Если объем текущего периода больше объема предыдущего, то
PVIi = PVIi-1 + (PVIi-1 * (Pi - Pi-1) / Pi-1),
где Pi - цена текущего периода, Pi-1 - цена предыдущего периода.
Если объем текущего периода меньше объема предыдущего, значение PVI текущего периода принимают равным значению PVI для предыдущего периода:
PVIi = PVIi-1.
Объясню почему прошу. Там используется предыдущее значение индикатора в самом индикаторе, т.е. PVI=PVI[i-1] Никак не могу справиться. Делаю вот так: using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
namespace PositiveVolumeIndex
{
public class PVI : IBar2DoubleHandler, IContextUses
{
[HandlerParameter]
public int Period { get; set; }
public IList<double> Execute(ISecurity source)
{
var vom = Context.GetData("Highest", new[] { Period.ToString() },
() => Series.Highest(source.Volumes, Period));
var vol = source.Volumes;
var closes = source.ClosePrices;
IList<double> p_r = new List<double>(closes.Count);
double pvi=1;
p_r.Add(0);
for (int i = 0; i < closes.Count; i++)
{
if(vol[i]>vol[i-1])
{
pvi = pvi[i-1] + (pvi[i-1] * (closes[i] - closes[i-1]) / closes[i-1]);
}
else
{
pvi =pvi[i-1];
}
p_r.Add(pvi);
}
return p_r;
}
public IContext Context { get; set; }
}
} Но компилятор на меня ругается: Невозможно применить индексирование через [] к выражению типа "double" (CS0021)
Отредактировано 777 (Fri Jul 23 2010 12:38 PM)
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика» Дизраэли.
|
|
Наверх
|
|
|
|
#4 / Индикаторы: OBV, %R, FRC, MFI
|
SysKreator
|
Fri Jul 16 2010 02:02 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
777
|
Thu Jul 22 2010 03:51 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
SysKreator
|
Thu Jul 22 2010 04:16 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
777
|
Thu Jul 22 2010 04:22 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
SysKreator
|
Thu Jul 22 2010 06:09 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
SysKreator
|
Thu Jul 22 2010 06:00 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
777
|
Thu Jul 22 2010 06:05 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
SysKreator
|
Thu Jul 22 2010 06:13 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
777
|
Thu Jul 22 2010 06:19 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
SysKreator
|
Thu Jul 22 2010 09:45 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
777
|
Thu Jul 22 2010 09:47 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
777
|
Fri Jul 23 2010 12:35 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
Nektodron
|
Fri Jul 23 2010 12:40 PM
|
Re: #4 / Индикаторы: OBV, %R, FRC, MFI
|
777
|
Fri Jul 23 2010 12:43 PM
|
|
|
|