genel başlatma başarısız !!!!!!! - sayfa 6

 
SDC :

int start() yerine int OnCalculate() kullanırsınız. start() gibi her kene üzerinde çalışır. Bir öncesi ve sonrası şöyle görünürdü,

OnCalculate'in biçimsel parametreleri onu daha fazla kendi içinde barındırır, kodlayıcı, görünüşe göre oop çevrelerinde kötü kötü kodlayıcı, bileğe tokat gibi her türlü globali çağırmaya güvenmek zorunda değildir. Pratikte, ikisini de kullanmak arasında pek bir fark yoktur. Ayrıca OnCalculate, mql5 ile aynıdır, dolayısıyla uyumlu kod yazma seçeneğiniz vardır.


Teşekkürler, SDC. Sanırım neye vardığını görüyorum. MetaQuotes'un bununla gittiği yönü sevdiğimden emin değilim. Microsoft'un yaptığının aynısını yapıyorlar. Kodlamayı kolaylaştırabilir, ancak programcının "kaputun altında" gerçekten neler olduğunu anlama ihtiyacını ciddi şekilde azaltır. Bana göre bu çok büyük bir problem çünkü programcıların becerilerini ve anlayışlarını azaltıyor. Yaptığınız işin ustası olmak istiyorsanız, onu en temel seviyeden daha yüksek kavramlara kadar anlamışsınızdır. 1978 yılında programlamaya başladım. İkili ve sekizli kod yazdık. Artık çoğu insanın bir fikri olmazdı. Microsoft, programlama dillerini uzun yıllardır programcıyı gerçekte neler olup bittiğini bilmekten tamamen ayıran bir düzeye itiyor ve bu bizim yararımıza değil. Niyetleri, düşük seviyelerde gerçekten neler olup bittiğini yalnızca programcılarının ve diğer herkesin onlara güvenmek zorunda olduğunu görmektir.

Bahsettiğim şeye bir örnek, C++'dan C#'a evrimdir. Görünüşte, C# programcının hayatını kolaylaştırmak için düşük seviyeli "tesisat" yaparak onları kendileri için nasıl yapacaklarını bilme ihtiyacından kurtarır ve ayrıca süreçte geliştirme süresini hızlandırır. Elbette, bunu başardı, ama ne pahasına? Biz "eski zamanlayıcılar", doğrudan belleğe erişimi ve bunun nasıl kullanılacağını tamamen anlıyoruz. "Kaputun altında" neler olduğunu biliyoruz. Sık sık belirli bir miktarda bellek ayırmaya veya bellek baytını bayt veya bit bazında işlemem gerekiyordu. C#'ın yalnızca üst düzey "bulutunu" bilen birinin bir ipucu var mı? Hayır. Microsoft'u arayın.

Burada bir ranttan kurtulduğumu biliyorum ama MetaQuotes'un aynı yönde ilerlediğini düşünüyorum ve bu iyi bir şey değil. Gerçek zamanlı verilerle uğraşmak zorunda olan uygulamalar yazmaktan bahsettiğinizde kesinlikle iyi bir şey değil. Bizim arenamızda bir hata, birine çok pahalıya mal olabilir. Yalnızca kişisel kullanımım için tasarladığım bir uygulamayı bozarsam bununla yaşayabilirim. Sattığım bir uygulamayı mahvedersem, bu kabul edilemez.

BTW, OOP'de kullanılan globallerin ve MQL'de kullanılan globallerin aynı kavram olduğunu düşünmüyorum. MQL, gerçek bir nesne yönelimli dil olması açısından hala bir bebek. Aslında, "küresel" OOP'de hiçbir şey ifade etmez. Buna "statik" değişken denir ve türetilmiş bir hiyerarşideki tüm sınıfların yanı sıra aynı sınıftan oluşturulan tüm nesneler için kullanılabilir. Veri kapsülleme nedenleriyle ve özellikle bir uygulamadaki her şeyin bağlı olduğu çok yüksek seviyeli bir sınıfta kullanıldığında bir bakım kabusu olması nedeniyle hoş karşılanmaz.

 

Temel olarak, sayıları hesaptan almak istiyorsanız, sadece AccountBalance() kullanmanız gerekir.

Dolayısıyla, dengenin tam olarak nasıl türetildiğini gerçekten bilmek istiyorsanız, hiçbir fikriniz yok. Sadece geliştiriciler bilir.

 
ProfessorMetal :


Teşekkürler, SDC. Sanırım neye vardığını görüyorum. MetaQuotes'un bununla gittiği yönü sevdiğimden emin değilim. Microsoft'un yaptığının aynısını yapıyorlar. Kodlamayı kolaylaştırabilir, ancak programcının "kaputun altında" gerçekten neler olduğunu anlama ihtiyacını ciddi şekilde azaltır. Bana göre bu çok büyük bir problem çünkü programcıların becerilerini ve anlayışlarını azaltıyor. Yaptığınız işin ustası olmak istiyorsanız, onu en temel seviyeden daha yüksek kavramlara kadar anlamışsınızdır. 1978 yılında programlamaya başladım. İkili ve sekizli kod yazdık. Artık çoğu insanın bir fikri olmazdı. Microsoft, programlama dillerini uzun yıllardır programcıyı gerçekte neler olup bittiğini bilmekten tamamen ayıran bir düzeye itiyor ve bu bizim yararımıza değil. Niyetleri, düşük seviyelerde gerçekten neler olup bittiğini yalnızca programcılarının ve diğer herkesin onlara güvenmek zorunda olduğunu görmektir.

Bahsettiğim şeye bir örnek, C++'dan C#'a evrimdir. Görünüşte, C#, programcının hayatını kolaylaştırmak için düşük seviyeli "tesisat" yaparak onları kendileri için nasıl yapacaklarını bilme ihtiyacından kurtarır ve ayrıca süreçte geliştirme süresini hızlandırır. Elbette, bunu başardı, ama ne pahasına? Biz "eski zamanlayıcılar", doğrudan belleğe erişimi ve bunun nasıl kullanılacağını tamamen anlıyoruz. "Kaputun altında" neler olduğunu biliyoruz. Sık sık belirli bir miktarda bellek ayırmaya veya bellek baytını bayt veya bit bazında işlemem gerekiyordu. C#'ın yalnızca üst düzey "bulutunu" bilen birinin bir ipucu var mı? Hayır. Microsoft'u arayın.

Burada bir ranttan kurtulduğumu biliyorum ama MetaQuotes'un aynı yönde ilerlediğini düşünüyorum ve bu iyi bir şey değil. Gerçek zamanlı verilerle uğraşmak zorunda olan uygulamalar yazmaktan bahsettiğinizde kesinlikle iyi bir şey değil. Bizim arenamızda bir hata, birine çok pahalıya mal olabilir. Yalnızca kişisel kullanımım için tasarladığım bir uygulamayı bozarsam bununla yaşayabilirim. Sattığım bir uygulamayı mahvedersem, bu kabul edilemez.

BTW, OOP'de kullanılan globallerin ve MQL'de kullanılan globallerin aynı kavram olduğunu düşünmüyorum. MQL, gerçek bir nesne yönelimli dil olması açısından hala bir bebek. Aslında, "küresel" OOP'de hiçbir şey ifade etmez. Buna "statik" değişken denir ve türetilmiş bir hiyerarşideki tüm sınıfların yanı sıra aynı sınıftan oluşturulan tüm nesneler için kullanılabilir. Veri kapsülleme nedenleriyle ve özellikle bir uygulamadaki her şeyin bağlı olduğu çok yüksek seviyeli bir sınıfta kullanıldığında bir bakım kabusu olması nedeniyle hoş karşılanmaz.

Bence MQ'nun yönü mql4 - mql5 uyumluluğuna ulaşmaktır, OnTick, OnTimer, OnCalculate ve artık kullanmamız için mevcut olan bir dizi mql5 işleviyle şimdiden mql5 bölgesine sürüklendiğimizi göreceksiniz. Yine de kolaylaştırmadığını göreceksiniz. Yeni sürüm bizim için öncekinden daha zor olan herhangi bir şey varsa, eski mql4 gerçekten oldukça özensiz kod yazmamıza ve ondan kurtulmamıza izin verir, yeni sürüm bizden daha doğru olmamızı bekler.
 

Bu nedenle jeneratör artık kullanılamaz. Kod güncellenmedikçe, indi/ea'yı gerçekten kendiniz kodlamanız gerekir.

Pratik olarak disiplin, programlama yapmanın anahtarıdır. Zor, ama kodlamada daha güçlü hale geliyorsunuz.

 
SDC :
Bence MQ'nun yönü mql4 - mql5 uyumluluğuna ulaşmaktır, OnTick, OnTimer, OnCalculate ve artık kullanmamız için mevcut olan bir dizi mql5 işleviyle şimdiden mql5 bölgesine sürüklendiğimizi göreceksiniz. Yine de kolaylaştırmadığını göreceksiniz. Yeni sürüm bizim için öncekinden daha zor olan herhangi bir şey varsa, eski mql4 gerçekten oldukça özensiz kod yazmamıza ve ondan kurtulmamıza izin verir, yeni sürüm bizden daha doğru olmamızı bekler.


Ne hakkında konuştuğunu anlıyorum. Bazı belgelere bakıyordum ve yeni yöntemlerin kullanımını yanlış anladığımı fark ettim. OnStart() komut dosyalarının başlatılması içindir, OnCalculate() göstergeler için eski start() öğesinin yerini alır ve herkesin MQL'nin eski enkarnasyonunda kullandığı ve aynı zamanda yürütmeyi başlattığı birçok sayılan çubuk işinin yerini alması gerekir. yeni bir onay işareti alındığında (şu anda çalışmıyor olması koşuluyla) gösterge kodu ve son olarak OnTick(), EA'lar için start()'ın yerini alır. Diğer birçok değişiklikle birlikte, haklısınız - hayatımızı kolaylaştırmıyor çünkü "yeniden öğrenmemiz" gerekiyor ve bir süredir bu işin içinde olanlar ve bir dizi uygulamayı bir araya getirenler için, onları çalışır durumda tutmak için birçok yeniden yapılanmaya neden olur. Kendime gelince, MQL'yi daha yeni kavramaya başlamıştım ve bu beni iyiden iyiye kırdı. Öğrendiklerimin çoğunu şimdi olduğu gibi "öğrenmem" gerekiyor.

İşlerin daha katı olmasına gelince - bence bu iyi bir şey. Alışmak acı verici olabilir, ancak kullanıcılarımız ve kendimiz için maliyetli olabilecek hataların olasılığını azaltacaktır. Kurumsal dünyada, bizim tarafımızdan yapılan hataların kullanıcılarımıza büyük miktarda paraya (ve bizim işimize) mal olabileceği uygulamalar üzerinde çalışarak yıllarını geçirmiş birinin bakış açısına göre, doğruluk şampiyonuyum. Yine de, elde ettiğim şey, sizin için işin yarısını yapan OnCalculate()'i tanıtmak gibi şeyler yaparak, kaputun altında neler olup bittiğine dair anlayışınızı azaltmasıydı. C++'dan C#'a geçiş hakkında konuşurken deneyimden bahsediyorum. "Bunun nasıl çalıştığını" bilmekten "Bu düğmeye basıyorum ve bu oluyor" a geçtiniz. Belki Old School'um ama aptallığın iyi bir şey olduğunu düşünmüyorum. Bu yeniden mühendisliğin hem iyi hem de kötü noktaları var.

 
deysmacro :

Bu nedenle jeneratör artık kullanılamaz. Kod güncellenmedikçe, indi/ea'yı gerçekten kendiniz kodlamanız gerekir.

Pratik olarak disiplin, programlama yapmanın anahtarıdır. Zor, ama kodlamada daha güçlü hale geliyorsunuz.


Orada tartışma yok, Arkadaş. Doğruyu söylemek gerekirse, EA jeneratörlerinin hiç kullanılmamış olması gerektiğini düşünüyorum. Bir "kara kutu"nun gerçekte ne yaptığı hakkında hiçbir fikriniz yok. İkinci ifadenize gelince, sonuna kadar yanınızdayım.
 
ProfessorMetal :

"Bunun nasıl çalıştığını" bilmekten "Bu düğmeye basıyorum ve bu oluyor" a geçtiniz. Belki Old School'um ama aptallığın iyi bir şey olduğunu düşünmüyorum. Bu yeniden mühendisliğin hem iyi hem de kötü noktaları var.

Şu şekilde bakın: Herhangi bir kişinin veya hatta organize bir insan şirketinin MT4 gibi bir şeyi tamamen ikili koddan sıfırdan programlaması neredeyse imkansız bir iş olurdu. Etraftaki modern bilgisayar oyunlarından bahsetmiyorum bile. Yaşayan hiçbir insanın ikili, sekizli, onaltılı ve hatta Temel hakkında en ufak bir ipucunun bile olmayacağı bir zaman olacak. Önce elementler inşa edersiniz, sonra zaman geçtikçe bloklar alırsınız, sonra belki bütün hikayeler, bütün kitaplar. Her seferinde aynı eski shi_ olmasına rağmen, arsaları yeniden bir araya getiriyorsunuz ve görünüşte yeni bir şeyle sonuçlanıyorsunuz. Dünya değişir, insan aynı eski senaryoya takılıp kalamaz! Her zaman yeniden öğrenmeli, önce kılavuzu okumalı. Sonra tekrar, tekrar ve tekrar. Aksi halde insan geride kalır ve dinozor olur.

 
Dadas :

Şu şekilde bakın: Herhangi bir kişinin veya hatta organize bir insan şirketinin MT4 gibi bir şeyi tamamen ikili koddan sıfırdan programlaması neredeyse imkansız bir iş olurdu. Etraftaki modern bilgisayar oyunlarından bahsetmiyorum bile. Yaşayan hiçbir insanın ikili, sekizli, onaltılı ve hatta Temel hakkında en ufak bir ipucunun bile olmayacağı bir zaman olacak. Önce elementler inşa edersiniz, sonra zaman geçtikçe bloklar alırsınız, sonra belki bütün hikayeler, bütün kitaplar. Her seferinde aynı eski shi_ olmasına rağmen, arsaları yeniden bir araya getiriyorsunuz ve görünüşte yeni bir şeyle sonuçlanıyorsunuz. Dünya değişir, insan aynı eski senaryoya takılıp kalamaz! Her zaman yeniden öğrenmeli, önce kılavuzu okumalı. Sonra tekrar, tekrar ve tekrar. Aksi halde insan geride kalır ve dinozor olur.


Demek istediğini anlıyorum, Dadalar. Ve sana bir noktaya kadar katılıyorum. Ancak, birisi HER ZAMAN konuyu baştan sona bilmek zorunda kalacak ya da tüm kartlar evi çökecek. Size ne elde ettiğimin bir örneğini vereyim. Zamanımı profesyonel bir eğitimci olarak geçirdim. Matematik ve Fizik Bölümünde Yardımcı Doçent unvanına sahibim. Bir topluluk kolejinde ders verdim ve "kalıcı" Fizik Bölümümüz ben ve bölüm başkanından oluşuyordu.

O dönemde Matematik bölümü, öğrencilere istatistik, kalkülüs, lineer cebir vb. konuları bilgisayar veya hesap makinesi programları kullanarak öğreterek tüm öğretimin yapılması yönünde eğilim gösteriyordu. Onlara gerçek konular hakkında hiçbir şey öğretmiyorlardı. Tüm öğrencilere programların nasıl kullanılacağı öğretiliyordu. Bu matematik öğrenmek değil. Bazı sayıları girerek Başlat düğmesine basıyor ve "Git" düğmesine basıyor. Öğrencilerimin acı bir şekilde şikayet etmelerini sağladım çünkü tüm "talimatları" takip ettiler ve yine de sorunu yanlış anladılar. Onlara ilk sorum şuydu: "Hesap makinesinin verdiği cevap makul görünüyor mu?" Cevap? "Şey, uh, bilmiyorum." Neden bilmiyorlardı? Çünkü matematik hakkında bir bok bilmiyorlardı. Tek bildikleri bu düğmelere bu sırayla basmaktı ve hesap makinesi sihirli bir şekilde cevabı tükürecekti. YANLIŞ!

Şimdi asıl amacıma dönelim. Ortağım tamamen bunun lehindeydi. Onun mantığı? "Pekala, bir gün her şey böyle olacak. Kimsenin bizim yaptığımız gibi matematik ve fiziği gerçekten nasıl yapacağını bilmesine gerek kalmayacak. Programlar her şeyi yapacak." Benim yanıtım, "Evet, doğru. Ve aldıkları yanıtların "tamamen gerçekçi olmadığını" tam olarak nasıl bilecekler? Bu durumda, insanlar temel matematik işlemlerini bile yapamayacakları, çünkü makinenin bunu onlar için yapmasına izin verecek şekilde eğitildikleri bir noktaya geldiklerinde, bütün bu şeyleri kim yazacak ve sürdürecek?" Birinin "nasıl çalıştığını" ya da Jim Morrison'ın sözleriyle - bütün bok evinin alevler içinde olduğunu bilmesi gerekecek. İşte bu, arkadaşım, benim gibi dinozorların devreye girdiği yer. Tekmeler atıp çığlıklar atarak düşebilirim ama sonuna kadar öğretmeye devam edeceğim. Boktan ev alevler içinde kaldığında, bunun nedeni tembel yolu seçmem olmayacak. :-)

 
ProfessorMetal :


Demek istediğini anlıyorum, Dadalar. Ve sana bir noktaya kadar katılıyorum. Ancak, birisi HER ZAMAN konuyu baştan sona bilmek zorunda kalacak ya da tüm kartlar evi çökecek. Size ne elde ettiğimin bir örneğini vereyim. Zamanımı profesyonel bir eğitimci olarak geçirdim. Matematik ve Fizik Bölümünde Yardımcı Doçent unvanına sahibim. Bir topluluk kolejinde ders verdim ve "kalıcı" Fizik Bölümümüz ben ve bölüm başkanından oluşuyordu.

O dönemde Matematik bölümü, öğrencilere istatistik, kalkülüs, lineer cebir vb. konuları bilgisayar veya hesap makinesi programları kullanarak öğreterek tüm öğretimin yapılması yönünde eğilim gösteriyordu. Onlara gerçek konular hakkında hiçbir şey öğretmiyorlardı. Tüm öğrencilere programların nasıl kullanılacağı öğretiliyordu. Bu matematik öğrenmek değil. Bazı sayıları girerek Başlat düğmesine basıyor ve "Git" düğmesine basıyor. Öğrencilerimin acı bir şekilde şikayet etmelerini sağladım çünkü tüm "talimatları" takip ettiler ve yine de sorunu yanlış anladılar. Onlara ilk sorum şuydu: "Hesap makinesinin verdiği cevap makul görünüyor mu?" Cevap? "Şey, uh, bilmiyorum." Neden bilmiyorlardı? Çünkü matematik hakkında bir bok bilmiyorlardı. Tek bildikleri bu düğmelere bu sırayla basmaktı ve hesap makinesi sihirli bir şekilde cevabı tükürecekti. YANLIŞ!

Şimdi asıl amacıma dönelim. Ortağım tamamen bunun lehindeydi. Onun mantığı? "Pekala, bir gün her şey böyle olacak. Kimsenin bizim yaptığımız gibi matematik ve fiziği gerçekten nasıl yapacağını bilmesine gerek kalmayacak. Programlar her şeyi yapacak." Cevabım, "Evet, doğru. Peki, aldıkları yanıtların "tamamen gerçekçi olmadığını" tam olarak nasıl bilecekler? Bu durumda, insanlar temel matematik işlemlerini bile yapamayacakları, çünkü makinenin bunu onlar için yapmasına izin verecek şekilde eğitildikleri bir noktaya geldiklerinde, bütün bu şeyleri kim yazacak ve sürdürecek?" Birinin "nasıl çalıştığını" ya da Jim Morrison'ın sözleriyle - bütün bok evinin alevler içinde olduğunu bilmesi gerekecek. İşte bu, arkadaşım, benim gibi dinozorların devreye girdiği yer. Tekmeler atıp çığlıklar atarak düşebilirim ama sonuna kadar öğretmeye devam edeceğim. Boktan ev alevler içinde kaldığında, bunun nedeni tembel yolu seçmem olmayacak. :-)


O zaman sonun Don Kichote olacaksın.

Ve evet, bunu görecek kadar yaşamayacağız ama er ya da geç bu şekilde olacak. Sonuçta, hiç kimse tüm bu Evrenin nasıl ve neden çalıştığını bilmiyor, ama yine de çalışıyor. Evrenin kendisinden doğru cevapları alıp almadığınızı biliyor musunuz? Bunu nasıl bilebilirsin? Matematikçinin düşünme tarzını anlıyorum. Formüllerin her şeyi kontrol etmesini istiyorlar ve formüllerin nereden geldiğini bilmek/anlamak istiyorlar, c/z kontrolün onda olmasını istiyorlar. 2+2=4, ama neden? Bu gerçekten doğru cevap mı? Gerçek şu ki, asla kontrol sizde olamaz.

Ve her şey söylenip yapıldıktan sonra, "küresel başlatma başarısız" oluyor ve kimse bunun nedenini veya nasıl düzeltileceğini gerçekten bilmiyor.

 
Dadas :


O zaman sonun Don Kichote olacaksın.

Ve evet, bunu görecek kadar yaşamayacağız ama er ya da geç bu şekilde olacak. Sonuçta, hiç kimse tüm bu Evrenin nasıl ve neden çalıştığını bilmiyor, ama yine de çalışıyor. Evrenin kendisinden doğru cevapları alıp almadığınızı biliyor musunuz? Bunu nasıl bilebilirsin? Matematikçinin düşünme tarzını anlıyorum. Formüllerin her şeyi kontrol etmesini istiyorlar ve formüllerin nereden geldiğini bilmek/anlamak istiyorlar, c/z kontrolün onda olmasını istiyorlar. 2+2=4, ama neden? Bu gerçekten doğru cevap mı? Gerçek şu ki, asla kontrol sizde olamaz.

Ve her şey söylenip yapıldıktan sonra, "küresel başlatma başarısız" oluyor ve kimse bunun nedenini veya nasıl düzeltileceğini gerçekten bilmiyor.


LOL Sanırım Don Kişot demek istedin. Her neyse, mesele şu ki, gerçekten neyle çalıştığımızı anlamamız gerekiyor ya da nihai başarısızlığa doğru gidiyoruz.