Hott Lott indikatörü OTT indikatöründen türetilmiş 2 çizgiden oluşmaktadır.
Hott çizgisi için data olarak HHV kullanılırken Lott çizgisi için data olarak LLV fonksiyonu kullanılmaktadır.
AL için yükseğin Hott çizgisinin yukarı kırması, Sat için düşüğün Lott çizgisinin aşağıya kırması olarak yorumlanabilir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using System.Windows.Media;
namespace Matriks.Lean.Algotrader
{
//Ilk parametre indikatörün adı, sınıfın adıyla aynı olmalıdır.
//Ikinci parametre indikatörün Dataserisinin üzerine mi yeni pencereye mi ekleneceğini belirtir. Yeni pencere için ->IndicatorDrawingArea.NewWindow , Data Serisi için IndicatorDrawingArea.OnDataSeries
[IndicatorInformationAttribute("HottLott", IndicatorDrawingArea.OnDataSeries)]
//Indikatörün çizgilerinin isimleri
[IndicatorLineInformationAttribute(new []
{
"Hott(0,1,2)", "Lott(0,1,2)"
}, new []
{
"#00CCFF", "#e600de"
}, new []
{
false, false
}, new []
{
2, 2
}, new []
{
1, 1
}
)]
public class HottLott : MatriksIndicator
{
//Indicator opsiyon panelinde değerleri değiştirebildiğimiz parametreler. Int, Bool, Decimal ve Enum değerleri alabilir.Tüm değişken tiplerini DefaultValue ile tanımlarız.
[DefaultValue(2)]
public int Period
{
get; set;
}
[DefaultValue(1.4)]
public decimal Opt
{
get; set;
}
[DefaultValue(10)]
public int BarSayisi
{
get; set;
}
[DefaultValue(MovMethod.VAR)]
public MovMethod MovMethod
{
get; set;
}
OTT ottH, ottL;
public sealed override void OnInit()
{
ottH = new OTT(Period, Opt, MovMethod, true);
ottL = new OTT(Period, Opt, MovMethod, true);
}
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
var hhv = HighestHigh(OHLCType.High, BarSayisi);
ottH.Update(hhv, currentBar, barDateTime);
var llv = LowestLow(OHLCType.Low, BarSayisi);
ottL.Update(llv, currentBar, barDateTime);
if (currentBar < Period)
{
SetLine(0, currentBar, 0);
SetLine(1, currentBar, 0);
return ;
}
var close=Instrument.SymbolBarData.Close[currentBar];
PaintBar(currentBar, close>ottH.CurrentValue?"#00CCFF":ottL.CurrentValue>close?"#e600de":"#ffffff");
SetLine(0, currentBar, ottH.Value[0][ottH.CurrentIndex]);
SetLine(1, currentBar, ottL.Value[0][ottL.CurrentIndex]);
}
}
}