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
Statik değişken , kalıtım olmadan bile tüm örnekler için bir olacaktır.
kontrol edildi, evet! her şey daha kolaydı!
2019.08.29 15:14:09.847 tst__ EURUSD,M15: başlatıldı
2019.08.29 15:14:09.847 tst__ EURUSD,M15: B::Bru
2019.08.29 15:14:09.847 tst__ EURUSD,M15: B::Bru
2019.08.29 15:14:09.847 tst__ EURUSD,M15: B::Bru
2019.08.29 15:14:09.847 tst__ EURUSD,M15: B::Bru
2019.08.29 15:14:09.847 tst__ EURUSD,M15: B::Bru
2019.08.29 15:14:09.847 tst__ EURUSD,M15: MyTerminalInfoString
Dil değişkeninin yalnızca bir kez başlatıldığını görüyorum, yani. bu daha basit bir çözüm
Teşekkür ederim!
Söyle bana, farklı olan ne?
Bunun gibi bir nesne veya işaretçi oluşturma
klasik yaratılıştan
C++'daki 1. durumda CClass sınıf tanımlayıcısının isteğe bağlı olmasıyla farklılık gösterir.
burada alanları bir kez sabit değerlerle başlatması gereken sınıfımı çizdim, her şey amaçlandığı gibi çalışıyor gibi görünüyor:
2 şeyi sevmiyorum:
1. SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP) çağrısını tekrarlıyorum - çünkü başlatma sırası belirtilmemiş, yani. önce VolumeSTEP'in başlatılacağı gerçeği değil, ancak o zaman GetDigitsInVolumeStep() çağrılacak
2. Statik int GetDigitsInVolumeStep() yöntemini kullanmaktan kurtulmak istiyorum - YouTube'da statik yöntemleri saf OOP'de kullanmanın iyi olmadığı yeterince video gördüm, bu yüzden yel değirmenleriyle savaşıyorum
videoya bağlantılar, temelde aynıdır https://youtu.be/lfdAwl3-X_c ve https://youtu.be/zME4SOCHT0I
Sevmediğim bu 2 noktayı farklı nasıl yeniden yazardım?
1. SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP) çağrısını tekrarlıyorum - çünkü başlatma sırası belirtilmemiş, yani. önce VolumeSTEP'in başlatılacağı gerçeği değil, ancak o zaman GetDigitsInVolumeStep() çağrılacak
1. yani statiğin başlatma sırasının tanımsız olduğundan mı korkuyorsunuz? Genel olarak, bu böyle değildir, artılarda, başlatma koddaki tanım sırasına göredir. Endişelenmeyin, önce VolumeSTEP ve ardından VolumeDIGITS.
1. yani statiğin başlatma sırasının tanımsız olduğundan mı korkuyorsunuz? Genel olarak, bu böyle değildir, artılarda, başlatma koddaki tanım sırasına göredir. Endişelenmeyin, önce VolumeSTEP ve ardından VolumeDIGITS.
evet, korkmuyorum, diyelim ki kendimi koruyorum, kodun en azından derleme davranışını değiştirmeye karşı bir garantisi olması gerektiğini düşünüyorum - genel olarak, EVET
Not: burada, genel olarak, konu neden günde bir kereden fazla ödeniyor - Videodaki gibi bir şey yapmanın ne kadar gerçekçi olduğunu görmek istiyorum, diyor yazar Yegor , etkili bir şey çıkacağından şüpheliyim - şimdi Zaten statik yöntemler kullanıyorum ve şimdiden bazı başlatma şüpheleri ortaya çıktı
1. yani statiğin başlatma sırasının tanımsız olduğundan mı korkuyorsunuz? Genel olarak, bu böyle değildir, artılarda, başlatma koddaki tanım sırasına göredir. Endişelenmeyin, önce VolumeSTEP ve ardından VolumeDIGITS.
MQL'de de
https://www.mql5.com/ru/docs/basis/oop/staticmembers
evet, korkmuyorum, diyelim ki kendimi koruyorum, kodun en azından derleme davranışını değiştirmeye karşı bir garantisi olması gerektiğini düşünüyorum - genel olarak, EVET
Not: Burada, genel olarak, neden bir günlüğüne ödediğim konu - Videodaki gibi bir şey yapmanın ne kadar gerçekçi olduğunu görmek istiyorum, diyor yazar Egor , etkili bir şey çıkacağından şüpheliyim - şimdi Zaten statik yöntemler kullanıyorum ve şimdiden bazı başlatma şüpheleri ortaya çıktı
Bunun gibi bir şey kullanın:
Ve bunun gibi kodda:
Bunun gibi bir şey kullanın:
Ve bunun gibi kodda:
ATP, biraz yanlış hedef belirledim, böylece yapabilirim
İşte elde etmek istediğim şey:
1. CDeal sınıfı bağımsızdır, sırasını tek bir stratejiye göre açar/kapatır/eşlik eder - stratejiler, optimize edicideki stratejiler karışımında gezinmek için bir numaralandırmadır
2. madde 1'e dayanarak, SYMBOL_VOLUME_MAX, SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_STEP terminal ortam değişkenlerine ve SYMBOL_VOLUME_STEP içindeki karakter sayısına sahip olmak için başka hiçbir yere ihtiyacım olmadığı ortaya çıktı - bu, MQL programının çalışması sırasında değişmez
3. Paragraf 1 ve 2'ye dayanarak - Bir siparişi açma/kapatma/takip etme yöntemlerini ve sipariş özelliklerini tek bir CDeal sınıfında özetleyebilirim - Tüm bunları gelecekte hiçbir yerde kullanmayacağım, değil mi? ? - böylece her şeyi tek bir sınıfa sığdırabilirim
pp 1-3 her şey çözüldü, AMA .. Tamam, statik konusunda yardımcı oldular, bu yüzden bir sertifika olduğu için, en azından kararınızı haklı çıkarabileceğiniz bir şeyle, şimdi kod şöyle:
günlükte alınan 3 Cdeal örneği oluşturuldu:
2019.08.29 21:53:53.613 AnyGrid_v1.00 EURUSD,M30: başlatıldı
2019.08.29 21:53:53.613 AnyGrid_v1.00 EURUSD,M30: Cdeal::CdealVolumeMAX = 100000.0 , VolumeMIN = 0.01 , VolumeSTEP = 0.01 , VolumeDIGITS = 2
2019.08.29 21:53:53.613 AnyGrid_v1.00 EURUSD,M30: Cdeal::CdealVolumeMAX = 100000.0 , VolumeMIN = 0.01 , VolumeSTEP = 0.01 , VolumeDIGITS = 2
2019.08.29 21:53:53.613 AnyGrid_v1.00 EURUSD,M30: Cdeal::CdealVolumeMAX = 100000.0 , VolumeMIN = 0.01 , VolumeSTEP = 0.01 , VolumeDIGITS = 2
2019.08.29 21:53:53.613 AnyGrid_v1.00 EURUSD,M30: Cdeal::GetDigitsInVolumeStep
şimdiye kadar her şey amaçlandığı gibi çalışıyor!
onlar. şimdi tekrar eden kod bölümleri yok (çağrılar) - bu etkili bir koddur, ANCAK statik işlevi kullanmaktan nasıl kurtulur static int Cdeal::GetDigitsInVolumeStep() - videonun planına göre, yazar bunun olduğuna inanıyor OOP kodunu statik işlevler olmadan yazmak mümkün, hala ne olduğunu görüyorum, sadece uygunsuz değil, aynı zamanda Get ve Set yöntemleri hakkında tüm bunları kullanmak her zaman mümkün değil - büyük olasılıkla onlarsız yapacağım, o zaman biz 'görüşürüz
Statik alana sahip seçeneğin büyük bir dezavantajı vardır. Bu sınıfın farklı örneklerinde bu alan için farklı değerlere sahip olamayacaksınız.
evet, ATP, bunu biliyorum, görev sadece gereksiz değişkenler ve gereksiz bellek kullanımı olmadan verimli bir kod elde etmektir.
soru çözülmeden kalana kadar: statik işlevi kullanmaktan nasıl kurtulur static int Cdeal::GetDigitsInVolumeStep()
burada alanları bir kez sabit değerlerle başlatması gereken sınıfımı çizdim, her şey amaçlandığı gibi çalışıyor gibi görünüyor: