Beta derleme 530'da dizi yeniden boyutlandırma hatası - sayfa 5

 
angevoyageur :

Test etmek ve diğer terminalin güncellenmesini önlemek istiyorsanız, aşağıdaki klasörü kaldırmanız gerekir:

  • Windows 7 : C: \ ProgramData \ MetaQuotes \ WebInstal Başarılı bir güncellemeden sonra, diğer terminallere giden test terminali güncellenmez.
  • Windows XP : C: \ Documents and Settings \ All Users \ Application Data \ MetaQuotes \ Webinstall \

Bu bilgi (muhtemelen Rus forumundan alınmıştır) artık güncel değildir. v534'ten itibaren, Win7+ güncellemesi %appdata%\metaquotes\webinstall'a yerleştirilir, %programdata%\metaquotes\webinstall'a değil.

Sonraki sürümlerde tekrar değişebilir.

 
cyclops993 :

Bu bilgi (muhtemelen Rus forumundan alınmıştır) artık güncel değildir. v534'ten itibaren, Win7+ güncellemesi %appdata%\metaquotes\webinstall'a yerleştirilir, %programdata%\metaquotes\webinstall'a değil.

Sonraki sürümlerde tekrar değişebilir.

Teşekkür ederim.
 
angevoyageur :

Profesyonel bir programcı olduğum için muhtemelen iyi bir örnek değilim. Yani benim için çok büyük bir çaba değil ve yeni programlama dili öğrenmeyi seviyorum. Benim de oop ile biraz deneyimim var.

. . . . .

Çoğunlukla yazdıklarınıza katılıyorum, yazılım mühendisi değilim ama mql5 ile biraz uğraştım ve yazdığım kodda herhangi bir OOP kullanmam gerekmedi. . . ancak, diğer insanların kodlarını okuyup anlayarak çok şey öğreniyorum, OOP'nin arkasındaki prensibi anlamadan bazı mql5 kodlarını takip etmek zor olabilir.
 
RaptorUK : Çoğunlukla yazdıklarınıza katılıyorum, yazılım mühendisi değilim ama mql5 ile biraz uğraştım ve yazdığım kodda herhangi bir OOP kullanmam gerekmedi. . . ancak, diğer insanların kodlarını okuyup anlayarak çok şey öğreniyorum, OOP'nin arkasındaki prensibi anlamadan bazı mql5 kodlarını takip etmek zor olabilir.

Imo, OOP, Kapsülleme, Soyutlama, Kalıtım ve Polimorfizme inanmayı içerir. Soyutlama nedeniyle başka birinin kodlarını "takip edebileceğinizi" sanmıyorum. Bilmen gereken tek şey ne işe yaradığı . Daha ciddi bir kayda göre, OOP'nin && IDE dili tarafından desteklenen && desteklenen bir organizasyon/kataloglama düzeyi sağladığına inanıyorum. Bir programcının çok fazla organizasyonu olamaz, bu muhtemelen çoğu programcı için gelecekteki projelerde zaman tasarrufu sağlar.

 

Madalyonun her iki tarafına da aşina olan birinden iyi bir fikir olan cevabınız için teşekkürler angelvoyager, Raptor ile aynı gemideyim, oop kavramları ilgimi çekmeye başladı ve bu konuda daha fazla şey öğrenmek istiyorum, onun hakkında daha fazla bilgi edinmek istiyorum. mql5 özellikleriyle bile mql4'ü kullanmaya devam etmek için tamamen gerekli olmadığını bilmek güzel, ancak yine de, oop kavramlarına ve ilkelerine göre kodlamanın avantajlarının neler olduğunu ve küçük bir projeyi kodlamak için ne kadar iyi uygulandıklarını anlamak istiyorum. EA gibi.

 

Bir EA'yı kodladığımda, genellikle, şeylerin mevcut durumunu biriktiren ve bu bilgiyi, ne olduğuna karar vermek için aynı dizilerdeki bilgileri kullanan çevresel işlevlerle çevrili küresel dizilerde depolayan merkezi bir hub işlevi olan birinci kitaba benzer olur. yapmak için, her biri parti büyüklükleri gibi şeyleri hesaplamak için diğer yardımcı işlevleri çağırır. start() işlevi sadece önce merkezi hub işlevini, ardından öncelik sırasına göre çevresel işlevleri çağırır. Her şeyin bu dizilere küresel erişime odaklandığı gerçeğini hiçbir zaman gerçekten sevmemiş olmama rağmen, bu temel yapı oldukça iyi çalışıyor, ancak bunu yapmanın farklı bir yolunu arayacak kadar beğenmedim. Başka bir deyişle, yeterince iyi çalışıyor, bu yüzden onu düzeltmeye çalışmadım lol.

Bir oop yaklaşımının bundan nasıl farklı olacağını ve bunun avantajlarının ne olacağını bilmek istiyorum.

 
SDC : Bir EA'yı kodladığımda, genellikle birinci kitaba benzer hale gelir, şeylerin mevcut durumunu toplayan ve bu bilgiyi, aynı dizilerdeki bilgileri kullanan çevresel işlevlerle çevrili küresel dizilerde saklayan merkezi bir hub işlevidir. ne yapılacağına karar verin, her biri parti büyüklükleri gibi şeyleri hesaplamak için diğer yardımcı işlevleri çağırır. start() işlevi sadece önce merkezi hub işlevini, ardından öncelik sırasına göre çevresel işlevleri çağırır. Her şeyin bu dizilere küresel erişime odaklandığı gerçeğini hiçbir zaman gerçekten sevmemiş olmama rağmen, bu temel yapı oldukça iyi çalışıyor, ancak bunu yapmanın farklı bir yolunu arayacak kadar beğenmedim. Başka bir deyişle, yeterince iyi çalışıyor, bu yüzden onu düzeltmeye çalışmadım lol.

Bir oop yaklaşımının bundan nasıl farklı olacağını ve bunun avantajlarının ne olacağını bilmek istiyorum.

Bir program akışını tanımladığınıza inanıyorum. OOP'nin arkasındaki big_idea'nın bu olduğunu sanmıyorum. (imo) OOP aşağıdaki sorunları çözmeye çalışır. Ben bir OOP noob'um, ancak dünya görüşümü bunun üzerine oluşturuyorum.

1) Fonksiyonlarınız global_variables'dan bağımsız mı? other_words'de, işlevleriniz tek başına nesneler mi? kapsülleme

2) İşleviniz local_variable_names gibi ayrıntıları gizliyor mu? Ekrandaki kodların hacmini basitleştiriyor mu? Soyutlama

3) Değişiklikler için kendisinin kopyalarını oluşturma yeteneği var mı? Kendi veri türlerinizi oluşturma yeteneği gibi mi? Miras.

4) Anında değişme özelliği var mı? Örnek: İşlev, tamsayı_dizinin yanı sıra çift_dizileri de işleyebilir mi? polimorfizm.

OOP'nin ea oluşturmada yardımcı olabileceği yollar, bir ea_builder'ın programcı olmayan bir uzman_advisor oluşturmasına nasıl yardımcı olduğuna benzer. En sevdiğiniz Order_Accounting_Function -> Data_Function -> Event Tracking Function -> Volume Defining Function -> Trading Criteria Defining Function -> Trade Functions -> Hata İşleme Fonksiyonunuzu alın. Ve patlama, bir Expert_Advisor'ınız var. Yıllar içinde geliştirdiğiniz tüm İşlem Kriterlerini Tanımlayan İşleviniz kolayca içeri veya dışarı değiştirilebilir.

Örnek olarak ben, eğer uzman danışmanımı değiştirmek isterseniz, global değişkenlerimin nerede uygulandığını ve buna başka hangi işlevin bağlı olduğunu (durum veya durum dizilerinizde olduğu gibi) incelemeniz gerekir. OOP onu as_simple_as Accounting(Option_3) yapar; Görüntüle(Seçenek_1); Altyazı(Seçenek_5); TradingSys(Option_7); HacimBoyutu(Seçenek2); OrderType(Option_2) ve tüm uzman bu.

Bu, bir başkasının kitaplık setinizi kullanmasını kolaylaştırır ve genellikle bir başkası için işe yarayan şey, gelecekte bir süre sizin için de işe yarar. Başka bir şey değilse, bir montaj hattındaki bağımsız nesneleri düşünün :)

 
*** Not: (Bunu unutmak istemiyorum). Elbette çoğumuz kullandığımız kodların içinde ne olduğunu bilmemekten hoşlanmıyoruz. Ya da bir başkasından gelen kodları anlamaya çalışmakla kendimizi tüketiyoruz, yoksa muhtemelen kullanmazdık. Ancak, mql4'teki Yerel işlevlerin çoğu (örnek OrderSend() ) bizim bakış açımızdan Nesnelerdir. Kodlarını görmüyoruz, ancak kabul ediyoruz. Diğer insanların kitaplıklarının bu kabulünün, büyük projeler üzerinde çalışan bir profesyonel_oop_programcının kabul etmesi ve üzerine inşa etmesi gereken bir şey olduğuna inanıyorum. Aksi takdirde, tekerleği yeniden yaratmakta mahsur kalırsınız.
 

EA'mın en son sürümü buna yaklaşıyor, artık hepsi dosya içeriyor ancak en azından bazı değişiklikler yapılmadan kutudan çıkarılacak kadar sağlam değiller. Sıklıkla yaptığım hata, kendimi, olaylardan sonraya kadar belirsiz olması gereken işlevlere kriterlere özel kod yazarken yakalayamamam ve glabal dizilere çok fazla güvenmeleri, zamanım olduğunda daha fazla yerel dizi ve daha fazlasını kullanacağım. daha az küresel erişimi telafi etmek için parametrelerin geçirilmesi.

 
ubzen :
***Not: (Bunu unutmak istemiyorum). Elbette çoğumuz kullandığımız kodların içinde ne olduğunu bilmemekten hoşlanmıyoruz. Ya da bir başkasından gelen kodları anlamaya çalışmakla kendimizi tüketiyoruz, yoksa muhtemelen kullanmazdık. Ancak, mql4'teki Yerel işlevlerin çoğu (örnek OrderSend() ) bizim bakış açımızdan Nesnelerdir. Kodlarını görmüyoruz, ancak kabul ediyoruz. Diğer insanların kitaplıklarının bu kabulünün, büyük projeler üzerinde çalışan bir profesyonel_oop_programcının kabul etmesi ve üzerine inşa etmesi gereken bir şey olduğuna inanıyorum. Aksi takdirde, tekerleği yeniden yaratmakta mahsur kalırsınız.
Bir fark var . . . Sipariş vermek istersem OrderSend() kullanmaktan başka seçeneğim yok. . . Başkasının kitaplığını kullanma ya da kullanmama seçeneğim var. . . Kaynağa saygı duyulsa bile, kullanmaya çalışmadan önce onu anlamaya çalışırım, bazı hatalar bu şekilde bulunur ve düzeltilir: https://www.mql5.com/en/forum/133792/page3 " Ve benim düzeltmem RaptorUK's yorum : "

Neden: