MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 600
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Burası bir telepat kulübü değil. Kodunuzu eklemediniz, bu nedenle silme işlemini nereye yapacağınızı düşünün.
Doğru değil.
İşte kod, başka neye ihtiyacınız var? Yanlışsa doğru nedir?
Teşekkür ederim.
Ek, her şeyi yanlış anladın. Görevin yanlış planlanması sadece bu tür sonuçlara yol açar.
Nesneler bir sınıfta yaratılmışsa, çalışmasının sonunda onları yıkıcısında silmelidir. Diğer sınıflar, bir nesneye bir işaretçi almadan önce geçerliliğini kontrol etmelidir. Ve prensipte, böyle iç içe ilişkiler olmamalıdır. Bir çeşit top dokunmuştu. Zor demek kalite demek değildir. Her şey şeffaf ve izlenebilir olmalıdır. Her şeyden önce, senin için.
Kodu daha iyi gösterelim.
Burada, programın başlangıcında bir dosyadan bazı verileri okuyorum.
Yani, yinelemede CCandleCondition *candle_cond nesnesini oluşturuyorum ve ardından onu candle_one_rules koleksiyonuna ekliyorum.
CCandlesOneRules sınıfının AddCondition yöntemi:
CCandleRule, koşullar için yalnızca bir kapsayıcı sınıfıdır. Kurallara koşulları ve CCandleOneRules'daki kuralları ekliyorum, bunlar da CCandlesOneRules'da...
Bu while döngüsü başlangıçta çalışmaz, yetersiz bellek hatasıyla çöker. Üstelik bu koşullardan çok fazla yok, durmadan önce sadece 7 tanesi okunuyor. Okunabilir bir dosyadaki veri sayısını azaltırsanız, silinmemiş nesneler vb. herhangi bir hata olmadan çalışır.
Kodu daha iyi gösterelim.
sabrımı kaybetmeye başlıyorum.
Add yönteminin tanımı nerede?
Koda bakılırsa, ne yaptığınızı tamamen yanlış anlıyorsunuz.
sabrımı kaybetmeye başlıyorum.
Add yönteminin tanımı nerede?
Koda bakılırsa, ne yaptığınızı tamamen yanlış anlıyorsunuz.
CCandleOneRules, CCandlesOneRules, CCandleRule, tümü CArrayObj'den devralınan sınıflardır.
Genel cevaplarınıza bakılırsa, sorularımı anlamıyorsunuz. CArrayObj içeren bir dizide hala doğru yolu yanıtlamadınız. O görevi tekrar edeyim. Bir sınıf var, sınıf yönteminde, sınıfın genel nesneleri diziye eklenir (CARrayObj türünde bir nesne), bu yöntemde orada bildirilir. Bu yöntemde bazı işlemler bu dizide gerçekleştirilir. Tamamlandığında, dizi nesnesine ihtiyaç yoktur, dizi üyelerine ihtiyaç vardır. Dizi üyelerini korurken bu dizi nesnesinden kurtulmanın doğru yolu nedir? Ondan kurtulmazsanız, günlükte silinmemiş nesneler gibi mesajlar alacağız. Çözümümü verdim, yanlış dedin. Nasıl doğru? Belirtilen dizi nesnesi yalnızca sınıf yönteminde görünür durumdaysa, silmeyi OnDeinit'e (veya OnDeinit'ten çağrılacak Deinit sınıf yöntemine) nasıl yerleştirebilirim?
Ayrıca, nesneler yalnızca OnDeinit'te silinirse, program yürütme / test etme sırasında da bellek yetersiz kalabilir ...
Merhaba meslektaşlarım.
Bu sorunu çözmeme yardım et. Gösterge arabelleği öğelerinin numaralandırma sırasını belirtmek için ArraySetAsSeries() işlevini kullanmak en mantıklı nerede? Terminalde önceden kurulu olan göstergelerde, genellikle OnCalculate() içinde kullanıldığını gözlemledim. Ancak gösterge arabelleği global olarak bildirilir. Bu durumda, tek bir çağrı için OnInit() işlevinin içinde bir kez ArraySetAsSeries() işlevini kullanmak mantıklı değil mi? Veya, gösterge arabelleğinin yeni öğelerle yenilenmesi nedeniyle, numaralandırma sırası kaybolabilir ve OnCalculate() içinde her seferinde ArraySetAsSeries()'i çağırmaya gerek var mı? Gerekmediğinde ekstra işlev çağrılarının olmadığı optimum kodu yazmak istiyorum. Yardım için minnettar olacağım.
Merhaba meslektaşlarım.
Bu sorunu çözmeme yardım et. Gösterge arabelleği öğelerinin numaralandırma sırasını belirtmek için ArraySetAsSeries() işlevini kullanmak en mantıklı nerede? Terminalde önceden kurulu olan göstergelerde, genellikle OnCalculate() içinde kullanıldığını gözlemledim. Ancak gösterge arabelleği global olarak bildirilir. Bu durumda, tek bir çağrı için OnInit() işlevinin içinde bir kez ArraySetAsSeries() işlevini kullanmak mantıklı değil mi? Veya, gösterge arabelleğinin yeni öğelerle yenilenmesi nedeniyle, numaralandırma sırası kaybolabilir ve OnCalculate() içinde her seferinde ArraySetAsSeries()'i çağırmaya gerek var mı? Gerekmediğinde ekstra işlev çağrılarının olmadığı optimum kodu yazmak istiyorum. Yardım için minnettar olacağım.
IMHO, bu işlevler olmadan göstergeler yazardım (tabii ki sıfırdan). Ve böylece - arabellekler için - OnInit()'te, zaman serileri için - OnCalculate()'de.
Ve optimal kod hakkında konuşmak için, bu fonksiyonun ne kadar sürede yürütüldüğünü bilmeniz gerekir. Bu nedenle, önce profil oluşturucu ve ancak ondan sonra performans soruları başlamalıdır.
IMHO, bu işlevler olmadan göstergeler yazardım (tabii ki sıfırdan). Ve böylece - arabellekler için - OnInit()'te, zaman serileri için - OnCalculate()'de.
Ve optimal kod hakkında konuşmak için, bu fonksiyonun ne kadar sürede yürütüldüğünü bilmeniz gerekir. Bu nedenle, önce profil oluşturucu ve ancak ondan sonra performans soruları başlamalıdır.
Bu sonuca doğru eğildim. Bahşiş için teşekkürler.
Tünaydın. Aşağıdaki soru ortaya çıktı: neden MACD'ye bolinger bantları uyguladığımda, histogramın kendisi değil sinyal hattının değerleri alınır?
Tünaydın. Aşağıdaki soru ortaya çıktı: neden MACD'ye bolinger bantları uyguladığımda, histogramın kendisi değil sinyal hattının değerleri alınır?
Hesaplama için hangi grafik arabelleğinin kullanılacağını belirleme olanağınız var mı?