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
İşte bir dosyadan okumak için kod:
Neden FileReadString() ?
FileReadArray () kullanmak daha iyi değil, o zaman döngü gerekli değildir.
Neden FileReadString() ?
FileReadArray () kullanmak daha iyi değil, o zaman döngü gerekli değildir.
Roş :
Bir dosyaya eşitlik değerleri yazın. Ardından bu değerlere dayalı bir gösterge oluşturun. Ancak, test sırasında dosyalar agent_name/MQL5/Files klasörüne yazıldığından, veri dosyasının manuel olarak aktarılması gerekecektir.
Her şeyin ne kadar berbat olduğunu ancak şimdi anladım.
Ancak yüzlerce testten bahsettiğimiz için manuel olarak bu soruna bir çözüm olmadığı açıktır.
Ve öyle görünüyor ki: başlangıçta mevcut veriler var, ama - ah, Mucize! -- program öyle bir şekilde tasarlanmıştır ki, onları programlı olarak çıkarılıp kullanılana kadar bir şekilde ve bir yere kaydetme imkanı yoktur!
Profesyonel bir programcı değilim ama bu durum kafama oturmuyor.
Büyük belgeler .., binadaki en geniş olasılıklar, öyle görünüyor ki, her şey ve her şey .., bellek yönetimi, OOP ve burada, temelde basit ve kritik olarak gerekli (umarım zaten açıklamışımdır) - bir çıkmaz sokak.
... Ve yine de ... Soru!
Daha sonra bir gösterge oluşturmak için kullanılabilecek bir tür silinemez program dizilerine test modunda yazmak gerçekten mümkün değil mi?
dahil Global bir değişken aracılığıyla böyle bir diziye bir işaretçi iletmek mümkün müdür?
Ve mevcut uygulama açısından değil, prensip olarak test aşaması ile ana çalışmanın zamanı arasında veri depolama ve aktarma genel sorunu nedir?
Renat yüzlerce megabayt veriden bahsetmiş ama birincisi neden hep veri aktarımı, eğer böyle bir imkan ancak programcının doğrudan iradesiyle sağlanabiliyorsa ve ikincisi görev anlamında veri miktarı çok daha az, ve birkaç bin haneye tekabül etmektedir.
Kullanıcının bakış açısından, tekrarlanan testler sırasında dosyaları manuel olarak aktarma seçeneğinin (ve karmaşıklığı nedeniyle pazarın tekrar gerektirdiğinden) kesinlikle elverişsiz ve ümitsiz olduğunu, aynı zamanda ben hazırım Hesap bakiyesi göstergelerinin dinamiklerinin, test tarihi üzerindeki fiyatların dinamikleri ile doğrudan korelasyon içinde olduğunu herkesle tartışmak, genel olarak en önemlilerinden biridir.
Dosyaları okuma modunda açma işlemlerinin ana modunda, kapsamı test cihazının dosyalar klasörüne genişletme sorusu nedir? Bunda varsayımsal bir tehdit bile ne olabilir?
Ve RAM'de ana mod ile test modu arasında gerekli verilerin zorunlu olarak saklanması olasılığının olmaması sorunu nedir?
Diskte rastgele bulunan klasörlerden dosya yazmak ve okumak için dll kullanın. Sadece dosya yazma ve okuma fonksiyonlarını dll'ye aktarın, hepsi bu.
... Ve yine de ... Soru!
Daha sonra bir gösterge oluşturmak için kullanılabilecek bir tür silinemez program dizilerine test modunda yazmak gerçekten mümkün değil mi?
Bir dosyayı açarken FILE_COMMON bayrağını belirtmeyi deneyin - https://www.mql5.com/ru/docs/constants/io_constants/fileflags
tanımlayıcı
Anlam
Tanım
FILE_COMMON
4096
Tüm istemci terminallerinin paylaşılan klasöründeki dosya konumu. Bayrak, dosyaları açarken ( FileOpen() ), dosyaları kopyalarken ( FileCopy() , FileMove() ) ve dosyaların varlığını kontrol ederken ( FileIsExist() ) kullanılır.
Bir dosyayı açarken FILE_COMMON bayrağını belirtmeyi deneyin - https://www.mql5.com/ru/docs/constants/io_constants/fileflags
Bu betiği çalıştırın ve nereye yazdığını görün
joo, Rash, teşekkürler!
Paylaşılan klasör seçeneği daha entegre görünüyor.
Şaşırtıcı olan tek şey, bu kod çalıştırıldığında, gösterge içinde, yazma işleminin kendisi hala gerçekleştirilmesine rağmen, başarısız bir yazma ile ilgili bir mesajın görüntülenmesidir. Ayrıca, veri yazmanın tam olarak nasıl ve ne zaman daha iyi olduğu hakkında hala açık bir soru var (her onay için ayrı ayrı, ancak bu kaynak yoğundur veya en sonunda - bütün bir dizi, ancak dizi yazarken bir şey olmaz henüz oldukça doğru ve dahası, bu durumda OnCalculated'ın çıkarılmasına nasıl etki edeceğini anlamak zor - ikincisinde, testten sonra geçer mi?)
Ve başka bir soru, biraz konu dışı, ancak konuyla ilgili dün zaten gündeme geldi.
OnTick'e ve OnCalculated'a eklendi:
ancak test tamamlandıktan sonra, açılış ve kapanış konumlarıyla ilişkili nesnelerin varlığına rağmen (Terminal: Grafikler>Nesneler>Nesne Listesi'nde oklar ve çizgiler görülebilir), döndürülen değer nedense 0'dır.Bir dosyaya mümkün olduğunca nadiren yazmak daha iyidir, bu nedenle bütün bir dizi olarak yazmak daha iyidir. Değerleri dakikada bir kereden fazla ölçün, aksi takdirde grafikte görüntüleme ile ilgili sorunlar olacaktır (ve makul olmayan bir şekilde kaynak yoğundur). Yani koşunun sonunda. Ancak bu seçenek de mümkündür:
Algoritma şöyle görünür:
1) Test cihazında Expert Advisor'ı başlattı.
2) Faizin değerini ölçtük.
3) Bu değeri dosyaya yazın .
4) Ayrı bir dosyaya doğru yazıldı, yani yeni bir değer yazıldı
5) Çıkış koşulu, bayraklı dosyadaki yanlış bayrak olan sonsuz bir döngü başlattı.
6) Ayrı bir çizelgede script bayraklı dosyayı okur, eğer yeni bir değer belirirse daha sonra çizelgeye risk çizer, dosyaya false yazar.
Test cihazındaki görsel test modu bu şekilde görünecektir.
Biraz bekleyin rekabet biter, belki daha şık ve güzel çözümler sunulur.
joo, Rash, teşekkürler!
Paylaşılan klasör seçeneği daha entegre görünüyor.
Şaşırtıcı olan tek şey, bu kod çalıştırıldığında, gösterge içinde, yazma işleminin kendisi hala gerçekleştirilmesine rağmen, başarısız bir yazma ile ilgili bir mesajın görüntülenmesidir.
Böyle bir şey anlamıyorum. Denemek:
Böyle bir şey anlamıyorum. Denemek:
Roş
, Sebebinin tam olarak ne olduğunu anlayamıyorum, ancak göstergelerimin aksine, sizinkiyle başlattığınızda bir mesaj görüntüleniyor:Kodunuza dayanarak, şimdi tüm Özkaynak değerlerini bir dosyaya tik tik olarak yazması gereken en basit Uzman Danışmanı yaptım (kodda, yazılan sıfır bayt sayısı da dahil olmak üzere yalnızca herhangi birinin çıktısını değiştirdim, yapılan değişkenler globaldir ve dosyayı açma ve yazma işlemini OnInit ve OnTick'e taşır), ancak yazma hatası olmamasına ve dosyanın oluşturulmasına rağmen, girişler ve dosya boştur.