profit_ts

Аналитика ГФ Ишимоку в формате TSLab

Аналитика ГФ Ишимоку в формате TSLabАнализ Ишимоку Сбер.Текущая ситуация. tslab.comon.ru/7159010DB6FF4D1593DF6419276333B7
★1
4 комментария
херня какая то, автор хот бы описание сделал.
Спасибо за комплимент.Что описать надо? Всё весьма просто и наглядно.Это скрипт.Куплен Сбер по 85,17. Сделка не закрыта.
Описание.

using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Helpers;

namespace TSLab.Community.Ichimoku {

public abstract class BaseSen {
public virtual int Period { get; set; }

public IContext Context { get; set; }

static double CalcMiddle(IListvalues, int start, int finish) {
double min = float.MaxValue, max = -float.MaxValue;
for (int i = start; i <= finish; i++) {
var v = values[ i ];
if (v.High > max)
max = v.High;
if (v.Low < min)
min = v.Low;
}
return 0.5 * (max + min);
}

static double CalcSmoothMiddle(IListvalues, int start, int finish) {
double m = 0;
for (int i = start; i <= finish; i++) {
var v = values[ i ];
m += v.High + v.Low + v.Close + v.Open;
}
m /= 4 * (finish — start + 1);
return m;
}

public IListExecute(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 list = new double[ high.Count ];
for (int i = 0; i < high.Count; i++)
list[ i ] = 0.5 * (high[ i ] + low[ i ]);
return list;

/*// Другие варианты
int c = source.Bars.Count;
var list = new double[ c ];
for (int i = Period; i < c; i++)
//list[i] = CalcMiddle(source.Bars, i — Period, i — 1);
list[ i ] = CalcSmoothMiddle(source.Bars, i — Period, i — 1);
return list;*/
}
}

/// /// Tenkan-sen — короткая линия тренда (дословный перевод — линия переворота).
/// Линия трактуется как указатель направления тренда: чем больше крутизна этой линии,
/// тем более ярко выражен тренд. Если линия горизонтальна — рынок вошел в канал.
/// Кроме того, как и любая средняя, эта линия может
/// рассматриваться как поддержка или сопротивление.
///
[HandlerCategory(«Ichimoku»)]
public class TenkanSen: BaseSen, IBar2DoubleHandler, IContextUses {
[HandlerParameter(true, «9», Min = «3», Max = «25», Step = «1»)]
public override int Period { get; set; }
}

/// /// Kijun (Kijun-sen), «линия стандарта» — среднее значение цены за второй,
/// более продолжительный промежуток времени.
/// Используется как показатель движения рынка. Если цена выше нее, цены,
/// вероятно, будут продолжать расти. Когда цена пересекает эту линию,
/// вероятно дальнейшее изменение тренда.
/// Другим вариантом использования Kijun является подача сигналов. Сигнал к покупке
/// генерируется когда линия Tenkan пересекает Kijun снизу вверх.
/// Если сверху-вниз — сгнал к продаже.
///
///
[HandlerCategory(«Ichimoku»)]
public class KijunSen: BaseSen, IBar2DoubleHandler, IContextUses {
[HandlerParameter(true, «26», Min = «5», Max = «52», Step = «1»)]
public override int Period { get; set; }
}

/// /// SenkouA (Senkou Span A) — среднее от /> и />,
/// сдвинутое вперед на величину периода KijunSen (26).
///
[HandlerCategory(«Ichimoku»)]
public class SenkouA: IBar2DoubleHandler, IContextUses {
[HandlerParameter(true, «9», Min = «3», Max = «25», Step = «1»)]
public int TenkanPeriod { get; set; }

[HandlerParameter(true, «26», Min = «5», Max = «52», Step = «1»)]
public int KijunPeriod { get; set; }

public IListExecute(ISecurity source) {
var tenkan = new TenkanSen { Period = TenkanPeriod, Context = Context }.Execute(source);
var kijun = new KijunSen { Period = KijunPeriod, Context = Context }.Execute(source);

var count = source.HighPrices.Count;
var result = new double[ count ];
for (int i = KijunPeriod + KijunPeriod; i < count; i++)
result[ i ] = 0.5 * (tenkan[ i — KijunPeriod ] + kijun[ i — KijunPeriod ]);
return result;
}

public IContext Context { get; set; }
}

/// /// SenkouB (Senkou Span B) — среднее значение цены за третий временной интервал (52),
/// сдвинутое вперед на величину второго интервала (26).
/// Расстояние между линиями /> и /> штрихуется и
/// называется «облаком». Если цена находится между этими линиями, рынок считается нетрендовым,
/// а края облака в таком случае образуют поддержку и сопротивление.
/// Если цена находится над облаком, то обе линии — поддержки. Если под, то сопротивления.
///
[HandlerCategory(«Ichimoku»)]
public class SenkouB: IBar2DoubleHandler, IContextUses {
[HandlerParameter(true, «52», Min = «25», Max = «255», Step = «1»)]
public int Period { get; set; }

[HandlerParameter(true, «26», Min = «5», Max = «52», Step = «1»)]
public int KijunPeriod { get; set; }

public IListExecute(ISecurity source) {
var avg = new TenkanSen { Period = Period, Context = Context }.Execute(source);

var count = source.HighPrices.Count;
var result = new double[ count ];
for (int i = Period + KijunPeriod; i < count; i++)
result[ i ] = avg[ i — KijunPeriod ];
return result;
}

public IContext Context { get; set; }
}

/// /// Chinkou Span (Chinkou) — показывает цену закрытия текущей свечи,
/// сдвинутую назад на величину второго временного интервала (26).
/// Не рекомендуется использовать при тестировании на исторических данных,
/// поскольку индикатор «смотрит в будущее».
/// Если линия пересекает график цены снизу-вверх, это является сигналом к покупке.
/// Если сверху-вниз — сигналом к продаже.
///
[HandlerCategory(«Ichimoku»)]
public class Chinkou: IBar2DoubleHandler, IContextUses {
[HandlerParameter(true, «26», Min = «5», Max = «52», Step = «1»)]
public int KijunPeriod { get; set; }

public IListExecute(ISecurity source) {
var close = source.ClosePrices;

var result = new double[ close.Count ];
for (int i = 0; i < result.Length — KijunPeriod; i++)
result[ i ] = close[ i + KijunPeriod ];
return result;
}

public IContext Context { get; set; }
}
}
какой коэффициент кредитования ставить на фьючерсе на индекс ртс, когда скачиваешь данные с финама?
avatar

теги блога Виталий Садовский

....все тэги



UPDONW
Новый дизайн