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
Algoritmanın ilk sürümü için test komut dosyası:
Bu kadar basit bir işlev için arayüzü fazla karmaşık hale getirdiniz. Gereksiz ihracat çok ama tam tersine gerekli şeyler yeterli değil. Kodunuzu ilk defa anlamadım, programlamada bu kadar iyi olmayan insanların nasıl hissettiğini hayal edebiliyorum.
Şimdi basitleştirilmiş bir dışa aktarma ve test komut dosyası işlemi versiyonumu düşüneceğim ve sunacağım.
FF denkleminin parametrelerinin değerlerini bulmaya yönelik "evrimsel" yaklaşımın, değerleri arama verimliliğini artırmak için değil, evrim sürecini programlı olarak simüle etmek için yaratılmış olması mümkündür.
Eh, evrimin bilim adamları tarafından temsil edildiği biçimde ...
Acı verici bir şekilde, yaklaşım, tüm evrimsel kanunlarla uyumlu olması bakımından tutarlıdır...
teklif:
1. Uygunluk işlevi, double türündeki bir dizi parametreyi kabul eder ve sayı ne kadar büyükse, parametreler o kadar iyi seçilirse sayıyı döndürür. Uygunluk fonksiyonu prototipi aşağıdaki gibidir:
2. Uygunluk işlevi, FitnessParams yapısında belirtilen belirli parametrelere sahiptir. Yapının açıklaması aşağıda verilmiştir:
3. Uygunluk işlevi ve parametreleri dış etkilerden korunur ve bağımsız bir kitaplıkta bulunur . .\\Scripts\\FF\\FF.ex5 biri tarafından değiştirilebilir.
4. Özel optimizasyon algoritması ve kontrol komut dosyası, uygunluk fonksiyonu parametrelerini öğrenebilir. Export.mqh dosyası neden bu işlevin gerekli prototiplerini ve parametrelerini içeriyor? FF parametrelerini elde etmek için, yine ..\\Scripts\\FF\\FF.ex5 konumunda bulunan parametre dışa aktarma işlevini kullanın:
void GetFitnessParams(FitnessParams& params);
5. Özel optimizasyon algoritması ayrı, kapalı bir kullanıcı kitaplığında bulunur ..\\Scripts\\FF\\ UserFindExtremum.ex5 ve kullanıcı tarafında ayrı olarak derlenir. FindExtremum işlevi, kullanıcının kitaplığında dışa aktarılmalıdır . Bu işlev, kontrol komut dosyası tarafından çağrılır. Tam fonksiyon prototipi aşağıdadır:
6. Kontrol komut dosyası, parametreleriyle birlikte uygunluk fonksiyonu ..\\Scripts\\FF\\FF.ex5 kitaplığını adres alanına yükler ve ekstremum araması için üyenin kitaplığı ..\\Scripts\\FF\\UserFindExtremum.ex5. Daha sonra FindExtremum üye işlevini çağırır.
7. Katılımcı işlevi işlendikten sonra, kontrol komut dosyası, uygunluk işlevinin, katılımcı işlevi tarafından bulunan maksimum değeri ve bu maksimumu bulmak için gereken çağrı sayısını içeren parametrelerini ister. Bu verilere dayanarak, katılımcının sonucuna ilişkin bir tablo şeklinde bir rapor oluşturulur:
Bir sonraki gönderide gerekli dosyalar ve kullanım örneği eklenecektir.
.mqh dosyasını dışa aktar - tüm katılımcılar için kullanılabilir işlevlerin ortak listesi ve parametre yapısı
FF.mq5 dosyası, kitaplık biçimindeki bir uygunluk işlevi örneğidir.
Dosya TestFF.mq5 - bir komut dosyası biçiminde test algoritması
UserFindExtremum.mq5 dosyası, kitaplık biçiminde bir ekstremum bulmak için kullanıcı tanımlı bir işlevdir. Örnek olarak rastgele arama kullanılmıştır
Dosya Export.mqh - tüm katılımcılar için mevcut işlevlerin ortak bir listesi ve parametrelerin yapısı
FF.mq5 dosyası, kitaplık biçimindeki bir uygunluk işlevi örneğidir.
Dosya TestFF.mq5 - bir komut dosyası biçiminde test algoritması
UserFindExtremum.mq5 dosyası, kitaplık biçiminde kullanıcı tanımlı bir ekstremum arama işlevidir. Rastgele arama örnek olarak kullanılmıştır
Bu kadar basit bir işlev için arayüzü fazla karmaşık hale getirdiniz. Gereksiz ihracat çok ama tam tersine gerekli şeyler yeterli değil. Kodunuzu ilk defa anlamadım, programlamada bu kadar iyi olmayan insanların nasıl hissettiğini hayal edebiliyorum.
Şimdi bunun hakkında düşüneceğim ve kendi basitleştirilmiş dışa aktarma ve test komut dosyası işlemi versiyonumu sunacağım.
Neden gerekli değil?
Hangi olmazsa olmazlar eksik?
Ne de olsa, sadece katılımcılar için hayatı mümkün olduğunca zorlaştırmak için değil, her şeyi yaptım ve ilk gün her şey düşünülmedi, ikincisini bile yapmadım.
Neden gerekli değil?
Hangi olmazsa olmazlar eksik?
Ne de olsa, sadece katılımcılar için hayatı mümkün olduğunca zorlaştırmak için değil, her şeyi yaptım ve ilk gün her şey düşünülmedi, ikincisini bile yapmadım.
Andrei, başkalarını bilmiyorum ama şahsen Vasily'nin örneğini daha çok sevdim. Suç yok. Bu sadece benim subjektif algım...
Dürüst olmak gerekirse, bir bağlantı arayüzü (sizin veya Vasily) seçme sorusunu oylamaya sunmayı öneriyorum.
Nasıl düşünüyorsun?
Andrei, başkalarını bilmiyorum ama şahsen Vasily'nin örneğini daha çok sevdim. Suç yok. Bu sadece benim subjektif algım...
Dürüst olmak gerekirse, bir bağlantı arayüzü (sizin veya Vasily) seçme sorusunu oylamaya sunmayı öneriyorum.
Nasıl düşünüyorsun?
Neden gerekli değil?
Hangi temeller eksik?
Ne de olsa, sadece katılımcılar için hayatı mümkün olduğunca zorlaştırmak için değil, her şeyi yaptım ve ilk gün her şey düşünülmedi, ikincisini bile yapmadım.
Örneğinizde, arama görevi kısmen kontrol komut dosyasına devredilmiştir. Bu doğru değil. Doğrulama komut dosyası aramayı aramalı ve sonucunu kontrol etmeli ve başka bir şey yapmamalıdır.
Tüm FF seçenekleri mevcut değildir. Örneğin, adım (0.1 değeri), olası maksimum ve minimum parametre nasıl alınır? Her kullanıcının bu forumu okuması ve adımın 0.1, minimum -10.0 ve maksimum +10.0 olduğunu anlaması ve ardından bu sabitleri kodlarına girmesi ve ardından FF işlevinin de aynı şekilde düşüneceğini ummaları kesinlikle harika. . Ama bu iyi bir şekilde yapılmaz.
ServiceFunc1 gibi birçok dışa aktarma işlevi yalnızca belirli arama algoritmalarında kullanılır. Örneğin, rastgele bir aramada bunları kullanmanıza gerek yoktur. O zaman neden kullanıcı kitaplığının bunları dışa aktarması gerekiyor? Tüm bu karmaşık dışa aktarma işlevleri kombinasyonunun gerekli olmadığını anlamak için test görevini doğrudan arama görevinden ayırmak yeterlidir.
Gereksiz eklentiler yapan daha birçok şey var.
Özellikle neyi daha çok seviyorsunuz?