Merhaba.
Evet. Versiyon güncelleyiniz. Aşağıdaki bilgilendirmelere göre denemeler yapabilirsiniz.
İyi çalışmalar dileriz.
MyTrend Geliştirmeleri
1.) Algo çalışmaya başladıktan sonra trend oluşturulabilmesi.
Önceki versiyonlarda trendler, indikatörler gibi sadece Init fonksiyonu içerisinde tanımlanabiliyorlardı. Geliştirmeler sonrası, OnDataUpdate gibi algo başlatıldıktan sonra çalışan yerlerde de MyTrend fonksiyonu kullanılabiliyor ve yeni trendler oluşturulabiliyor.
2.) Trend’den snapshot oluşturulması:
Önceden oluşturmuş olduğumuz bir trendin o andaki halinden bir kopya oluşturmak için kullanılır. Autotrendlerde yeni veri geldiğinde uygun koşullarda trend parametreleri değiştiği için, güncellenme öncesi durumu muhafaza edebilme ve sonradan kullanabilme olasılığı sağlar.
Önceden oluşturulmuş, myTrend isimli bir trend üzerinden aşağıdaki şekilde çağrılarak kullanılır.
var snapshot = myTrend.GetSnapshot();
Oluşan snapshot objesi, MyTrend ile oluşturulan trendler ile aynı tipten bir objedir. Dolayısıyla trendler üzerinde kullanılabilen fonksiyonlar snapshot için de çalışır.
Snapshot’ın X1, X2, Y1, Y2 gibi tanım parametreleri sabit kalacaktır. CurrentIndex ve CurrentValue parametreleri ise yeni barlar geldikçe güncellenir.
3.) Indikatör üzerinden trend tanımlanabilmesi
Indikatör üzerinden trend tanımlayabilmek için aşağıdaki fonksiyonlar eklendi:
• MyTrend(IIndicator indicator, int barCount, int refIndex, TrendType trendType, int lineIndex = 0, bool isAutoTrend = false)
İndikatör çizgisinin verisi ile yükselen/düşen trend oluşturmak için kullanılır.
indicator: Trend için kullanılacak indikator
barCount: Bar sayısı
refIndex: Bitiş noktası referans indeksi
trendType: Yükselen / Düşen trend seçeneği
lineIndex: Indikator cizgisinin indeksi. Opsiyonel (default 0)
isAutoTrend: Trendi data ile birlikte güncelle. Opsiyonal (default false)
Örnek: Algoda tanımlı sma datasını kullanarak, bir bar önce biten ve 100 bar uzunluğunda bir yükselen trend oluşturmak için aşağıdaki ifade kullanılabilir.
var trend = MyTrend(sma, 100, 1, TrendType.Increasing, 0, false);
• MyTrend(IIndicator indicator, DateTime startTime, DateTime endTime, TrendType trendType, int lineIndex = 0)
İndikatör çizgisinin verisi ile tarih vererek yükselen/düşen trend oluşturmak için kullanılır. Tarihler, indikatörün oluşturuluğu sembol ve periyodun bar data tarihlerine denk gelmelidir.
İndicator: Trend için kullanılacak indikator
startTime: Trend başlangıç zamanı
endTime: Trend bitiş zaman
trendType: Yükselen / Düşen trend seçeneği
lineIndex: Indikator cizgisinin indeksi. Opsiyonel (default 0)
Örnek: Aşağıdaki ifade ile verilen iki tarih arasında, algoda tanımlı sma kullanılarak yükselen trend oluşturulabilir.
var trend = MyTrend(sma, new DateTime(2021, 1, 3), new DateTime(2021, 3, 3), TrendType.Increasing, 0);
• MyTrend(IIndicator indicator, int barCount, int refIndex, decimal startValue, decimal endValue)
İndikatör üzerine verilen değerler ile trend oluşturmaya yarar. İndikatör yerine sembol ve periyot verilerek de aynı trend oluşturulabilir. İki durumda da verilen data serisinin trende etkisi, trendin indekslerini belirlemektir.
İndicator: Trend için kullanılacak indikator
barCount: Bar sayısı
refIndex: Bitiş noktası referans indeksi
startValue: Başlangıç noktasındaki trend değeri
Örnek: 100 bar önce 15.2 değeri ile başlayıp, güncel barda 17.4 değerinde biten bir trend çizgisi önceden tanımlanmış bir sma indikatörü ile aşağıdaki gibi oluşturulabilir.
var trend = MyTrend(sma, 100, 0, 15.2m, 17.4m, false);
• MyTrend(IIndicator indicator, DateTime startTime, decimal startValue, DateTime endTime, decimal endValue)
İndikatör üzerine verilen değerler ve tarih aralığı ile trend oluşturmaya yarar. indikatörün oluşturuluğu sembol ve periyodun bar data tarihlerine denk gelmelidir. İndikatör yerine sembol ve periyot verilerek de aynı trend oluşturulabilir. İki durumda da verilen data serisinin trende etkisi, trendin indekslerini belirlemektir.
İndicator: Trend için kullanılacak indikator
startTime: Trend başlangıç zamanı
startValue: Başlangıç noktasındaki trend değeri
endTime: Trend bitiş zaman
endValue: Bitiş noktasındaki trend değeri
Örnek: 3 ocak 2021’de 15.2 değeri ile başlayıp, 3 Mart 2021’de 17.4 değerinde biten bir trend çizgisi önceden tanımlanmış bir sma indikatörü ile aşağıdaki gibi oluşturulabilir.
var trend = MyTrend(sma, new DateTime(2021, 1, 3), 15.2, new DateTime(2021, 3, 3), 17.4);
4.) Trendler için cross fonksiyonları:
• CrossAbove(ISymbolBarData symbolBarData, OHLCType ohlcType, ITrend trend)
Bar datanın trendi yukarı kırıp kırmadığını kontrol eder
symbolBarData: Trendi kırma kontrolü yapılacak bar data
ohlcType: Ohlc Tipi
trend: Kırılma kontrolünün yapılacağı trend
Örnek: Kapanışın trendi yukarı kırıp kırmadığını kontrol etmek için aşağıdaki kod kullanılmalıdır.
var crossAbove = CrossAbove(barData, OHLCType.Close, myTrend);
• CrossBelow(ISymbolBarData symbolBarData, OHLCType ohlcType, ITrend trend)
Bar datanın trendi aşağı kırıp kırmadığını kontrol eder
symbolBarData: Trendi kırma kontrolü yapılacak bar data
ohlcType: Ohlc Tipi
trend: Kırılma kontrolünün yapılacağı trend
Örnek: Kapanışın trendi aşağı kırıp kırmadığını kontrol etmek için aşağıdaki kod kullanılmalıdır.
var crossBelow = CrossBelow(barData, OHLCType.Close, myTrend);
• CrossAbove(IIndicator indicator, ITrend trend, int indicatorLineIndex = 0)
Verilen indikatör çizgisinin trendi yukarı kırıp kırmadığını belirten bir boolean döner.
İndicator: Trendi kırma kontrolü yapılacak indikatör
Trend: Kırılma kontrolünün yapılacağı trend
indicatorLineIndex: İndikatörün çizgi indeksi. Opsiyonel (default 0)
Örnek: Bollinger down çizgisinin trendi yukarı kırıp kırmadığını kontrol etmek için şu ifade kullanılmalıdır.
var crossAbove = CrossAbove(bollinger, myTrend, 2);
• CrossBelow(IIndicator indicator, ITrend trend, int indicatorLineIndex = 0)
Verilen indikatör çizgisinin trendi aşağı kırıp kırmadığını belirten bir boolean döner.
İndicator: Trendi kırma kontrolü yapılacak indikatör
Trend: Kırılma kontrolünün yapılacağı trend
indicatorLineIndex: İndikatörün çizgi indeksi. Opsiyonel (default 0)
Örnek: Bollinger down çizgisinin trendi aşağı kırıp kırmadığını kontrol etmek için şu ifade kullanılmalıdır.
var crossBelow = CrossBelow(bollinger, myTrend, 2);
5.) Diğer:
Algo işleyişi esnasında yeni trendler oluşturulmasına imkan verilmesi ve bu trendlerin de arka planda kaydedilip güncellemelerinin yapılması, kullanıcıların sonsuz sayıda trendi algoya eklemesine imkan veriyor. Memory ve performans sorunu oluşturmamak için artık kullanılmayacak trendlerin silinmesi gerekiyor. Bu nedenle aşağıdaki fonksiyon eklendi.
DisposeTrend(ITrend trend)