MQL5 Sihirbazı ve Standart Ticaret Sınıfı Kitaplığı hakkında sorular - sayfa 11

 
Reshetov :

Üç soru:

  1. Sinyal modülünün her tıklamada değil, yalnızca açık fiyatlarda çalışması nasıl sağlanır?
  2. Konum takip modülündeki sinyal modülünün oylama değerleri nasıl alınır? Önceden hesaplanmış bir sinyal üzerinde trol yapmak ve izleme için başka bir sinyal modülü oluşturmamak gerekir.
  3. Para ve risk yönetimi modülünde sinyal modülü oylama değerleri nasıl alınır? Hacimleri hesaplamak için başka bir sinyal modülü oluşturmamak ve önceden hesaplanmış alım satım sinyallerine bağlı olarak hacim açmak gereklidir.

Teorik olarak, elbette, bir sihirbaz yardımıyla bir danışman toplayabilir ve ardından koda girebilir ve tüm bu ekonomiyi manuel olarak bağlayabilirsiniz. Ancak tüm bunların standart yöntemler, yani. Örneğin, bir sinyal modülünü diğeriyle değiştirmek isterse, koda girip düzenleme yapmak zorunda kalmamak için sihirbazı kullanmak isteyen aptallar için.

Tüm sorularınızı kendiniz yanıtlarsınız: "... bir sihirbaz yardımıyla bir Uzman Danışmanı bir araya getirin ve ardından ... manuel olarak ...". Henüz başka seçenek yok. Usta, büyük olasılıkla, yakın gelecekte gelişmeyecek. Standart Kütüphane sınıfları bir dogma değil, bir dizi tipik (bence) çözüm sağlama girişimidir. Devral (Master'da kullanılmak üzere), aşırı yükleme yöntemleri, kendinizinkini ekleyin. Ve sen "mutluluk" olacaksın ...
 
uncleVic :
Tüm sorularınızı kendiniz yanıtlarsınız: "... bir sihirbaz yardımıyla bir Uzman Danışmanı bir araya getirin ve ardından ... manuel olarak ...". Henüz başka seçenek yok. Usta, büyük olasılıkla, yakın gelecekte gelişmeyecek.

Yazık ki böyle iyi bir girişim ve uzak köşeye atılmış.

Akla getirilirse, çok şey yapılabilir, yani. önemsiz şeyler üzerinde dağılmamak için değil, programcıların, aptalların ve diğer kullanıcıların kodlara tırmanmadan çeşitli hazır Uzman Danışmanları bir araya getirebilecekleri hazır modüller oluşturması için. Ve böylece algoritmik mql4'tekiyle aynı bodyagi ortaya çıkıyor, yani. algoritmayı alın, koda girin ve manuel olarak vidalayın. OOP ilkesi tekrar ihlal edildi. Örneğin, bir modülü diğeriyle değiştirmek istiyorsanız, koda tekrar girmeniz ve her şeyi manuel olarak yeniden değiştirmeniz gerekecektir. Bir usta değil, saçmalık, çünkü. En azından nerede ve neyin değiştirilmesi gerektiğini bulmak için kodları taramak bile çok zaman öldürecek.

İyi bir başlangıçtı. Çok yazık. Dün bir sinyal modülü oluşturdum , ancak her seferinde kodlara girmemek için tüm danışmanın onunla nasıl çalışmasını sağlayacağım, şimdi bilmiyorum. Nasıl kullanılacağına dair bir makale yazmak istedim, türe göre ekledim, pozisyon yönetimi, para ve risk yönetimi ekledim ve her şey çalışıyor. Hayır, çalışmayacak. Çünkü kullanıcı danışmanı sihirbazı kullanarak toplarsa, hiçbir şey işe yaramaz. Hala kodun nereye girileceği ve nelerin değiştirileceği konusunda bir sürü talimat yazması gerekiyor. Talimatları yazmadan önce hala tüm bunlarla uğraşmam gerektiği gerçeğinden bahsetmiyorum bile.

Yani artık kullanıcıların mql5, OpenCL vb. öğrenmekten başka seçeneği yok. otomatik ticaret için. Aksi takdirde, şanslı olmayacaklar.

Tamam, bu projeden vazgeçildiği için artık farklı bir yönde düşüneceğim.

 
Reshetov :

Yazık ki böyle iyi bir girişim ve uzak köşeye atılmış.

Umarız terk edilmez, ertelenir. Kendisi, Usta'nın gelişimi hakkında birçok ilginç düşünceye sahiptir. Ancak...
 
uncleVic :
Umarız terk edilmez, ertelenir. Kendisi, Usta'nın gelişimi hakkında birçok ilginç düşünceye sahiptir. Ancak...

Umut en son ölür (c) Halk deyişi

İlk soruya, yani sinyal modülünü açık fiyatlarla nasıl test edebilirim ve kenelerle ticaret, kodlara tırmanmak zorunda kalmamam için bir çözüm buldum ve hatta genel olarak kabul edilenden daha iyi.

Ancak pozisyonları korumak ve sermaye ve riski yönetmek için modüllerdeki sinyal modülünün göstergelerinin kod seçmeden nasıl okunacağı henüz tamamlanmamıştır. Kaynak koduna tırmandım, çözdüm. Sinyal modülü, sonuçlarını Direction() yöntemiyle yayınlar, yani. bir şekilde, pozisyonları korumak ve sermaye ve riski yönetmek için modüllerde bu modülün sınıfının bir örneğine başvurmak ve okumalarını okumak için bu yöntemi çağırmak yeterlidir. Bunun kodları değiştirmeden nasıl yapılabileceği henüz belli değil.

 
Reshetov :

Umut en son ölür (c) Halk deyişi

İlk soruya, yani sinyal modülünü açık fiyatlarla nasıl test edebilirim ve kenelerle ticaret, kodlara tırmanmak zorunda kalmamam için bir çözüm buldum ve hatta genel olarak kabul edilenden daha iyi.

Ancak pozisyonları korumak ve sermaye ve riski yönetmek için modüllerdeki sinyal modülünün göstergelerinin kod seçmeden nasıl okunacağı henüz tamamlanmamıştır. Kaynak koduna tırmandım, çözdüm. Sinyal modülü, sonuçlarını Direction() yöntemiyle yayınlar, yani. bir şekilde, pozisyonları korumak ve sermaye ve riski yönetmek için modüllerde bu modülün sınıfının bir örneğine başvurmak ve okumalarını okumak için bu yöntemi çağırmak yeterlidir. Bunun kodları değiştirmeden nasıl yapılabileceği henüz belli değil.

Kodları değiştirmezseniz muhtemelen çalışmayacaktır.

 
uncleVic :

Kodları değiştirmezseniz muhtemelen çalışmayacaktır.

Her şey henüz kaybolmadı. Sonuçta, СExpert, СExpertMoney ve СExpertTrailing'den miras alınan sınıflar oluşturmak ve bunlara sinyal modülü sınıfının bir örneğine gerekli erişim yöntemlerini eklemek mümkün olacaktır. Ama burada da sıkıntı yaşanıyor, tk. ana , oluşturulan Expert Advisor'da onun alt öğesi değil, #include <Expert\Expert.mqh> öğesini belirtir.

Hala düşünmek zorundayız.

Geliştiriciler, bir sinyal modülünün ana modül olarak diğer tüm modüller için kullanılabileceğini hemen tahmin ettiyse ve gerekirse, pozisyonları izlemek ve sermayeyi yönetmek için modüllere ek sinyaller (sihirbazın bu uygulamasında olduğu gibi) ekleyin ve risk ve bunun için kodlarda sağlanırsa her şey çok daha kolay olurdu. Ve böylece, her modülün sinyaller için sırasıyla ek koşullar belirlemesi gerektiği ortaya çıktı, ek harici ayarlara ihtiyaçları var, bu da bir dizi optimize edilmiş parametreye sahip bir tür canavarla sonuçlanıyor. Bir modülden gelen sinyallerin çakışabileceği gerçeğinden bahsetmiyorum bile, yani. bir pozisyon açabileceği sinyali ve piyasaya giriş ve piyasadan çıkış koşulları birbiriyle çelişiyorsa, takip modülü bir sonraki tikte onu kapatabilir.

 
Reshetov :

Her şey henüz kaybolmadı. Sonuçta, СExpert, СExpertMoney ve СExpertTrailing'den miras alınan sınıflar oluşturmak ve bunlara sinyal modülü sınıfının bir örneğine gerekli erişim yöntemlerini eklemek mümkün olacaktır. Ama burada da sıkıntı yaşanıyor, tk. ana , oluşturulan Expert Advisor'da onun alt öğesi değil, #include <Expert\Expert.mqh> öğesini belirtir.

Hala düşünmek zorundayız.

Geliştiriciler, bir sinyal modülünün ana modül olarak diğer tüm modüller için kullanılabileceğini hemen tahmin ettiyse ve gerekirse, pozisyonları izlemek ve sermayeyi yönetmek için modüllere ek sinyaller (sihirbazın bu uygulamasında olduğu gibi) ekleyin ve risk ve bunun için kodlarda sağlanırsa her şey çok daha kolay olurdu. Ve böylece, her modülün sinyaller için sırasıyla ek koşullar belirlemesi gerektiği ortaya çıktı, ek harici ayarlara ihtiyaçları var, bu da bir dizi optimize edilmiş parametreye sahip bir tür canavarla sonuçlanıyor. Bir modülden gelen sinyallerin çakışabileceği gerçeğinden bahsetmiyorum bile, yani. bir pozisyon açabileceği sinyali ve piyasaya giriş ve piyasadan çıkış koşulları birbiriyle çelişiyorsa, takip modülü bir sonraki tikte onu kapatabilir.



Her şey olması gerekiyordu. Usta bir "balık" danışmanı yaratır. daha uzak:

  • içermeyi değiştirin - sorun değil;
  • ana sinyal özel olarak dışarıda oluşturulur (ikame kolaylığı için);
  • bazı girişler ve kurulum yöntemi çağrıları eklensin mi?
 
uncleVic :

Her şey olması gerekiyordu. Usta bir "balık" danışmanı yaratır. daha uzak:

  • içermeyi değiştirin sorun değil;
  • ana sinyal özel olarak dışarıda oluşturulur (ikame kolaylığı için);
  • bazı girişler ve kurulum yöntemi çağrıları eklensin mi?


Bu tür şeylerin başlangıçta düşünülmemiş olması utanç verici:

  1. Ticaret sistemine dahil olan modül sınıflarının yöntemlerine erişim, okuma için bile kapalıdır, bu da çalışmalarını uyumlu hale getirme olasılığını tamamen ortadan kaldırır.
  2. Sinyal modülleri, konum izleme modülleriyle kolayca çakışabilir, çünkü farklı sinyalleri vardır ve bu nedenle uyumsuzluk hariç tutulmaz.
  3. Modüllerde farklı sinyaller vardır ve bu nedenle hepsinin ayrı ayarları vardır, bu da danışman için birkaç değil çok sayıda giriş ayarıyla sonuçlanır. Ayarlar ne kadar farklı olursa, hikayeye uyma olasılığı o kadar artar.
  4. Sihirbaz çalıştıktan sonra, bazen sorunları çözmek için kaynaklara tırmanmanız gerekir. Programlamayı bilmeyen bir son kullanıcı için bu genellikle uygun değildir, çünkü. tak ve çalıştır ihtiyacı var. Programcı için bu tür yanlış anlamalar da problem yaratır, çünkü kendi kodunuzla uğraşmak, usta tarafından bir yığına dökülen koddan çok daha kolaydır. Ek bir komplikasyon, sınıfların kalıtsal olmasıdır, yani. Yanlış anlamaların nedeni nadiren torunlar düzeyinde bulunabilir, ancak ana sınıflara derinlemesine bakmanız gerekir.

En iyisini istedik. Her zamanki gibi ortaya çıktı (c) Chernomyrdin

Genel olarak, yanlış anlaşılmaların önemli bir kısmı düzeltilebilir, ancak bunun kök ebeveyn sınıfları düzeyinde yapılması ve ardından düzeltilen sınıfların platform güncellemeleri yoluyla dağıtılması gerekir. Onlar. pozisyon izleme ve para ve risk yönetimi modüllerinden sinyal modülünün Direction() yöntemine erişim açmanız gerekir. Çünkü bireysel modül geliştiricileri, üst sınıfların kaynak kodlarını düzenlerse, kaynaklar uyumsuz olacak ve oluşturulan modüller diğer bilgisayarlarda çalışmayacaktır. Modül geliştiricileri, geçersiz kılınan yöntemlerle üst sınıflar oluşturursa, uyumsuzluk hala ana düzeyde olacaktır, çünkü ikincisi, içeriğini belirler ve bu nedenle, yine, son kullanıcıların talimatlar yazması gerekir ve kaynak koduna girmek istemeleri pek olası değildir ve eğer yaparlarsa, hata tek bir karakterde veya başka bir yerdedir, vb. vb..

 
Reshetov :

Bu, başlangıçta şu tür şeylerin rezaletidir:

  1. Ticaret sistemine dahil olan modül sınıflarının yöntemlerine erişim, okuma için bile kapalıdır, bu da çalışmalarını uyumlu hale getirme olasılığını tamamen ortadan kaldırır.
  2. Sinyal modülleri, konum izleme modülleriyle kolayca çakışabilir, çünkü farklı sinyalleri vardır ve bu nedenle uyumsuzluk hariç tutulmaz.
  3. Modüllerde farklı sinyaller vardır ve bu nedenle hepsinin ayrı ayarları vardır, bu da danışman için birkaç değil çok sayıda giriş ayarıyla sonuçlanır. Ayarlar ne kadar farklı olursa, hikayeye uyma olasılığı o kadar artar.
  4. Sihirbaz çalıştıktan sonra, bazen sorunları çözmek için kaynaklara tırmanmanız gerekir. Programlamayı bilmeyen bir son kullanıcı için bu genellikle uygun değildir, çünkü. tak ve çalıştır ihtiyacı var. Programcı için bu tür yanlış anlamalar da problem yaratır, çünkü kendi kodunuzla uğraşmak, usta tarafından bir yığına dökülen koddan çok daha kolaydır. Ek bir komplikasyon, sınıfların kalıtsal olmasıdır, yani. Yanlış anlamaların nedeni nadiren torunlar düzeyinde bulunabilir, ancak ana sınıflara derinlemesine bakmanız gerekir.

En iyisini istedik. Her zamanki gibi ortaya çıktı (c) Chernomyrdin

Genel olarak, yanlış anlaşılmaların önemli bir kısmı düzeltilebilir, ancak bunun kök ebeveyn sınıfları düzeyinde yapılması ve ardından düzeltilen sınıfların güncellemeler yoluyla dağıtılması arzu edilir. Çünkü modül geliştiriciler için üst sınıfların kaynaklarını düzenlerseniz, kaynaklar arasında uyumsuzluk elde edersiniz ve oluşturulan modüller diğer bilgisayarlarda çalışmayacaktır. Geliştirici geçersiz kılınan yöntemlerle üst sınıflar oluşturursa, uyumsuzluk zaten ana düzeydedir, çünkü içeriklerini reçete eder ve bu nedenle, yine, son kullanıcıların talimatlar yazması gerekir ve kaynak koduna girmek istemeleri pek olası değildir ve eğer yaparlarsa, hata tek bir karakterde veya başka bir yerdedir, vb. vb..

Özel önerilerde bulunalım. Düşüneceğiz.
 
uncleVic :
Özel önerilerde bulunalım. Düşüneceğiz.

Şimdiye kadar, yukarıdaki dezavantajları ortadan kaldırmanıza izin veren tek kişi:

Konum izleme ve para ve risk yönetimi modüllerinden sinyal modülünün Direction() yöntemi ile döndürülen değerlerin okunmasına açık erişim.

Onlar. pozisyon izleme ve para ve risk yönetimi modüllerine bir yöntem daha ekleyin; örneğin, sinyal modülü sınıfının bir örneğine atıfta bulunan ve Direction() yönteminin bir sonucu olarak dönen çift getMainSingnal() tanımlayıcısı ile sinyal modülü. Bu bilgi alışverişi salt okunur modda gerçekleştiği için güvenlikten hiçbir şekilde ödün verilmeyecektir.

Bunun için ihtiyacınız var

  1. CExpertSignal sınıfının bir örneğini depolamak için CExpertMoney ve CExpertTrailing sınıflarındaki alanları seçin, ör. ana sinyal modülü.
  2. CExpertSignal sınıfının tam da bu örneği, yani. bu modüllerin sınıf eşgörünümlerinin başlatılması sırasında sinyal modülü pozisyon takip ve para ve risk yönetimi modüllerine aktarılmalı ve madde 1'de belirtilen alanlara kaydedilmelidir. Doğal olarak, bunu yapmadan önce, sinyal modülü sınıfının bir örneğinin zaten var olduğunu kontrol etmek (emin olmak) da gereklidir, yani. yaratıldı.
  3. CExpertMoney ve CExpertTrailing sınıflarında, sınıfların ilgili veri alanlarında depolanan sinyal modülü sınıfının bir örneğine erişen ve bunun bir sonucu olarak sinyalin Direction() yönteminin sonucunu döndüren çift getMainSingnal() tanımlayıcısıyla ek yöntemler oluşturun. modül.

PS Sinyal modülü sınıfının bir örneğine bağlantı depolayan alan CExpert sınıfındadır.

CExpertSignal    *m_signal;                   // trading signals object
Onlar. CExpertMoney ve CExpertTrailing sınıfları için benzer alanlar oluşturmak ve bunlara başlatma sırasında aynı CExpert sınıfında yukarıdaki alandan aynı değeri iletmek gerekir.