[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 235
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Neler olduğunu anlamak için hesaplamaları yazdırmanız gerekir:
ve sonuçları analiz edin.BİR ŞEYİ KAÇIRDIĞIMI ANLADIM.
if başlığındaki koşulun yürütülmesini nasıl hayal ettim
- program, Teklif değişkeninin değerini alır (0.86084)
-Bid (0.86084) değişkeninin değerinden masiv[S] (0.85375) değişkeninin değerini çıkarır
- ortaya çıkan fark 0.00709 sabit 0 ile karşılaştırılır
- fark > 0 ise - if ifadesinin gövdesi kontrol edilmez ve sipariş açılmaz
-if farkı <= 0 - if ifadesinin gövdesinde kontrol alınır ve sipariş açılır
ArrayBsearch( masiv, value, WHOLE_ARRAY , 0, MODE_ASCEND) işlevinin yürütülmesini nasıl hayal ettim?
YARDIM: Dizinin ilk boyutunda bulunan ilk öğenin dizinini döndürür.
Dizide belirtilen değere sahip bir öğe yoksa , işlev, aralarında gerekli değerin bulunduğu öğelerin en yakın alt değerinin dizinini döndürür.
-fonksiyon , son tik fiyatına eşit değeri alır ( Teklif -0.86084)
- işlev, dizinin değerlerini en küçükten en büyüğe doğru yineler - herhangi bir dizi değeri ile değer değeri arasında tam bir eşleşme bulamaz
- 0.86084 değeri dizide olmadığı için fonksiyon dizinin en yakın alt değerini döndürür. 0.820864(ilk), 0.81074, 0.85375 ,0.80084, 0.81084, 0.86088 (son) 0.85375 değerine en yakın değer 0.86084 düşük değer. 0.85375 ile 0.86088 arasında istenen değer = 0.86084
================================================= ================================================
massiv[S] öğesinin değerine ek olarak, print işlevinde parametreler olarak massiv[S-1] ve massiv[S+1]' e de sahipsiniz, yani kütlesel[S] ( 0.85375) değerinden 1 önce çıkarılır, sonra 1 eklenir.
if başlığında (veya ArrayBsearch () 'de) önce massiv[S] değerinden 1 çıkarıldığını ve ardından 1 eklendiğini okumadım, herhangi bir MQL ders kitabında okumadım.
Bu noktayı bana açıklarsanız veya bir link verirseniz size minnettar olurum.
Teşekkür ederim.
Massiv[S] öğesinin değerine ek olarak, print işlevinde parametreler olarak massiv[S-1] ve massiv[S+1]' e de sahipsiniz, yani kütlesel[S]( 0.85375) değerinden 1 önce çıkarılır, sonra 1 eklenir.
if başlığında (veya ArrayBsearch () 'de) önce massiv[S] değerinden 1 çıkarıldığını ve ardından 1 eklendiğini okumadım, herhangi bir MQL ders kitabında okumadım.
Bu noktayı bana açıklarsanız veya bir link verirseniz size minnettar olurum.
Teşekkür ederim.
Bu bağlantıda yazdırın.
http://clip2net.com/s/4MRjJe
gerçeğine dikkat çekti
- massiv[0] değeri (muhtemelen [S]) dizinin başladığı ilk değerdir
- massiv [1](Muhtemelen [S+1] ) değeri dizinin ikinci değeridir, yani. dizinin başladığı değeri takip eder
-Bu değerler her PRINT tetiklendiğinde tekrarlanır.
===========================================
- 2000 yılında fiyat değeri noktadan sonra 4 hane daha vardı
- grafikteki test cihazında - 5 karakter
- sonuçlarda test cihazında - 5 karakter
- baskıdaki dergideki test cihazında - 4 karakter
Ve dizide 5 karakterim var.
SORU - Program kaç karakter okuyor?
Bu bağlantıda yazdırın.
https://www.mql5.com/go?link=http://clip2net.com/s/4MRjJe
Orada bir şey gördün mü???
ArrayBsearch() EVERYWHERE işlevinin 0 (öğenin dizini olarak) döndürdüğünü görüyorum. 1.0408 sayısı dizinizin 0. hücresindedir. Koda dönelim:
Şimdi değişkenlerin elde edilen değerlerini bu koşula değiştiriyoruz (resimde Teklif 0.8-0.9 içinde, bu aralığın maksimumunu alalım - 0.9): if (0.9000 - 1.0408 <= 0) OrderSend(). Koşul DOĞRU yerine getirilir !!! Dizinizi doldururken hataları arayın. Muhtemelen ArrayBsearch() fonksiyonunun bu noktasına dikkat etmemişsinizdir:
Not : ikili arama yalnızca sıralanmış dizileri işler. ArraySort() işlevi, sayısal bir diziyi sıralamak için kullanılır.
PS Print'in bir resim olarak değil, aynı anda birkaç satırı seçerek (SHIFT kullanarak - bunu nasıl yapacağınızı bilmiyorsanız), terminal penceresinde bu baskının (10-20 satır yeterlidir) sağlanması istenir, ardından seçimi kopyalayıp gönderinize SRC düğmesini kullanarak kod olarak yapıştırın.
PPS Az önce bariz bir sözdizimi hatası fark ettim - bu satırın start () işlevinin dışına (önce) taşınması gerekiyor:
#include <MASSIV.mqh>
gerçeğine dikkat çekti
- baskıdaki dergideki test cihazında - 4 karakter
Belgeleri okuyun https://docs.mql4.com/ru/common/print
Diziler Print() işlevine geçirilemez. Diziler, eleman eleman yazdırılmalıdır.
Çift veri, noktadan sonra 4 ondalık basamakla verilir. Daha fazla kesinlik elde etmek için DoubleToStr() işlevini kullanmalısınız.
Orada bir şey gördün mü???
ArrayBsearch() EVERYWHERE işlevinin 0 (öğenin dizini olarak) döndürdüğünü görüyorum. 1.0408 sayısı dizinizin 0. hücresindedir. Kodumuza geri dönelim:
Şimdi değişkenlerin elde edilen değerlerini bu koşulla değiştiriyoruz (resimde Teklif 0.8-0.9 aralığında, bu aralığın maksimumunu alalım - 0.9): if (0.9000 - 1.0408 <= 0) OrderSend(). Koşul DOĞRU yerine getirilir !!! Dizinizi doldururken hataları arayın. Muhtemelen ArrayBsearch() fonksiyonunun bu noktasına dikkat etmemişsinizdir:
Not : ikili arama yalnızca sıralanmış dizileri işler. ArraySort() işlevi, sayısal bir diziyi sıralamak için kullanılır.