0 beğenilme 0 beğenilmeme
242 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 (110 puan) tarafından
tarafından düzenlendi | 242 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,892 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.



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