Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 9

 
gyfto :

if((ba)*(ca)*(da)>0) yazabilirsiniz, ancak daha hızlı çalışacağı gerçeğini değil. Mantıksal VE ikili çarpmadır, aynı ifadeyi yazmanın yalnızca farklı bir yoludur, fark yalnızca değişken türlerinin boyutundadır. a>b bir boolean değişkendir, 4 bayt ve ba, eğer double iseler, o zaman fark double (8 bayt) olacaktır ve bu çarpma en az 2 kat daha uzundur.


Paha biçilmez tavsiye.

Şimdi açıklayacağım. İfadenizi if((a>b)*(a>c)*(a>d)==1 olarak da yeniden yazabilirsiniz, çünkü parantez içindeki ifadeler 0 veya 1 değerlerini alır (ve sırayla, ön derleyicide tanımda false ve true olarak tanımlanır).

Teşekkürler - Bunun daha hızlı çalışacağını düşünüyorum
 

Arkadaşlar lütfen söyleyin.

Strateji test modunda, optimizasyon özelliklerindeki sayıları değiştiremiyorum:

Minimum bakiye 200

Maksimum kar 10000

vb.

Sorun nedir?

 

Lütfen bana init , start ve deinit değerlerinin hangi değerleri döndürebileceğini söyler misiniz? ve ne anlama geliyorlar?

Forumda aramaya çalıştım ama bulamadım. Bu bilgiler kılavuzda yer almamaktadır. Muhtemelen gizli bilgiler. :)) ( duygusal metin silindi... )

Tahmin ettiğim gibi - "0" - her şey yolunda gitti ... Ama, çünkü. türleri bir tamsayıdır, o zaman görünüşe göre sadece 2 değer olamaz ...

 
Chiripaha :

Lütfen bana init , start ve deinit değerlerinin hangi değerleri döndürebileceğini söyler misiniz? ve ne anlama geliyorlar?

Forumda aramaya çalıştım ama bulamadım. Bu bilgiler kılavuzda yer almamaktadır. Muhtemelen gizli bilgiler. :)) ( duygusal metin silindi... )

Tahmin ettiğim gibi - "0" - her şey yolunda gitti ... Ama, çünkü. türleri bir tamsayıdır, o zaman görünüşe göre sadece 2 değer olamaz ...

Bu oldukça yakın zamanda tartışıldı. Referans:

MQL4'te önceden tanımlanmış adlara sahip 3 işlev vardır:

init(), modül başlatma sırasında çağrılan bir işlevdir. Eğer yoksa, başlatma sırasında hiçbir fonksiyon çağrılmaz.

start() ana fonksiyondur. Bir sonraki tık geldikten sonra Uzman Danışmanlar için çağrılır. Gösterge tabloya eklendikten sonra yeniden hesaplanırken, müşteri terminalini açarken (gösterge tabloya eklenmişse) ve ayrıca bir sonraki onay işaretinin gelmesinden sonra özel göstergeler için çağrılır. Komut dosyaları için, grafiğe eklendikten ve başlatma gerçekleştirildikten hemen sonra yürütülür. Modül start() işlevini içermiyorsa, bu modül (EA, komut dosyası veya özel gösterge) başlatılamaz.

deinit() - modül deinitialization sırasında çağrılan bir fonksiyon. Eğer yoksa, başlatmadan arındırma sırasında hiçbir fonksiyon çağrılmaz.

Önceden tanımlanmış fonksiyonların parametreleri olabilir. Ancak bu fonksiyonlar istemci terminali tarafından çağrıldığında dışarıdan herhangi bir parametre geçilmeyecek ve varsayılan değerler kullanılacaktır.
start(), init() ve deinit() işlevleri, diğer işlevlerle birlikte genel kurallara göre modülün herhangi bir yerinden çağrılabilir.

Modül başlatma sırasında grafik verileri, piyasa fiyatları vb. hazır olmayabileceğinden, init() işlevinden start()'ı çağırmak veya ticaret işlemlerini gerçekleştirmek istenmez. init() ve deinit() işlevleri işlerini olabildiğince çabuk tamamlamalıdır ve hiçbir durumda start() işlevi çağrılmadan önce tam teşekküllü bir çalışmaya başlama girişiminde takılıp kalmazlar.

Bir sistem çağrısı ile dönüşün değeri yoktur.
 

Tamam, o zaman soruyu netleştirmeye çalışacağım.

Örneğin, başlatma aşamasında bazı parametrelerin kontrol edilmesini ve sonuca bağlı olarak Başlangıç aşamasına geçilmesini veya geçilmemesini istiyorum.

Yorumunuzu doğru anladıysam Vadim, o zaman başlatmanın sonucunun değeri olmayacak (bu durumda) ve Başlat işlevi başlatılacak mı? ve bunun bir yolu yok mu? ve bu kontrolü başlangıçta kopyalamanız (yapmanız) gerekecek mi?

 

o zaman init'i en baştan kendiniz aramanız gerekir.

Neden bu tür zorluklar? Global değişkenler henüz iptal edilmedi...

 
Chiripaha :

Tamam, o zaman soruyu netleştirmeye çalışacağım.

Örneğin, başlatma aşamasında bazı parametrelerin kontrol edilmesini ve sonuca bağlı olarak Başlangıç aşamasına geçilmesini veya geçilmemesini istiyorum.

Yorumunuzu doğru anladıysam Vadim, o zaman başlatmanın sonucunun değeri olmayacak (bu durumda) ve Başlat işlevi başlatılacak mı? ve bunun bir yolu yok mu? ve başlangıçta bu kontrolü kopyalamanız (yapmanız) gerekecek mi?

Rüstem cevap verdi:

SSS :

o zaman init'i en baştan kendiniz aramanız gerekir.

Neden bu tür zorluklar? Global değişkenler henüz iptal edilmedi...

Değişkenleri global düzeyde bildirir ve gerektiği gibi başlatırsınız. Bir modülün tüm işlevleri genel değişkenleri görür.
 
Zhunko :

Rüstem cevap verdi:

Değişkenleri global düzeyde bildirir ve gerektiği gibi başlatırsınız. Bir modülün tüm fonksiyonları global değişkenleri görür.

Evet, örneğin programa erişimi kısıtlamak için bir kontrol olmadığı sürece.
 
FAQ :

o zaman init'i en baştan kendiniz aramanız gerekir.

Neden bu tür zorluklar? Global değişkenler henüz iptal edilmedi...


Bayrakla kontrol etmek daha kolay değil mi? Ess-ama küresel..
 
hoz :

Bayrakla kontrol etmek daha kolay değil mi? Ess-ama küresel..

Hayır, daha kolay değil. Çünkü negatif bir bayrak (veya global bir değişken ) varsa, kontrolün yine de çalıştırılması gerekir. Hem bayrak hem de küresel yalnızca olumlu bir durumda çalışacaktır. Ve Başlat'ta hala bazı işlevlere ihtiyaç vardır (burada farklı olmasına rağmen).

Ne söylenirse söylensin, başlangıçta koşmak aynıdır: ya daha az aldatıcı olmayan "init" in tekrarı yoluyla ya da gerekli işlevlerin tekrarı yoluyla.

Neden: