Benim yaklaşımım. Çekirdek - Motor. - sayfa 47

 
Реter Konow :

Aksine, işimi eleştiririm. Bu yüzden sürekli kendimi geliştiriyorum.

Anatoly iyi bir adam. Tartışma yok. Kütüphane iyidir.

Ancak bugün gösterdiğim pencere bile büyük zorluklarla yapılabiliyor. Daha fazlasını saymıyorum bile.

İlginiz için, penceremi tekrarlamak için yazılması gereken kodu oluşturup burada gösterebilirsiniz ve benim versiyonumla karşılaştıralım.

Soruya soru: Bu pencereye neden ihtiyacınız olduğunu ve yarı otomatik ticarette nasıl yardımcı olduğunu açıklayabilir misiniz?

 
Реter Konow :

Neden bir GUI kitaplığı yazdınız?

MT4'te grafik nesnelerle çalışmak da en fazla emek gerektiren şeydir. Yalnızca bir nesne oluşturmak değil, aynı zamanda bir dizi özellik ayarlamak da gereklidir. Grafik nesnelerle çalışmayı basitleştirmek için, bazı grafik nesneleri hızlı bir şekilde oluşturmanıza izin veren birkaç işlevim vardı. MT5 göründüğünde, tüm grafik nesnelerin içinde daha da fazla özellik vardı, işlevler için parametre sayısı o kadar arttı ki aptal görünüyordu. Bu nedenle, soru ortaya çıktı - yeni koşullarda grafik nesnelerle çalışmanın nasıl basitleştirileceği. OOP ortaya çıktığı için başvuruları da değerlendirildi. Sonuç olarak, ilk başta bir grafik nesneyle hızlı çalışma için bir sınıf vardı. Ardından, birkaç bileşik öğe yaratma fikri ortaya çıktı. Fikri beğendim ve ilk makaleyi yazdım - kendi kontrollerinizi nasıl oluşturabilirsiniz. Her şey bir şekilde sorunsuz gitti ve 2-3 hafta içinde kendi zevkim için yaptım, standart olanlara benzer birkaç kontrol oluşturuldu ve kütüphane ortaya çıktı, açıklaması ikinci makalede. Üçüncü makale formlar, ancak kit için oldukça resmi, kütüphaneyi tamamlamaya karar verdim ve bunun için formlar kendilerini önerdi. Ama formlarda pek işe yaramadı, nasıl iyi yapacağımı düşünmedim. Şimdi, elbette, nasıl olduğunu biliyorum. Ayrıca, o zamanlar fare hareketi olayı yoktu, bu nedenle kaydırma çubukları garip ve şekil alışılmadık bir şekilde sürükleniyor. Formlara gelince - sormak yerine aldılar ve aforoz ettiler. Ve kütüphaneyi çok uygun hale getirmek için oldukça fazla çalışma var. Sınıfı boş kopyalamamak, bir nesne oluşturmak ve ona kontroller eklemek için onu sonlandırmak, kaydırma çubuklarını yeniden yapmak, formu sürükleyip bırakmak ve formun kendisini farklı hale getirmek için bile düşünceler var.

 
Vitaly Muzichenko :

Sorudan soruya: Bu pencereye neden ihtiyacınız olduğunu ve yarı otomatik ticarette nasıl yardımcı olduğunu açıklayabilir misiniz?

Yarı otomatik ticaret, tam otomatik veya manuel ticaretle aynı anlaşılmaz ve mali açıdan zararlı "saçmalıktır".

Tüccarların ilgisini çekebilecek başka bir ticaret türü.

 
Artyom Trishkin :

Uygun gördüğünüz gibi düşünün. Anatoly'nin makalelerinin tartışmalarını yeniden okumaya başlayabilirsiniz - rekabet girişimleriniz var. Ancak Anatoly her şeyi uzun zaman önce, mütevazı, verimli, profesyonelce, "gürültü ve toz olmadan" yaptı ve hala kendinizi övüyorsunuz.

Soru şu - nasıl kullanılır? 50 makale okumanız mı gerekiyor? Ve aynı zamanda paradoksal olarak "basit ve hızlı" olarak adlandırılır.

 
Dmitry Fedoseev :

Soru şu - nasıl kullanılır? 50 makale okumanız mı gerekiyor?

Bir şekilde her şeyi hızlı bir şekilde anladım - makaleler olmadan. Okudum tabii ki - dışarı çıktım, cep telefonumdan okudum. Anlatılanı anlamak için. Ama orada nesneler yaratmak ve onlarla çalışmak Peter'dan daha kolay. OnInit()'te özelliklerin açıklaması ile gerekli sayıda nesneyi oluşturduk ve bunlardan gelen mesajları OnChartEvent()'de kullandık - kısacası. Normal olay modeli.

Daha sonra kütüphanesini kendim için kürekledim - çapraz platform yaptım, yeniden başlatma sırasında orijinal durumlarına sıfırlanmamaları için oluşturulan tüm nesnelerin değerlerini kaydetmeyi ekledim, nesnelerle birçok etkileşim için sesler ekledim ( varsayılan ve bireysel ve devre dışı - böylece sürekli çalmaz ve çalmaz), düşkün ve terk edilmiş - kendi fikirleri vardır. Anatoly'nin kütüphanesi, programdan yeni kullanarak anında nesne oluşturmaya izin vermez, birden fazla pencereyi etkinleştirmeye izin vermez... Genel olarak, geliştirme için yer vardır. Ama bu onun için bir soru. Veya kendine - ihtiyaçları için gerekli olanı ve gerekli tüm nesneler ve kullanım olanakları ile yapmak.

 
Artyom Trishkin :

Bir şekilde her şeyi hızlı bir şekilde anladım - makaleler olmadan. Okudum tabii ki - dışarı çıktım, cep telefonumdan okudum. Anlatılanı anlamak için. Ama orada nesneler yaratmak ve onlarla çalışmak Peter'dan daha kolay. OnInit()'te özelliklerin açıklaması ile gerekli sayıda nesneyi oluşturduk ve bunlardan gelen mesajları OnChartEvent()'de kullandık - kısacası. Normal olay modeli.

Daha sonra kütüphanesini kendim için kürekledim - çapraz platform yaptım, yeniden başlatma sırasında orijinal durumlarına sıfırlanmamaları için oluşturulan tüm nesnelerin değerlerini kaydetmeyi ekledim, nesnelerle birçok etkileşim için sesler ekledim ( varsayılan ve bireysel ve devre dışı - böylece sürekli çalmaz ve çalmaz), düşkün ve terk edilmiş - kendi fikirleri vardır. Anatoly'nin kütüphanesi, programdan yeni kullanarak anında nesne oluşturmaya izin vermez, birden fazla pencereyi etkinleştirmeye izin vermez... Genel olarak, geliştirme için yer vardır. Ama bu onun için bir soru. Veya kendine - ihtiyaçları için gerekli olanı ve gerekli tüm nesneler ve kullanım olanakları ile yapmak.

Nesneler muhtemelen yeni aracılığıyla yaratılabilir, bu imkansız olamaz mı, yoksa gerçekten imkansız mı? Ancak formların oluşturulması benimki kadar aptal ve standart kütüphanede de aynı - formu boş kopyalamanız gerekiyor. İlginçtir ki, beni o kadar eleştirdiler, neredeyse formlarıma aforoz ettiler ama kendileri bu noktadan hareket etmediler.

 

hız bu.. hız bu!

60 km ilerlerken konuya 15 sayfa atıldı. 4(!!) km'de toplam 1 sayfa ;-)

Peter göbeği ne zaman hareket ettirecek ve motoru ne zaman çekecek .. zamanı yok

 
Dmitry Fedoseev :

Nesneler muhtemelen yeni aracılığıyla yaratılabilir, bu imkansız olamaz mı, yoksa gerçekten imkansız mı? Ancak formların oluşturulması benimki kadar aptal ve standart kütüphanede de aynı - formu boş kopyalamanız gerekiyor. İlginçtir ki, beni o kadar eleştirdiler, neredeyse formlarıma aforoz ettiler ama kendileri bu noktadan hareket etmediler.

Evet, orada aynı kodu yüzlerce pencere için yüz kez tekrarlaması gerekiyor, ancak kendi parametreleriyle. Bundan kurtuldum - her kontrol için onu oluşturmak için evrensel bir yöntem yaptım - sadece her eleman için ihtiyacınız olan parametreleri girin. Bu nedenle, oluşturmak benim için çok kolaydı - bir pencereye ihtiyacınız var - CreateWindow (başlangıç, bireysel, parametreler), vb. Ve sonra, eğer eleman oluşturulduysa, ona küçük şeyler ekleyebilir veya varsayılan olarak bırakabilirsiniz.

Yani, kabaca (yapısal olarak) şöyle:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Eh, bu zaten iki düğmeli ve bir atom bombalı bir pencerenin ortaya çıkması için yeterli :)

Ama Anatoly'nin kitaplığını elden geçirdim. Onun için daha zor bence.

Yeni tarafından yaratmaya gelince - hafızam bana hizmet ediyorsa orada var - uzun zamandır koda bakmadım - küresel düzeyde bir nesne var ve tüm unsurları yaratma ve yönetme çalışmaları zaten devam ediyor ondan.

Tabii ki, new tarafından oluşturulan kitaplıklarından birkaçını yerleştireceğiniz bir liste yapmayı deneyebilir ve ardından bu listeleri zamanlayıcıda ve olaylarda ve bunların içinde ne olduğunu görüntüleyebilirsiniz. Ama bir kez denedim - bu tür her nesne komşu nesnelerle yapılan eylemlere tepki gösterdi - bir pencereyi hareket ettiriyorsunuz ve gerisi de uçuyor. Ben de anlamak için fırlattım - zaman yok.

 
Artyom Trishkin :

Evet, orada aynı kodu yüzlerce pencere için yüz kez tekrarlaması gerekiyor, ancak kendi parametreleriyle. Bundan kurtuldum - her kontrol için onu oluşturmak için evrensel bir yöntem yaptım - sadece her eleman için ihtiyacınız olan parametreleri girin. Bu nedenle, oluşturmak benim için çok kolaydı - bir pencereye ihtiyacınız var - CreateWindow (başlangıç, bireysel, parametreler), vb. Ve sonra, eğer eleman oluşturulduysa, ona küçük şeyler ekleyebilir veya varsayılan olarak bırakabilirsiniz.

Yani, kabaca (yapısal olarak) şöyle:

CreateWindow(0);

CreateButton(1,0,координаты);

CreateButton(2,0,координаты);

...

CreateNuclearBomb(1,0,координаты);

...

Eh, bu zaten iki düğmeli ve bir atom bombalı bir pencerenin ortaya çıkması için yeterli :)

Ama Anatoly'nin kitaplığını elden geçirdim. Onun için daha zor bence.

Yeni tarafından yaratmaya gelince - hafızam bana hizmet ediyorsa orada var - uzun zamandır koda bakmadım - küresel düzeyde bir nesne var ve tüm unsurları yaratma ve yönetme çalışmaları zaten devam ediyor ondan.

Tabii ki, new tarafından oluşturulan kitaplıklarından birkaçını yerleştireceğiniz bir liste yapmayı deneyebilir ve ardından bu listeleri zamanlayıcıda ve olaylarda ve bunların içinde ne olduğunu görüntüleyebilirsiniz. Ama bir kez denedim - bu tür her nesne komşu nesnelerle yapılan eylemlere tepki gösterdi - bir pencereyi hareket ettiriyorsunuz ve gerisi de uçuyor. Ben de anlamak için fırlattım - zaman yok.

CreateWindow(0) ve CreateButton() için 0 parametresi nedir? CreateWindow(0) için bu, pencere tanımlayıcısıdır, CreateButton() için bu, düğmelerin form 0'da olacağı anlamına gelir. Ya da hiç mi? Sadece bir form mümkün ve tüm kontroller üzerinde mi olacak?

 
Dmitry Fedoseev :

CreateWindow(0) ve CreateButton() için 0 parametresi nedir? CreateWindow(0) için bu, pencere tanımlayıcısıdır, CreateButton() için bu, düğmelerin form 0'da olacağı anlamına gelir. Ya da hiç mi? Sadece bir form mümkün ve tüm kontroller üzerinde mi olacak?

Her eleman diğerine eklenebilir. "0" ın ne olduğunu doğru anladınız - bu öğe tanımlayıcıdır. Bir GUI oluşturma ilkesini şematik olarak tasvir ettim. Ve düğmeler için kayıtlıdır, bu da bu pencereye eklenecekleri anlamına gelir. Herhangi bir öğede pencereye bir bağlantı yazmamış olsaydım, grafiğe eklenmiş olacaktı. Bence, böyle yaptı - tam olarak hatırlamıyorum.