Hatalar, hatalar, sorular - sayfa 1525

 
Yuri Evseenkov :

MT4. Programın global değişkenlerini başlatma özelliklerine bir kez daha dikkat çekmek istiyorum.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Slava , 2016.02.24 07:34

Sırada. İstek sadece iki saatlik.

Genel olarak, bu tür sorular forumda sorulmalıdır. Çünkü çoğuna dokunulabilir. alıntı yapayım oradan cevaplarım

Bu amaçlanan davranıştır. Ayrıca, belgelerde açıkça açıklanmıştır.

Boşaltma ve yükleme, her şeyin tamamen yeniden başlatılmasını içerir.

İlk beşte, doğru bir şekilde belirttiğiniz gibi, durum benzer

Doğru, dördünde tarihsel olarak böyle oldu ve yeni MQL4'e geçerken ilk önce bu davranışı değiştirdik (böylece uzmanlar gibi, yani beklediğiniz davranıştı). Ancak eski göstergelerle, tam olarak böyle, ilk başlatma için ortaya konan birçok soru ortaya çıktı. geri dönmek zorunda kaldılar

İlk beşte, mimari nedeniyle hemen oldu. Parametreler değiştirildiğinde, önceki parametrelere sahip eski gösterge yok edilir ve değiştirilen parametrelere sahip yeni bir gösterge oluşturulur.


 
Alexey Kozitsyn :

Teşekkür ederim. Sonuç, belgelerden bir alıntıdır: "... amacı tüm global ve statik program değişkenlerini doğru şekilde başlatmak olan önceden tanımlanmış OnInit() işlevi."

Bu nedenle, OnInit() işlevindeki tüm global değişkenler veya diziler null veya varsayılan olarak ayarlanır.

События клиентского терминала - Программы MQL4 - Справочник MQL4
События клиентского терминала - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
События клиентского терминала - Программы MQL4 - Справочник MQL4
 

1. Formun bir dizisini oluşturuyorum:

CArrayString list[ 5 ];

2. <Ctrl+Space> aracılığıyla bir yöntem listesi çağırmaya çalışıyorum

list[ 0 ].
Yöntem listesi görünmüyor. Böyle mi olmalı?
 
Andrey Voytenko :

1. Formun bir dizisini oluşturuyorum:

2. Koddaki yöntemler listesini <Ctrl+Space> aracılığıyla çağırmaya çalışıyorum

Yöntem listesi görünmüyor. Böyle mi olmalı?

tahmin etmeye çalışacağım. Eğer kodda metot/üye belirtilmemiş olmasının yanında başka hatalar da varsa liste her zaman çıkmıyor.

Sınanmış. Hayır, yanlış varsayım. Ancak kombinasyonun birkaç kez tekrar basılması yardımcı oldu.

 

Alexey Kozitsyn :

Ancak kombinasyonun birkaç kez tekrar basılması yardımcı oldu.

Maalesef tarifiniz bana uymuyor.
 
Andrey Voytenko :
Maalesef tarifiniz bana uymuyor.
Hayır, bu doğru, kodda bir hata varsa, o zaman genel üyeler/yöntemler listesi görünmez. Ama eğer hata yoksa ... o zaman sorun.
 

1. Basit kod:

 uint a= 50 ;
int b=- 20 ;
Print ( fmax (a,b));

sonuç: 50

2. Giriş değiştiriciyi ekleyin:

 input uint a= 50 ;
int b=- 20 ;
Print ( fmax (a,b));

sonuç: 4294967276

Beklenen sonuç 50. Nerede yanlışım?

 
Andrey Voytenko :

1. Basit kod:

sonuç: 50

2. Giriş değiştiricisini ekleyin:

sonuç: 4294967276

Beklenen sonuç 50. Nerede yanlışım?

fmax iki çift sayıyı karşılaştırır. Yani şöyle olacak:

 //+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.01"
#property script_show_inputs
//---
input uint a= 50 ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//uint a=50;
   int b=- 20 ;
   Print ( "\"uint a=50\" as double:" , DoubleToString (( double )a, 8 ));
   Print ( "\"int b=-20\" as double:" , DoubleToString (( double )b, 8 ));
   Print ( DoubleToString ( fmax (( double )b,( double )a), 8 ));
  }
//+------------------------------------------------------------------+

ve sonuç:

 2016.03 . 03 16 : 00 : 24.821 Test (EURUSD,D1)         "uint a=50" as double : 50.00000000
2016.03 . 03 16 : 00 : 24.821 Test (EURUSD,D1)         "int b=-20" as double :- 20.00000000
2016.03 . 03 16 : 00 : 24.821 Test (EURUSD,D1)         50.00000000
Dosyalar:
Test.mq5  2 kb
 
Karputov Vladimir :

fmax iki çift sayıyı karşılaştırır. Yani şöyle olacak:

MQL dilinde, örtük tip dökümü bildirilir ve gerçekleştirilir. Özellikle, uint -> double.

Soru, giriş değişkenleriyle neden düzgün çalışmadığıdır.

 
Andrey Voytenko :

1. Basit kod:

sonuç: 50

2. Giriş değiştiriciyi ekleyin:

sonuç: 4294967276

Beklenen sonuç 50. Nerede yanlışım?

Kodun tamamını sağlıyorsunuz.

2 ihtimal var ikiside yanlış

1. Kod, herhangi bir işlevin dışında yürütülür.

2. girdi değişkeni fonksiyonun içinde bildirilir