SSS (sık sorulan sorular) doldurma hakkında Subbotnik. Yoldaşlarımıza yardım edelim! - sayfa 5

 

Söz verdim, en basitinden başlayacağım)

Soru: MQL aritmetik işlemleri yanlış mı yapıyor? Bir sayıyı diğerine bölmek neden 0 ile sonuçlanır?

Cevap:

Büyük olasılıkla, şöyle bir ifade yazdınız

c = a/b;  // (1)

a ve b değişkenlerini tamsayı olarak bildirirken:

 int a,b;

Bu durumda, MQL derleyicisi "eğik çizgi" simgesini bir "tamsayı bölme" işlemi olarak yorumlar. Bu nedenle, (1) ifadesi kodda görünmeden önce, a ve b değişkenlerine tamsayı olmayanlar da dahil olmak üzere herhangi bir değer atanmış olsa bile, " b sayısı a tamsayısının kaç kez sığabileceği" yanıtı yine de olacaktır. c değişkenine yazılır. Ve bu da, (1) a ifadesinin hesaplanmasından önce b 'den küçükse, sonucunun sıfıra eşit olacağı ve c değişkeninin türünden bağımsız olarak (yukarıdaki örnekte iki katı olabilir) anlamına gelir. .

Açıklanan hata, genellikle, programın terminaldeki "yanlış" davranışı vakalarının nedenidir - uzman günlüklerinde "hiçbir yerden gelme" mesajı " sıfıra bölme ", terminal penceresinde bir veya birkaç gösterge satırının görüntülenmemesi , vb.

Çözüm:

değişkenlerin bildirimindeki veri türünü, kullanılması planlanan işlemlere karşılık gelene düzeltin:

 double a,b;
 
Soru: 3 bölü 2 neden 1'e eşit de 1,5 değil?

 Alert ( 3 / 2 );

Cevap: Bu ifadedeki 3 ve 2 sayıları tam sayılardır. Bir tam sayı kalansız bölünemez. 1.5 sonucunu elde etmek için, temettüsünün kayan noktalı bir sayı olduğunu belirtmeniz gerekir:

 Alert ( 3.0 / 2 );

* * *

Soru: İfade neden yanlış değerlendiriliyor?

  double price= 1.0 ; // Цена
  double point= 0.0001 ; // Величина пункта
  double level= 272.0 ; // Уровень в пунктах от цены
  double levelprice; // Значение цены уровня
   
  levelprice=price+point*level; // должно быть 1.0272
   
  if (levelprice== 1.0272 ){
  Alert ( "Правильно" );
  }
  else {
  Alert ( "Неправильно" );
  }

Cevap: Kayan nokta değişkenlerinin sınırlı sayıda ondalık basamağı vardır. Bu nedenle, hesaplama sırasında değerler biraz bozulabilir. İfadeyi değerlendirdikten sonra, kayan nokta sayılarını karşılaştırmadan önce, gerekli kesinlik düzeyine göre normalleştirilmeleri gerekir:

  levelprice= NormalizeDouble (levelprice, 4 );

  if (levelprice== 1.0272 ){
  Alert ( "Правильно" );
  }
  else {
  Alert ( "Неправильно" );
  }

* * *

Soru: Expert Advisor'da özel bir göstergenin değerini nasıl alabilirim?

Cevap: Bunun için iCustom() işlevi vardır.

* * *

Soru: MQL4 öğrenmeye nasıl başlanır?

Cevap: MetaEditor'da (MetaEditor'u Aç - Ana Menü - Görünüm - Gezgin - Sözlük) çok ayrıntılı bir yardım kılavuzu bulunmaktadır.
Terminal paketi iki Uzman Danışman MACD Örneği ve Hareketli Ortalama içerir, kodları analiz edilerek pratik çalışma başlatılabilir.
Ayrıca, mql4.com'da bir eğitim , çok sayıda makale ve her türlü kod var.
 
Soru: Kesinlikle 0 olmadığında neden 0 değeri?

  double point= 0.00001 ; // Величина пункта
  Print (point);

Yanıt: Print() ve Alert() işlevleri, ondalık noktadan sonra yalnızca dört ondalık basamak yazdırır . Daha fazlasına ihtiyacınız varsa, DoubleToStr() işlevini kullanarak çift sayıyı bir dizeye dönüştürmeniz gerekir.
 Print (DoubleToStr(point, 5 ));
 

Soru: Expert Advisor, Print() işlevini kullanarak çok sayıda mesaj görüntüler, ancak test cihazında mesajların yarısından fazlası bir yerde kayboluyor.

Cevap: Günlüğe yüksek frekansta çıktı ile test yaparken, bazı mesajlar "Günlük" sekmesinde görüntülenmez, ancak testten sonra tüm mesajlar test cihazının günlük dosyasında görülebilir. Dosya, test cihazı/günlükler klasöründe bulunur.

 
Hepinize teşekkürler, yazmaya devam edin.
SSS bölümünde sadece akşam geldiğimde toplayacağım.
 

Moderatörlere ve asgari düzeyde yardım sağlamak isteyenlere bir teklif.

Forumun yeteneklerinin yapılandırılmış bir bilgi sunumu, işlenmesi ve aranması için yeterli olmadığını kabul edin. Tek çıkış yolunu görüyorum - daha sonra forumda tam bir bölüm oluşturmanın mümkün olacağı en eksiksiz CHM kılavuzunun oluşturulması .

İlk önce bir yardım yapısı oluşturdum.
3 ana bölüme ayrılmıştır.

1) NASIL. bu bölüm olası sorulara proaktif yanıtları açıklar. Örneğin, gösterge verilerinin nasıl alınacağı, tüm siparişlerin nasıl kapatılacağı vb. ayrıca bu bölümde geniş bir sistematik fonksiyon tabanı vardır (Kim'in fonksiyonlarının analogları). Ve en önemlisi - kodun ve yorumların ayrıntılı bir açıklaması ile hazır ilkel TK örnekleri. Bu, bilgi ve analizin daha fazla sistemleştirilmesini gerektirdiği için çok zor bir bölümdür. En son dolduracaktır.

2) NEDEN. bu bölüm yeni başlayanların sık sorulan sorularını açıklar (bunların örnekleri bu başlıkta alsu ve integer ile güzel bir şekilde gösterilmiştir)

3) NEREDE. Bu bölümde, esas olarak, bir şeyin veya yalanların nerede aranacağına ilişkin bağlantılar bulunur. Genel olarak tarif etmeyeceğim, kendiniz görün.
Bitmiş chm yapısının arşivini ekliyorum (yazının alt kısmından indirin)


1. Kılavuzun yapısı


2. Özellik gösterimleri - " Nerede: Faydalı Bağlantılar -> MQL4 Eğitimi " bağlantısını izleyin

Dosyalar:
mql4_4.zip  53 kb
 


Sonraki adımlar şöyle görünüyor:

1. Alt bölümleri dolduracak freelancerlara ihtiyacımız var. Yani, aslında, ayrıntılı bir açıklama, bir dizi çapraz referans vb. (SSS konusunun ilk sayfasında sunulan gönderi şablonuna göre).

2. Alt bölüm için oluşturulan tüm sorular küratör tarafından bu alt bölüm için toplanır (1-2 kişi). Bunları işler, ortak bir stile getirir ve gerektiğinde çapraz referanslar oluştururlar.Bu her alt bölümün kendi sahibine sahip olmasını sağlar ve veritabanında karışıklık olmaz, tek bir stil ve yanıt şablonu olacaktır.
Örneğin, "Nerede" bölümü 4 alt bölüme ayrılmıştır: Test cihazı, terminal, forum, faydalı bağlantılar hakkında sorular. Her alt bölüm için 1 kişi yeterlidir. Gerekli gördükleri freelancerlardan gelen bilgi tabanını ve komşu bölümlerdeki diğer katılımcılardan gelebilecek önerileri tamamen ayırmakla meşgul olacaklar. Ve elbette, veri tabanını doldurmada ve soru oluşturmada kendileri aktif rol almalıdır.

3. Alt bölümler doldukça toplayıcıya (örneğin bana) aktarılır . Bunları tek bir chm dosyasında toplamak ve her şeyi aynı tarzda tutmak gerekiyor. Ek çapraz referanslar oluşturun, indeksleyin, arama sorguları için anahtar kelimeler ekleyin.

Küratörün
önerisi ve yeni yapının koleksiyoncu ile mutabakatı ile alt bölümler yeniden sıralanabilir veya genişletilebilir.

Sonuç:
Katılımcılar: Kulübemize hoş geldiniz. :) Alt bölümün küratörü olmak isteyenler ve zaten yaratacak bir şeyleri olanlar - mesajlarınızı-cevaplarınızı buraya atın.
Moderatörler: Çok fazla materyal olacak. Lütfen bu başlıkta tartışmaya ve soyut, boş gönderilere izin vermeyin. Gönderinin ortak veritabanına aktarılmasından sonra da gerekli olacaktır - bölümün çalışmasını kolaylaştırmak için katılımcıların gönderilerini silmek.
Küratörler: Yardım dosyası WinCHM 4.17'de oluşturulur ( kişisel olarak yazması gerekir). Dosya adı ve konum gereksinimleri :
- klasör yapısı, yardımın yapısını tam olarak tekrarlamalıdır
- tüm dosya/klasör adları yalnızca İngilizce olarak anlamlı ifadelerle verilmelidir.
- WinCHM'nin arşivde "derlediği" mevcut veritabanına bir örnek

Dosyalar:
chm4_2.zip  19 kb
 

sergeev :

...


1) NASIL. Bu bölüm, olası sorulara proaktif yanıtları açıklar. Örneğin, gösterge verilerinin nasıl alınacağı, tüm siparişlerin nasıl kapatılacağı vb. ayrıca bu bölümde büyük bir sistematikleştirilmiş işlevler veritabanı vardır (Kim, vb.). Ve en önemlisi - kodun ve yorumların ayrıntılı bir açıklaması ile hazır ilkel TK örnekleri. Bu, bilgi ve analizin daha fazla sistemleştirilmesini gerektirdiğinden çok zor bir bölümdür. En son dolduracaktır.

...

Alexey, Kim'in siparişlerle çalışma işlevlerinin tümü, çalışmalarının güvenilirliği ve doğruluğu açısından çok şüphelidir. Ayrıca onlara perçin danışmanları var mı?

 
Integer :

Alexey, Kim'in siparişlerle çalışma işlevlerinin tümü, çalışmalarının güvenilirliği ve doğruluğu açısından çok şüphelidir. Ayrıca onlara perçin danışmanları var mı?

olumsuzluk. Gerçek hayat tarafından kanıtlanmış, kendi başıma perçinliyorum. :)

Dürüst olmak gerekirse, bu forumdaki öneriler dışında neredeyse hiçbir yerde Kimovskie'yi görmedim. Bölümün açıklamasında, neden bahsettiğimi anlamanız için onları sadece örnek olarak verdim. Ve Kimov'ların kodlarında kılavuzda yer alacağından emin değilim. Sadece fikir ortak bir tarzda alınacak ve işlenecektir.

NASIL bölümü en ciddi olanıdır. NASIL'ın tüm bölümleri son bölümün bir özeti olduğu için maksimum 2-3 kişi tarafından yapılmalıdır - tüm olası seçenekleri gösterecek ve önceki tüm işlevlerin kombinasyonlarını kullanacak olan "TK örnekleri ve uygulamaları" bölümlerinden.

 

Soru: " double " türündeki iki gerçek sayı nasıl karşılaştırılır?


Cevap:

 double A;
double B;

if ( NormalizeDouble ( MathAbs (A-B), Digits )< 0.1 * Point ) return (true);
else return (false);
Neden: