[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 235

 
Lütfen söyleyin, metatrader4 test cihazında test ederken pozisyonları manuel olarak açmak mümkün müdür? Hesap makinesinde puan hesaplamamak, ancak düğmeye basmak için, verileri dolduran ve F12 tuşuna basan bir sipariş açma penceresi belirdi ve test cihazının kendisi, bir danışman tarafından açıldığında olduğu gibi kabul ediyor. Belki bunun için hazırlanmış bir çeşit program vardır, araştırarak bulamadım.
 
herkese iyi günler. Beyler burada soru ortaya çıktı, daha doğrusu birkaç yardım.
1: Bir seviyem varsa ve fiyat bu seviyeye eşitse, o zaman bir emir açarız. Soru, fiyatın bu seviyeden kayması, bir şekilde hızlı uçması ve sahip olduğum seviyeye eşit olmaması veya GAP'ın gerekli olduğu yerde, yani seviyede bir emir açması mı?
2: Günlük hatalar veriyor, ne anlama geldiklerini bilmek istiyorum, lütfen bana söyleyin. [B]1-Sinyal başarısız ayrıştırma sinyalleri,[/B] [B]2-DataCenter bağlantısı başarısız [2] ve [6][/B] 3-(Tam hatırlamıyorum ama sıralamayı değiştirirken, tamamen devre dışı olduğunu söylüyor) ? Lütfen bana bu veya diğer durumlarda ne yapacağımı söyleyin, tekrar teşekkürler!
 
TarasBY :

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.


 
solnce600 :

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.

Çıktısını aldıktan sonra muhakemenizi uygulamaya başlayacaksınız. Bir baskı yaptınız mı (içinde HİÇBİR ŞEYİ değiştirmenize gerek yok)? Bana içinde ne olduğunu göster.
 

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?

 
solnce600 :

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:

 if ( ( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 ))

Ş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> 
 
solnce600 :

gerçeğine dikkat çekti

- baskıdaki dergideki test cihazında - 4 karakter

Belgeleri okuyun https://docs.mql4.com/ru/common/print

voidPrint ( ...)
Uzman günlüğüne bazı mesajlar yazdırır. Parametreler herhangi bir tipte olabilir. Parametre sayısı 64'ü geçemez.

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.
 
TarasBY :

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.

İkili aramanın ne anlama geldiğini tam olarak anlamıyorum. İki boyutlu bir dizide bir arama mı? Ama bende bir tane var.
 
mt 4 200 144 89 55 34'te fibonacci periyodu nasıl ayarlanır
Neden: