Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Sonuçta, aynı işlev hem start'tan hem de init'ten çağrılabilir. Düzeltilmesi gereken bu.
Parmaklarımda yapabilirim ve özellikle Nuno'yu düşünebilirim))
aşağı yukarı şöyle:
fonksiyonları sayın, 4 olsun, kod başlığına #define X 4 yazın
tik başına maksimum çağrı sayısının #define Y 100 olacağını varsayıyoruz
4 x 100 boyutlarında bir matrisimiz var, matrisi başlatıyoruz = -1
ve şimdi, giriş noktasında bir fonksiyon çağırırken, fonksiyona bir sayaca (grafik şekillendirici) bir çağrı ekliyoruz, bu da bizim girişimizde istenen konuma bir kod (1,2,3 veya 4) eklemesi gerekiyor. serbest bir satırdaki matris X - kim aradı
Görevinizin daha çok ağ grafikleri gibi olduğunu düşünüyorum, ağ grafikleri için matematiksel aparatın uzun süredir geliştirildiğinden şüpheleniyorum - google'a ihtiyacınız var
Not: neyse, bu zaten konunun 2. sayfası;)
IgorM , bir grafiği saklamayı önerdiğiniz yola "bitişiklik matrisi" denir. Seyrek grafikler için çok ekonomik değildir (ve programcıların "tamamen bağlı grafik" mimarisi için yenilmesi gerekir, vb.)
Kenarların bir listesini kullanmak çok daha iyidir (yani, 2 öğeden oluşan tek boyutlu bir yapı dizisini saklarız - çağıran işlevin kimliği ve çağrılan işlevin kimliği; yapı ek alanlarla desteklenebilir - çağrı sayaçlar vb.)
ps matapparat gerçekten uzun zaman önce geliştirildi :)
IgorM , bir grafiği saklamayı önerdiğiniz yola "bitişiklik matrisi" denir.
İmkansızlığın ispatı bir fikir için başarısız olur mu?
yıkıcılar ve yığın çözme gibi bir şey var.
Her ne kadar ... aynı C ++ için isteğe bağlı olarak
yığındaki koddaki noktalar , işlev çağrılarının sırasını oluşturmanıza izin verir.
.
Ve böylece... her dönüş, ek aramalar anlamına gelir :-).
Ağaç, grafiğin özel bir durumudur.
Evet. demek istediği buydu. MQL kodunun doğrusallığına bağlı olarak saf bir ağaç olacaktır. Köşeler birbirini göstermeyecek çünkü.
IgorM :
4 x 100'lük bir matrisimiz var, matrisi başlatıyoruz = -1
ve şimdi, giriş noktasında bir işlevi çağırırken, işleve bir sayaca (grafik şekillendirici) bir çağrı ekliyoruz, bu, matrisimize girerken istenen konuma bir kod (1,2,3 veya 4) eklemesi gerekir. ücretsiz hat X - kim aradı
Evet. şimdi anlaşıldı. Ancak bana öyle geliyor ki, bu yaklaşım gerçekten emek yoğun, kod açısından çok fazla değil, kaynaklar ve analize hazırlık açısından. Dallanma için üç boyutlu bir matris yapmak gerekli olacaktır.
Genel olarak, seçenek kabul edilir. Ama şimdilik özette 4 sayfaya bırakalım :)
Görevinizin daha çok ağ grafikleri gibi olduğunu düşünüyorum, ağ grafikleri için matematiksel aparatın uzun süredir geliştirildiğinden şüpheleniyorum - google'a ihtiyacınız var
Görev ne bilgi ne de yeniliktir. Sadece bir fonksiyon grafiğinin olağan yapısı. Daha fazla yok.
Yeni matapparat yok, sadece minimum düzeyde basitleştirilmiş bir sürüm gerekiyor.
Kenarların bir listesini kullanmak çok daha iyidir (yani, 2 öğeden oluşan tek boyutlu bir yapı dizisini saklarız - çağıran işlevin kimliği ve çağrılan işlevin kimliği; yapı ek alanlarla desteklenebilir - çağrı sayaçlar vb.)
Eugene, bu tam olarak zaten yapılmış olan şey.
Ama stoper oldu. Üçüncü gün uyku yok, içki yok .... :)
Yeni bir kenara (yeni bir alt düğüm) gitmek için bir kenardan (daha doğrusu bir alt düğüm) bir üst düğüme nasıl döneceğimi anlayamıyorum. Ancak kurala uymak için kaynak kod fonksiyonunun başında sadece bir izleme fonksiyonu kullanıyoruz.
Yeni bir şubeye geçmek için bir uçtan bir düğüme nasıl döneceğimi anlayamıyorum.
Ve hepsi, daha önce geçmiş olan tek bir işlevle mi? Bu senin için yeterli - hiçbir şey yapmadan geri dönüş yapmak)) Eh, hiçbir şey, ikinci sayfa bitti, yakında Vladimir dayanamayacak)))
Tanrı onlarla, bu sayfalarla. Görev ilginç.
Görüyorsunuz, işte bunu nasıl yapabilirsiniz.... Ana düğüme geri alma, çocuğa yapılan yeni bir çağrıda zaten yapılabilir. Yani, bir alt öğeye geçildiğinde, sistem önce ağacı daha düşük bir düzeye indirecek ve ardından yeni bir alt düzeye yükselecektir.
Ancak bu seçenekte, derinliği ikiden fazla olan dallar yapamazsınız. Çünkü sistem ilerlemeden önce daima geriye gider. Yani, tüm fonksiyonlar aynı seviyede çizilecektir.
Bu nedenle, mevcut konumu tanımlamak için bazı değişken dizilerini kullanmanız gerekecek gibi görünüyor. yoluna devam etmek ve geri gelmemek. İşte tam da bu dönüşte karmaşıklık...
Fragmanda bir "kavramsal boşluk" veya daha doğrusu bir uygulama örneği var. MT5'te
Bunu akla getirmek için, çağrı listesi ile çalışması için in () ve out () fonksiyonlarını yeniden yazmanız gerekir. Şimdi standart akışa giriş ve çıkışları aptalca yazdırıyorlar.
Kötü haber: Konu başlatıcının tek bir izleme işlevi rüyasını kurtarmadım. Üzgünüm Sergeyev. :)
İyi haber: Her şey çalışıyor.
Kullanici rehberi.
1. Her işlevin başında "_in" makrosu eklenir
2. Tüm geri aramalar "_return" ile değiştirilir
3. Programın başında iki tanım yazılır
#define _in in( __FUNCTION__ );
#define _dönüş(__FUNCTION__);dönüş
Her şeyi sobsno.
Tanrı onlarla, bu sayfalarla. Görev ilginç.
Görüyorsunuz, işte bunu nasıl yapabilirsiniz.... Ana düğüme geri alma, çocuğa yapılan yeni bir çağrıda zaten yapılabilir. Yani, bir alt öğeye geçildiğinde, sistem önce ağacı daha düşük bir düzeye indirecek ve ardından yeni bir alt düzeye yükselecektir.
Ancak bu seçenekte, derinliği ikiden fazla olan dallar yapamazsınız. Çünkü sistem ilerlemeden önce her zaman geri gidecektir. Yani, tüm fonksiyonlar aynı seviyede çizilecektir.
Bu nedenle, mevcut konumu tanımlamak için bazı değişken dizilerini kullanmanız gerekecek gibi görünüyor. yoluna devam etmek ve geri gelmemek. İşte tam da bu dönüşte karmaşıklık...