BOOTS (Bollinger OTT Spread) Anıl Özekşi’nin “Algoritmik Trading İçin Alternatif Sistemler” eğitiminde paylaştığı BOOTS (Bollinger OTT Spread) indikatörünün günlük barlara göre parametre ayarları uyarlanmış halidir. Farklı periyotlarda kullanımı için optimize ediniz. Detaylı kullanımının anlatıldığı ilgili eğitimin linki yazısına tıklayarak ilgili eğitime ulaşabilirsiniz. Geliştirici: Anıl Özekşi
Detaylı kullanımının anlatıldığı ilgili eğitimin linki
𝕿𝖗𝖆𝖓𝖘𝖑𝖆𝖙𝖊𝖉 𝓑𝔂 ⒶⓀⒾⓃ ℍü𝓃𝑒𝓇𝓁𝒾
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;
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("BOOTS", IndicatorDrawingArea.OnDataSeries)]
//Indikatörün çizgilerinin isimleri
[IndicatorLineInformationAttribute(new []
{
"BBandTop(0,1,2)", "BBandBot"
},
new []
{
"#FF87CEFA", "#FFFF00FF"
},
new []
{
false, false
},
new []
{
0, 0
}, new []
{
1, 1
})]
public class BOOTS : MatriksIndicator
{
[DefaultValue(2)]
public int X1
{
get; set;
}
[DefaultValue(2)]
public int X2
{
get; set;
}
[DefaultValue(10)]
public decimal X3
{
get; set;
}
BOLLINGER bollinger;
OTT Top, Bottom;
public sealed override void OnInit()
{
bollinger = BollingerIndicator(Symbol, SymbolPeriod, OHLCType.Close, X1, 2, MovMethod.VAR);
Top = new OTT(X2, X3, MovMethod.VAR, false);
Bottom = new OTT(X2, X3, MovMethod.VAR, false);
}
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
if (currentBar < Period)
{
SetLine(0, currentBar, 0);
SetLine(1, currentBar, 0);
return;
}
Top.Update(bollinger.Bollingerup.CurrentValue, currentBar, barDateTime);
Bottom.Update(bollinger.BollingerDown.CurrentValue, currentBar, barDateTime);
SetLine(currentBar, Top.CurrentValue);
SetLine(1, currentBar, Bottom.CurrentValue);
}
}
}