У вас не стоит Flash Player
Настройки
#8594 - Fri Jul 16 2010 02:02 PM #4 / Индикаторы: OBV, %R, FRC, MFI
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
#4 / Индикаторы: OBV, %R, FRC, MFI


On Balance Volume (OBV)
*******************************
Технический индикатор Балансового Объема (On Balance Volume, OBV) связывает объем и изменение цены, сопровождавшее данный объем. Смысл этого индикатора, придуманного Джозефом Гранвиллем, прост. Если цена закрытия текущего бара выше закрытия предыдущего, значение объема текущего бара прибавляется к предыдущему значению OBV, если закрытие текущего бара ниже предыдущего, текущий объем вычитается из предыдущего значения Балансового Объема.

Расчет:
Code:
•	Если текущая цена закрытия выше предыдущей, то:
OBV (i) = OBV (i - 1) + VOLUME (i).
•	Если текущая цена закрытия ниже предыдущей, то:
OBV (i) = OBV (i - 1) - VOLUME (i)
•	Если текущая цена закрытия равна предыдущей, то:
OBV (i) = OBV (i - 1)


Williams Percent Range (%R)
***********************************
Технический Индикатор Процентный Диапазон Вильямса (Williams’ Percent Range, %R) - это динамический индикатор, определяющий состояние перекупленности/перепроданности. Williams’ Percent Range очень похож на технический индикатор Stochastic Oscillator. Различие между ними состоит лишь в том, что первый имеет перевернутую шкалу, а второй строится с использованием внутреннего сглаживания.

Значения индикатора в диапазоне от -80% до -100% указывают на состояние перепроданности. Значения в диапазоне от -20% до 0% свидетельствуют о том, что рынок перекуплен. Для построения индикатора Williams Percent Range в перевернутой шкале его значениям обычно присваивается отрицательный знак (например, -30%). При анализе отрицательный знак можно не учитывать.

По общему для всех индикаторов перекупленности/перепроданности правилу, действовать по их сигналам лучше всего, дождавшись поворота цен в соответствующем направлении. Так, если индикатор перекупленности/перепроданности указывает на состояние перекупленности, то прежде чем продавать финансовый инструмент, разумно дождаться поворота цен вниз.

Расчет:

Формула расчета индикатора Williams’ Percent Range схожа с формулой для Stochastic Oscillator:
Code:
%R = -(MAX (HIGH (i - n)) - CLOSE (i)) / (MAX (HIGH (i - n)) - MIN (LOW (i - n))) * 100



Force Index (FRC)
**********************
Технический Индикатор Индекс Силы (Force Index, FRC) измеряет силу быков при каждом подъеме и силу медведей при каждом спаде. Он связывает основные элементы рыночной информации: направление цены, ее перепады и объем сделок. Сглаживание с помощью короткой скользящей средней ( 2 периода) помогает найти благоприятные моменты для открытия и закрытия позиций. Если же сглаживание производится с помощью длинной скользящей средней (например, 13-периодной), то индекс выявляет перемены тенденций.

Расчет:

Сила каждого движения рынка определяется его направлением, размахом и объемом. Если цена закрытия текущего бара выше, чем предыдущего, то сила положительна. Если текущая цена закрытия ниже, чем предыдущая, то сила отрицательна. Чем больше различие в ценах, тем больше сила. Чем больше объем сделок, тем больше сила.

Code:
FORCE INDEX(i) = Вход1(i) * ((EMA(Вход2, N, i) - EMA (Вход2, N, i-1))

Вход1 - Рассчитываемый поток данных
Вход2 - Рассчитываемый поток данных, по умолчанию вход для Объема


Money Flow Index (MFI)
*****************************
Технический Индикатор Индекс Денежных Потоков (Money Flow Index, MFI) показывает интенсивность, с которой деньги вкладываются в ценную бумагу или выводятся из нее. Построение и интерпретация индикатора аналогична Relative Strenght Index, с той только разницей, что в MFI учитывается и объем.

Расчет:

Расчет значения технического индикатора Money Flow Index состоит из нескольких этапов. Сначала определяют типичную цену (Typical Prise, TP) данного периода:

Code:
TP = (HIGH + LOW + CLOSE) / 3

Затем рассчитывается величина денежного потока (Money Flow, MF):

Code:
MF = TP * VOLUME

Если сегодняшняя типичная цена больше вчерашней, то денежный поток считается положительным. Если сегодняшняя типичная цена меньше вчерашней — денежный поток считается отрицательным.
Положительный денежный поток (POSITIVE MONEY FLOW) — это сумма значений положительных денежных потоков за выбранный период. Отрицательный денежный поток (NEGATIVE MONEY FLOW) — это сумма значений отрицательных денежных потоков за выбранный период.

Затем определяется денежное отношение (money ratio, MR) путем деления положительного денежного потока на отрицательный:

Code:
MR = POSITIVE MONEY FLOW / NEGATIVE MONEY FLOW

И, наконец, с помощью денежного отношения рассчитывается индекс денежных потоков:

Code:
MFI = 100 - (100 / (1 + MR))

Где:
HIGH — максимальная цена текущего бара;
LOW — минимальная цена текущего бара;
CLOSE — цена закрытия текущего бара;
VOLUME — объем текущего бара.


Attachments
OBV.rar (285 downloads)
WilliamsPercentRange.rar (432 downloads)
FRC.rar (233 downloads)
MFI.rar (249 downloads)
Индикаторы4.rar (387 downloads)


Наверх
#8805 - Thu Jul 22 2010 03:51 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: SysKreator]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Quote:
MFI ... сумма значений положительных денежных потоков за выбранный период

А где период? Вы сделали только для дневного изменения? smile


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

Наверх
#8807 - Thu Jul 22 2010 04:16 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: 777]
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Originally Posted By: 777
Quote:
MFI ... сумма значений положительных денежных потоков за выбранный период

А где период? Вы сделали только для дневного изменения? smile


Да, косяк. Сейчас в коде просто нарастающим итогом без периода.
Исправлю.

Пасиба

Наверх
#8808 - Thu Jul 22 2010 04:22 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: SysKreator]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
А я уже почти, Вы мне скажите, а как объему период присвоить?
var vol = Context.GetData("Volumes", new[] {Period.ToString()},
() => Series.Volumes(source.Volumes, Period));

Ругается на меня и на Volume и на Volumest и на Volest(на подобие highest делаю grin)


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

Наверх
#8818 - Thu Jul 22 2010 06:00 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: 777]
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Originally Posted By: 777
Quote:
MFI ... сумма значений положительных денежных потоков за выбранный период

А где период? Вы сделали только для дневного изменения? smile


Исправил. Теперь с периодом.


Attachments
MFI.rar (289 downloads)


Наверх
#8820 - Thu Jul 22 2010 06:05 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: SysKreator]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Круто! Спасибо! Оказывается можно было сделать все в счетчике...
А все же, если только период для объема нужен будет, как его можно назначить только для объема?
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8822 - Thu Jul 22 2010 06:09 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: 777]
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Originally Posted By: 777
А я уже почти, Вы мне скажите, а как объему период присвоить?
var vol = Context.GetData("Volumes", new[] {Period.ToString()},
() => Series.Volumes(source.Volumes, Period));

Ругается на меня и на Volume и на Volumest и на Volest(на подобие highest делаю grin)


Ну да, в Series нет такой функции smile А звучит прикольно - Volumest.

А что хотите сделать с объемом в итоге? smile

Наверх
#8823 - Thu Jul 22 2010 06:13 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: 777]
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Originally Posted By: 777
Круто! Спасибо! Оказывается можно было сделать все в счетчике...
А все же, если только период для объема нужен будет, как его можно назначить только для объема?


Пока не понял, что хотите сделать с ним?:)
Суммировать за период, вычислить наибольшее значение или что-то еще?

Наверх
#8825 - Thu Jul 22 2010 06:19 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: SysKreator]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Originally Posted By: SysKreator
Originally Posted By: 777
Круто! Спасибо! Оказывается можно было сделать все в счетчике...
А все же, если только период для объема нужен будет, как его можно назначить только для объема?


Пока не понял, что хотите сделать с ним?:)
Суммировать за период, вычислить наибольшее значение или что-то еще?

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

Наверх
#8833 - Thu Jul 22 2010 09:45 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: 777]
SysKreator Offline
enthusiast

Registered: Tue Apr 27 2010
Записи: 207
Вау!

Сделать вот так

Суммирование объемов за период и максимум объемов за период:
Code:
		[HandlerParameter]
		public int Period { get; set; }
		
		public IList<double> Execute(ISecurity source)
		{
		    var vol_sum = Context.GetData("SummFor", new[] { Period.ToString() },
		                               () => Series.SummFor(source.Volumes, Period));
		    var vol_high = Context.GetData("Highest", new[] { Period.ToString() },
		                               () => Series.Highest(source.Volumes, Period));


Что еще можно сделать с объемами написано вот здесь
http://www.tslab.ru/docs/api/class_t_s_lab_1_1_script_1_1_helpers_1_1_series.html

Наверх
#8834 - Thu Jul 22 2010 09:47 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: SysKreator]
777 Offline
Carpal Tunnel

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


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

Наверх
#8857 - Fri Jul 23 2010 12:35 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: SysKreator]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
SysKreator а Вы не сделаете ради примера индикатор:
Индикатор "Индекс положительного объема" (PVI) изменяется по периодам, в которых значение объема увеличилось по сравнению с предыдущим периодом. В связи с тем, что рост цен чаще всего связан с увеличением объемов, то PVI будет обычно изменяться в направлении повышательного тренда:

Описание:
Click to reveal..
Индикатор "Индекс положительного объема" (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]

Никак не могу справиться. Делаю вот так:
Click to reveal..
Code:
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 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#8858 - Fri Jul 23 2010 12:40 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: 777]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
у вас переменная pvi определна как обычное число, а вы к ней как к массиву обращаетесь

Наверх
#8859 - Fri Jul 23 2010 12:43 PM Re: #4 / Индикаторы: OBV, %R, FRC, MFI [Re: Nektodron]
777 Offline
Carpal Tunnel

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

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

Наверх


Moderator:  ViL, sar