Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1332
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
Belgeler ve forum aracılığıyla kazıldı ...
Aşağıdaki satırla OnInit() içinde oluşturulmuşlarsa, nesne işaretçi türünün genel değişkenleri [var örneğinde] nasıl yapılır:
dahası, yapıcıların nesne ve parametrelerinin sayısı önceden bilinmez ve OnInit() ?
Kolayca.
Merhaba
MT5'in artı düğmesi var
grafiğe tıkladığınızda kaç çubuk, kaç puan ve yüzde bilgisini gösterir.
robota bağlayabilmeniz için bu değeri doğru bir şekilde nasıl hesaplayacağınıza yardımcı olun
Teşekkür ederim
Zaten yeni bir bar sınıfı var mı?
Ve giriş parametreleri tam olarak neye benziyor?
Sınıf şu siteden ödünç alınmıştır: https://www.mql5.com/en/code/768 , küçük değişiklikler yapılmıştır.
Aşağıdaki şekilde uygulanması amaçlanmıştır:
Kolayca.
Cevap için teşekkürler)
İlk başta sadece bunu yaptım.
Böylece nesne, yapıcı tarafından parametrelerle birlikte, önce boş, sonra beklendiği gibi iki kez oluşturulur.
Ama ... Aynı zamanda, derleyici OnInit() içindeki satırda bir uyarı görüntüler:
'var1' bildirimi, OnInit() içindeki satır başına global değişkeni -> gizler
önceki 'var1' beyanına bakın
Yani yerel bir değişken global olanı gizler... ve ne olur?
O zaman başka bir işlev, örneğin OnTick() tarafından hangi değişken görülüyor? Global =NULL'umuz var, yerel olan doğru şekilde başlatıldı, ancak başka bir işlev onu göremiyor ...
Sınıf şu siteden ödünç alınmıştır: https://www.mql5.com/ru/code/768 , küçük değişiklikler yapılmıştır.
Aşağıdaki şekilde uygulanması amaçlanmıştır:
Giriş parametrelerinden tüm alt dizileri çıkarmanız, bunları sembollerin adlarını ve bunlara karşılık gelen zaman çerçevelerini yapmak için kullanmanız gerekir.
Ardından, bu listelerden yeni çubuk nesneleri oluşturun ve işaretçiyi, global düzeyde bildirilen CArrayObj'de oluşturulan her "Yeni çubuk" nesnesine yerleştirin.
Ayrıca - OnTimer()'da bu listedeki bir döngüde, içindeki bir sonraki nesneye bir işaretçi alın ve yeni bir çubuğun varlığını kontrol edin. Değilse bir sonrakine geçiyoruz, varsa yeni bir bar açarken yapılması gerekeni yapıyoruz.
Zamanlayıcıyı ihtiyaçlarınıza göre - milisaniye, saniye, dakika - genel olarak, geçerli olmayan bir sembol üzerindeki yeni bir çubuğa tepki vermek için yeterli olduğunu düşündüğünüz sıklıkta yapın.
Cevap için teşekkürler)
İlk başta sadece bunu yaptım.
Böylece nesne, yapıcı tarafından parametrelerle birlikte, önce boş, sonra beklendiği gibi iki kez oluşturulur.
Ama ... Aynı zamanda, derleyici OnInit() içindeki satırda bir uyarı görüntüler:
'var1' bildirimi, OnInit() içindeki satır başına global değişkeni -> gizler
önceki 'var1' beyanına bakın
Yani yerel bir değişken global olanı gizler... ve ne olur?
O zaman başka bir işlev, örneğin OnTick() tarafından hangi değişken görülüyor? Global =NULL'umuz var, yerel olan doğru şekilde başlatıldı, ancak başka bir işlev onu göremiyor ...
Yakından bak. Doğru yapmadın.
Giriş parametrelerinden tüm alt dizileri çıkarmanız, bunları sembollerin adlarını ve bunlara karşılık gelen zaman çerçevelerini yapmak için kullanmanız gerekir.
Ardından, bu listelerden yeni çubuk nesneleri oluşturun ve işaretçiyi, global düzeyde bildirilen CArrayObj'de oluşturulan her "Yeni çubuk" nesnesine yerleştirin.
Ayrıca - OnTimer()'da bu listedeki bir döngüde, içindeki bir sonraki nesneye bir işaretçi alın ve yeni bir çubuğun varlığını kontrol edin. Değilse bir sonrakine geçiyoruz, varsa yeni bir bar açarken yapılması gerekeni yapıyoruz.
Zamanlayıcıyı ihtiyaçlarınıza göre yapın - milisaniye, saniye, dakika - genel olarak, geçerli olmayan bir sembol üzerindeki yeni bir çubuğa tepki vermek için yeterli olduğunu düşündüğünüz frekansı ayarlayın.
Bunun gibi bir şey yaptım, ancak ArrObj.At (0) 'da sınıfın üye işlevleri çağrılmıyor ...
Yakından bak. Doğru yapmadın.
zaten fark ettim)
Yani, çıkış yolu, küresel olarak boş nesneler ilan etmektir ....
Ve eğer önceden bilinmiyorsa, kaç tane olacak? Sadece "bir marjla" ilan etmek mi? :)
PS Yerleşik yardımda, nesneleri bildirmenin böyle bir yolunu bulamadım
CObj* var1 = NULL ;
zaten fark ettim)
Yani, çıkış yolu, küresel olarak boş nesneler ilan etmektir ....
Ve eğer önceden bilinmiyorsa, kaç tane olacak? Sadece "bir marjla" ilan etmek mi? :)
CarrayObj'a koyun.
ArrObj.At(0) işlevi , türetilmiş sınıfın üyeleri hakkında hiçbir şey bilmeyen temel sınıfa bir işaretçi döndürür.
Onlara erişmek için bir tür dönüşümü yapmanız yeterlidir.
CIsNewBar* newBar = (CIsNewBar*)ArrayObj.At( 0 ); newBar.method( parameter );
CarrayObj'a koyun.
ArrObj.At(0) işlevi , türetilmiş sınıfın üyeleri hakkında hiçbir şey bilmeyen temel sınıfa bir işaretçi döndürür.
Onlara erişmek için bir tür dönüşümü yapmanız yeterlidir.
Cevap için teşekkürler, hiç de kötü değilsin)
Şimdi belli oldu.)
UPD
Bu tasarım da işe yarıyor
CIsNewBar* newBar = ArrayObj.At( 0 ); newBar.method( parameter )