1 beğenilme 0 beğenilmeme
1,640 kez görüntülendi
indikatör içerisinde hour fonksiyonunu kullanmak istiyorum. barData BarData tipinde girdi bekliyor ancak hangi kütüphaneden çekmem gerektiğini bir türlü bulamadım. ondataupdate içerisinde örnek bir kullanım yapabilir misiniz?
Indikator Builder kategorisinde (82 puan) tarafından | 1,640 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme
En İyi Cevap

Merhaba,

Aşağıdaki örneği inceleyebilirsiniz. Ayrıca detaylar için microsoft'un sayfasına göz atabilirsiniz :
https://docs.microsoft.com/tr-tr/dotnet/api/system.datetime.hour?view=netframework-4.7.2

public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
	{
			DateTime now = DateTime.Now; //simdiki zamanı verir
			if (now.Hour == barDateTime.Hour)//simdiki zaman ile bardatanin zamanina bakar
			{

			}
			if (barDateTime.Hour == 15) // bardatanin saati 15 mi diye bakar
			{

			}
			if (currentBar < Period)
			{
				SetLine(0, currentBar, 0);
				return ;
			}

			var result = GetTypicalPrice(currentBar);
			SetLine(currentBar, result);

	}

 


Seçkin Durgay
(4,631 puan) tarafından
tarafından seçilmiş
1 0
int Zaman = barDateTime.Hour*100+ barDateTime.Minute;

şeklinde tanımlayıp işleme girmesi için bir kriter oluşturdum. Teşekkürler.
0 0
Merhaba,

Bunun kullanım amacı tam olarak nedir?
0 0
Sistem içerisinde zamana bağlı kriter oluşturmak için kullanıyorum. Örneğin sabah belirli saatlerde sistemim alım yapmaz. böylece sabah ilk açılıştaki o hareketli barları filtreliyorum. Tabi bu benim tercihim.
0 0

Anladım teşekkür ederim. Ben onun için TimeSpan kullanıyorum bir hazır stratejinin içinde rastlamıştım. 

			TimeSpan açılış = new TimeSpan (10,10,0);
			TimeSpan kapanış = new TimeSpan (17,55,0);
			var currentTime = DateTime.Now.TimeOfDay;
			if (currentTime > açılış && currentTime < kapanış)
			{
            }

 

0 0
Daha profesyonelmiş :)

Teşekkürler.
2 0
Seans saatlerini sembol bazinda dinamik sistemden cekebilirsiniz. Isterseniz ornek gonderebiliriz.
0 0
Sevinirim. İlginiz için teşekkür ederim.
0 0
0 0

Burada ince bir nokta var sanırım, emin olmak için sormak istedim.

DateTime now = DateTime.Now; //simdiki zamanı verir
			if (barDateTime.Hour>11)//

burada barDateTime tarafını sınırlarsak backtest tarafında da açılışları işlem zamanına dahil etmemenin sonuçlarını görebiliriz sanki?

Ayrıca işlem yapmadığımız barları yok sayabilir miyiz?(mov'un hesabına katılmasını engellemek gibi) bir deneme yaptım ama olumlu sonuç vermedi.

0 0
yukarıdaki kodla denemedim ama kendi oluşturduğum ve yukarıda paylaştığım, zaman kriteriyle backtestte dahil etmemenin sonuçlarını görebiliyorum.

doğru anladıysam eğer; mov gibi devamlı hesaplanan indikatörlerde datayı belli zaman aralıklarında mov içerisinde hesaplatmayabilirsiniz ancak hesaplatmanıdığınız dilim sonrası yapılacak hesaplama için mov içerisindeki data yerine bir veri koymanız gerekir ki devamlı hesaplama devam edebilsin
0 0
Mov tarafında nasıl seans sonu ile seans başı arasındaki boşluğu başlangıç ve bitiş sayıyorsa o zamanı da o şekle dönüştürebiliriz sanırım. Bir ara deneyeyim. Yazılım bilgim fazla değil, strateji de bunu çalıştırmak için

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues) yerine

public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime) üzerine inşaa etmek gerecek sanırım. Bakalım kodlar patlayacak mı :D
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. 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.



8,636 soru
8,590 cevap
4,821 yorum
19,790 kullanıcı