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
Evet, bu blokların her ikisi de var. Ama inan bana - çok çeşitli görevleri çözdükleri için maksimum ve evrensel olarak sıkıştırılırlar.
Birkaç seçenek varsa, ifs ve anahtarlarla geçebilirsiniz.
Ve neden hiç kimse "işlevlere işaretçiler ile prosedürel programlamaya karşı işlevlere işaretçiler olmadan prosedürel programlama" konusunu tartışmaya karar vermedi?
Birkaç seçenek varsa, ifs ve anahtarlarla geçebilirsiniz.
Реter Konow :
1. Дело в работе которую нужно провести чтобы сжать в коде решения огромного количества задач.
2. Önemli olan, ek sözdizimsel tekniklerin ve kabukların basitçe ölümcül olduğu kodun evrenselleştirilmesidir. Zor bir iştir, ancak gereksiz her şeyden kurtulur ve her zaman yeni zirvelere ulaşarak gelişmenize izin verir.
1. Kolay ve basit bir şekilde yapabiliyorsanız neden bu işe yarıyor? Kolayca yapılabilecek bir şeyi neden zorlaştıralım?
2. OOP kullanırsanız , evrenselleştirme ölümcül değildir, ancak doğal, yükü hafifleten bir fırsat haline gelir.
1. Kolay ve basit bir şekilde yapabiliyorsanız neden bu işe yarıyor? Kolayca yapılabilecek bir şeyi neden zorlaştıralım?
2. OOP kullanırsanız , evrenselleştirme ölümcül değildir, ancak doğal, yükü hafifleten bir fırsat haline gelir.
Bu tartışmayı uzun süre devam ettirebiliriz. 100 takip görevi örneğinde, bu çözme yöntemine karşı tavrımı gösterdim. Aptalca belirlenmiş görevlerin çözülmemeli, düzeltilmesi gerektiğini düşünüyorum. OOP, problemlerini doğru bir şekilde belirleme ve etkili bir şekilde çözme yeteneklerinde daha zayıf olanlara yardımcı oluyorsa, onlara yardım etmeye devam etmesine izin verin. Ancak, görevleri çözmeye başlamadan önce optimize eden kişiler için OOP'ye ihtiyaç duyulmayabilir.
Bu tartışmayı uzun süre devam ettirebiliriz. 100 takip görevi örneğinde, bu çözme yöntemine karşı tavrımı gösterdim. Aptalca belirlenmiş görevlerin çözülmemeli, düzeltilmesi gerektiğini düşünüyorum. OOP, problemlerini doğru bir şekilde belirleme ve etkili bir şekilde çözme yeteneklerinde daha zayıf olanlara yardımcı oluyorsa, onlara yardım etmeye devam etmesine izin verin. Ancak, görevleri çözmeye başlamadan önce optimize eden kişiler için OOP'ye ihtiyaç duyulmayabilir.
Çok fazla kodlamadınız (muhtemelen), OOP temiz bir nefes gibidir.
Temel olarak, insanlar çıkar için değil, kendini geliştirme amacıyla değil, ancak bu onların işi ve bu işte sonuç önemlidir.
Kolaylık açısından yanında durmuyor, ancak performans yetenekleri açısından sadece pointer ile idare edebilirsiniz.
Ve kolaylık göreceli bir kavramdır.
Dmitry, elbette, OOP kullanımı performansı biraz düşürür. Ama bunlar yüzdelik kesirler.
Ancak OOP, programcı üretkenliğini nasıl artırır!
İşte projelerimden birinden küçük bir örnek, algılama hızı için kesilmiş, aslında hala bir sürü şey var.
Örneğin, tüm API'nin sınıflardan oluştuğu .NET'i alıyoruz.
.NET paradigmasını gerçekten seviyorum, bu arada, doğrudan Visual Studio'da C# ile yazabileceğiniz mükemmel bir cAlgo terminali var.
Dmitry, elbette, OOP kullanımı performansı biraz düşürür. Ama bunlar yüzdelik kesirler.
Az sayıda seçenek varsa, o zaman azalır, ancak çok sayıda seçenek varsa, bir avantaj olacaktır.
En önemlisi, OOP'de hız, seçeneklerin sayısına bağlı değildir. Ve prosedürel programlamada, başınızın üzerinde bir tavan vardır.
Neyse batırdılar...
Evet, herhangi bir görevin hem OOP tarzında, arayüzlerin tahsisi, miras hiyerarşisinin inşası , sanal fonksiyonların beyanı ile çözülebileceği açıktır ve tamamen prosedürel bir tarzda - hatta her şeyi bire yapıştırabilirsiniz. büyük işlev.
Sorun, desteğin rahatlığı ve verimliliğidir.
MT'de - OOP'ye en uygun yer sipariş sistemidir. Şahsen, "konumlar" ve "konum bileşenleri" sanal arayüzlerim var. "Pozisyon", MT4'teki bir dizi emir veya bir dizi MT5 pozisyonudur. Bir "pozisyon bileşeni", tek bir sipariş veya tek bir MT5 pozisyonudur (hedge veya ağ).
İşte gerçek arayüz dosyası ( Peter Konow , kod miktarına göre yorum sayısını tahmin edebilirsiniz ve bazı incelikleri hatırlamadığım gerçeğiyle karşılaştığımda periyodik olarak oraya ekliyorum. gerçek nesneler "konum bileşenidir". Sadece bunu hatırlamama gerek yok - EA, arayüze göre bileşenlerle çalışır ve aslında bu arayüzün arkasında neyin durduğu önemli değil. Ancak, değiştirirken buna geri dönmek zorundayım. - bu nedenle, genellikle bu dosyadaki ilk yoruma ihtiyacım var):
Ticaret bileşeni arayüz dosyası aşağıdaki gibidir (yukarıda zaten verdim ama tekrar edeceğim:
Bu arayüzlere göre hem gerçek hem de tarihi siparişler için hem MT4 hem de MT5 sipariş sistemlerini uyguladım.
Pozisyon talebinde bulunan bir Uzman Danışman bu arayüzü alır ve MT4 ve MT5 emirleri ile çalışmanın farkını hiç dikkate alması gerekmez. Ayrıca yeni bir emir tipi eklenirse veya onlarla çalışma sırası değişirse Expert Advisor için hiçbir şey değişmeyecek, sadece yeni emir tipinin sınıfı eklenecek ve bu arayüz de desteklenecek.
Riskten korunma hesapları tanıtıldığında sistemin çok makul olduğu kanıtlandı. Uzmanlar hiç değişmedi.
Peter Konow , MT4 ve MT5'te sipariş tiplerindeki farklılık sorununu nasıl çözüyorsunuz?
Yeni bir hesap türü tanıtılırsa (koruma ve netleştirmeye ek olarak) - tek bir yerde hangi değişikliklerin yapılması gerekecek?
Benim düşünceme göre, gerçekten, tüm kodunuzu mektuba hatırlıyorsanız ve bir yıl önce kodunuzda şu veya bu satırın neden yazıldığını kolayca söyleyebilirseniz, o zaman, aslında, tüm bu OOP çanları ve ıslıkları sadece gereksiz jestlerdir. kimsenin ihtiyacı yok.
OOP, kodu değiştirirken her şeyi hatırladığınızda tam olarak gereklidir - OOP, herhangi bir anda mevcut olan varlık setini programdaki belirli bir yerle sınırlamak için blokları birbirinden ayırmanıza izin verir.
Neyse batırdılar...
1. Evet, herhangi bir görevin hem OOP tarzında, arayüzlerin tahsisi, bir miras hiyerarşisinin inşası , sanal fonksiyonların beyanı ile çözülebileceği açıktır ve tamamen prosedürel bir tarzda - hatta her şeyi yapıştırabilirsiniz. tek bir büyük işlevde.
Sorun, desteğin rahatlığı ve verimliliğidir.
2. MT'de - OOP'ye en uygun yer sipariş sistemidir. Şahsen, "konumlar" ve "konum bileşenleri" sanal arayüzlerim var. "Pozisyon", MT4'teki bir dizi emir veya bir dizi MT5 pozisyonudur. Bir "pozisyon bileşeni", tek bir sipariş veya tek bir MT5 pozisyonudur (hedge veya ağ).
3. İşte gerçek arayüz dosyası ( Peter Konow , kod miktarına göre yorum sayısını tahmin edebilirsiniz ayrıca bazı incelikleri hatırlamadığım gerçeğiyle karşılaştığımda periyodik olarak oraya ekliyorum. hangi gerçek nesnelerin temsil edildiğini düzenli olarak unut Bunu hatırlamama gerek yok - EA, arayüze göre bileşenlerle çalışır ve bu arayüzün arkasında gerçekte ne olduğu önemsizdir.Fakat, değiştirirken buna geri dönmek zorundayım - bu yüzden Bu dosyada genellikle ilk yorum gerekli olur):
Ticaret bileşeni arayüz dosyası aşağıdaki gibidir (yukarıda zaten verdim ama tekrar edeceğim:
Bu arayüzlere göre hem gerçek hem de tarihi siparişler için hem MT4 hem de MT5 sipariş sistemlerini uyguladım.
Pozisyon talebinde bulunan bir Uzman Danışman bu arayüzü alır ve MT4 ve MT5 emirleri ile çalışmanın farkını hiç dikkate alması gerekmez. Ayrıca yeni bir emir tipi eklenirse veya onlarla çalışma sırası değişirse Expert Advisor için hiçbir şey değişmeyecek, sadece yeni emir tipinin sınıfı eklenecek ve bu arayüz de desteklenecek.
Riskten korunma hesapları tanıtıldığında sistemin çok makul olduğu kanıtlandı. Uzmanlar hiç değişmedi.
4. Reter Konow , MT4 ve MT5'te sipariş tipi farklılığı sorununu nasıl çözüyorsunuz?
Yeni bir hesap türü tanıtılırsa (koruma ve netleştirmeye ek olarak) - tek bir yerde hangi değişikliklerin yapılması gerekecek?
Benim düşünceme göre, gerçekten, tüm kodunuzu mektuba hatırlıyorsanız ve bir yıl önce kodunuzda şu veya bu satırın neden yazıldığını kolayca söyleyebilirseniz, o zaman, aslında, tüm bu OOP çanları ve ıslıkları sadece gereksiz jestlerdir. kimsenin ihtiyacı yok.
OOP, kodu değiştirirken her şeyi hatırladığınızda tam olarak gereklidir - OOP, herhangi bir anda mevcut olan varlık setini programdaki belirli bir yerle sınırlamak için blokları birbirinden ayırmanıza izin verir.
1. Tamamen katılıyorum. Fark, yalnızca sorunları bir şekilde çözme verimliliğindedir.
2. Sipariş sistemiyle pek çalışmadım ve şu anda yapımında teknik bir sorun görmüyorum. Belki öyleler, ancak belirli bir göreve ihtiyaç var ve o zaman OOP olmadan ne kadar etkili çözebileceğim netleşecek.
3. Verilen kod örneği (benim açımdan) okunabilirlik açısından çok kötü. Bu kadar çok yoruma ihtiyaç duyulmasına ve içeriğini neden unuttuğunuza şaşmamalı. Üzgünüm, ama bu benim öznel ilk izlenimim. Sadece biraz ürkütücü.
İşte kodumun okunabilirliğine bir örnek - bir kontrol detayının rengini belirleyen bir fonksiyon:
Gördüğünüz gibi, burada yorumlara neredeyse gerek yok. Tüm kodum bu tarzda yazılmıştır. Bu nedenle onu çok iyi tanıyorum ve boyu ne olursa olsun onu hatırlıyorum.
Benim düşünceme göre, problem çözme sisteminizde bir çeşit kusur var. Görevin kendisi kristal berraklığında ve kesin olmalıdır ve dolayısıyla çözümü de olmalıdır. Karar belirsizse ve "Sistem kendini çok makul gösterdi" (270 kb kodda nasıl makul olabilir?!) sözleriyle tanımlanmışsa, bu, yazarın sisteminin nasıl çalıştığını yaklaşık olarak anladığı anlamına gelir. Ve sözdiziminin korkunç çanları ve ıslıkları ve çözmede gereksiz olan özü anlaması sonuna kadar engellenir.
Çözümün etkili olabilmesi için gereksiz unsurlar ortadan kaldırılmalı ve problem net bir şekilde görülmelidir.