Pazartesi gün yuksegi düsügü
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 112 görüntülenme
- Durum
- Cevaplandı
Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.
Merhaba,
Haftanın ilk işlemi her zaman Pazartesi ile başlamayabilir. Bunun için haftanın ilk işlem gününü yakalayıp en yüksek ve düşüğünü tespit edip grafikte gösteren indikatör örneği aşağıdaki gibidir.
NOT: Bu indikatör, haftanın ilk günü içinde yeni en yüksek veya en düşük değer bulunduğunda geçmiş barlardaki çizgi değerlerini güncelleyerek repaint yapar. Bu nedenle sadece takip ve görsel analiz için kullanılması uygundur.
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
{
[IndicatorInformationAttribute("haftaBasiYuksekDusuk", IndicatorDrawingArea.OnDataSeries)]
[IndicatorLineInformationAttribute(new []
{
"H", "L"
})]
public class haftaBasiYuksekDusuk : MatriksIndicator
{
public sealed override void OnInit()
{
}
private decimal haftaBasiYuksek = 0;
private decimal haftaBasiDusuk = 0;
private DateTime haftaBasiTarihi = DateTime.MinValue;
private bool haftaBasiTamamlandi = false;
private int haftaIlkGunIlkBarIndex = 0;
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
bool yeniHafta = false;
if (currentBar > 0)
{
DateTime oncekiTarih = Instrument.SymbolBarData.Time[currentBar - 1];
DateTime mevcutHaftaBaslangic = HaftaBaslangiciGetir(barDateTime);
DateTime oncekiHaftaBaslangic = HaftaBaslangiciGetir(oncekiTarih);
yeniHafta = (mevcutHaftaBaslangic != oncekiHaftaBaslangic);
}
else
{
yeniHafta = true;
}
if (yeniHafta)
{
haftaBasiYuksek = Instrument.SymbolBarData.High[currentBar];
haftaBasiDusuk = Instrument.SymbolBarData.Low[currentBar];
haftaBasiTarihi = barDateTime.Date;
haftaBasiTamamlandi = false;
haftaIlkGunIlkBarIndex = currentBar;
}
else
{
if (barDateTime.Date == haftaBasiTarihi && !haftaBasiTamamlandi)
{
decimal mevcutYuksek = Instrument.SymbolBarData.High[currentBar];
decimal mevcutDusuk = Instrument.SymbolBarData.Low[currentBar];
bool guncellemeYapildi = false;
if (mevcutYuksek > haftaBasiYuksek)
{
haftaBasiYuksek = mevcutYuksek;
guncellemeYapildi = true;
}
if (mevcutDusuk < haftaBasiDusuk)
{
haftaBasiDusuk = mevcutDusuk;
guncellemeYapildi = true;
}
if (guncellemeYapildi)
{
for (int i = haftaIlkGunIlkBarIndex; i < currentBar; i++)
{
SetLine(0, i, haftaBasiYuksek);
SetLine(1, i, haftaBasiDusuk);
}
}
}
else if (barDateTime.Date != haftaBasiTarihi && !haftaBasiTamamlandi)
{
haftaBasiTamamlandi = true;
}
}
SetLine(0, currentBar, haftaBasiYuksek);
SetLine(1, currentBar, haftaBasiDusuk);
}
private DateTime HaftaBaslangiciGetir(DateTime tarih)
{
int gunFarki = ((int) tarih.DayOfWeek - (int) System.DayOfWeek.Monday + 7) % 7;
return tarih.Date.AddDays(-gunFarki);
}
}
}
Sitenin çalışması için gerekli çerezleri kullanıyoruz. Ziyaretleri anlamak için analitik çerezleri yalnızca onayınızla kullanırız. Çerez Politikası