0 beğenilme 0 beğenilmeme
83 kez görüntülendi

Highshigh indikatörü ile hisselerin en yüksek değerini almaya çalıştım ancak herbirinde farklı bir period yazmak zorunda kalıyorum. kiminde bardata yetersiz diyor kiminin zirveri 500 barda kimininki 400 barda vs vs yani bir standart yok.

kodları karıştıtıken aşağıdaki kodu buldum. ancak çalıştırdığımda herzaman ilk daha updatede de değer 0 geliyor akabindeki dataupdate de gerçekten tarihi yüksek değeri geliyor. ilk data update de 0 gelmesi yüzünden algoda kullanamıyorum. 

ilk data update de 0 gelmemesinin bir yolu varmı veya farklı başka bir yolla bir hissenin tarihi en yüksek değerini alabilirmiyim.

GetMarketData(Symbol, SymbolUpdateField.TarihiYuksek)

27.02.2024 13:22:00.992  :var x = GetMarketData(Symbol, SymbolUpdateField.TarihiYuksek); : 0
27.02.2024 13:22:00.993  : 
27.02.2024 13:23:05.651  :var x = GetMarketData(Symbol, SymbolUpdateField.TarihiYuksek); : 81
27.02.2024 13:23:05.652  : 

 

27.02.2024 13:24:08.903  :var x = GetMarketData(Symbol, SymbolUpdateField.TarihiYuksek); : 0
27.02.2024 13:24:08.906  : 
27.02.2024 13:25:20.036  :var x = GetMarketData(Symbol, SymbolUpdateField.TarihiYuksek); : 29.8
27.02.2024 13:25:20.036  : 

 

 

 

Algoritmik Trading kategorisinde (108 puan) tarafından
tarafından düzenlendi | 83 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Yüzeysel veride kayıt işlemi tamamlanmadan veri çekilmek istendiğinde 0 değeri döndürebilir. yüzeysel veriye kayıt oluştururken SubscribeToSymbolUpdateField() fonksiyonunu kullanmakta sadece ilgili alana kayıt oluşturacağı için performans açısından daha uygun olacaktır. Aşağıdaki gibi değerin 0 dan farklı olma koşulunu ekleyip deneyebilirsiniz.

 

public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			WorkWithPermanentSignal(true);
			SendOrderSequential(true);

			SubscribeToSymbolUpdateField(Symbol,SymbolUpdateField.TarihiYuksek);
			SetTimerInterval(1);
		}
		
		decimal enYuksek=0;
		
		public override void OnTimer(){
			if(enYuksek==0){
				enYuksek=GetMarketData(Symbol,SymbolUpdateField.TarihiYuksek);
			}
		}
		
		public override void OnDataUpdate(BarDataCurrentValues bd){
			enYuksek=GetMarketData(Symbol,SymbolUpdateField.TarihiYuksek);
			if(enYuksek!=0){
				// yapılacak işlemler
			}
		}

 

(15,682 puan) tarafından
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.



7,647 soru
7,642 cevap
4,448 yorum
11,146 kullanıcı