Hatalar, hatalar, sorular - sayfa 2815

 

Yürütme sırasında hata:

 class A {
public :
        A( int ) { Print( 1 ); }
        A( A&  ) { Print( 2 ); }
};
void OnStart ()
{       
         int a = 5 ;
        {
                A a ( a );         //(1)
        }
}

  • MQL'de Sonuç: 2
  • MQL'de beklenen: 1

Aslında bu örnek C++ kurallarına göre yürütülür.

void OnStart()
{
         int a = 5 ;
        {
                A a ( a );         //(2)
        }
}

aşağıdaki örnek MQL'de kendi (C++ dışında) kurallarına göre çalışırken

 void OnStart ()
{       
         int a = 5 ;
        {
                 int a = a ;         //(3)
                printf( "%d", a );
        }
}

  • Sonuç (3) MQL'de: 5
  • C++'da: 0 (veya rastgele bir sayı)

Değişken bildirilmiş olarak kabul edilir veya

  • (*) meydana geldiğinden beri veya
  • duyurunun sonundan beri (**)

C++'da tek bir (*) yaklaşım vardır, ancak MQL'de (2) durumunda (*) ve (3) durumunda (**) vardır. (2) ve (3) arasındaki temel fark nedir?

Bu, MQL'de neden bir durumda bir değişkenin meydana geldiği andan itibaren ve diğerinde - bildirimin tamamlandığı andan itibaren bildirildiği kabul edilir?

 

Derleme sırasında hata:

 #import "z.ex5"
#import
#define MACRO1( x )    (x) //(*)
#define MACRO2( x )    MACRO1(x)
int f( int z )
{
         return MACRO2( z ); // Error: '()' - operand expected
}

ve bunun gibi:

 #define MACRO1( x )    x   //(**)

iyi. (*) ve (**) arasındaki fark nedir?

 
Fast235 :

boş bir terminale veya daha önce kullanılmamış bir sembole geçmiş yüklenemiyor

M1'de çalıştırıyorum, her şey yükleniyor, H1'e ~ 720 çubuk yükleniyor ve bu kadar, göstergenin çalışması çok daha azına ihtiyaç duyuyor, ancak daha fazla çubuğun yüklenmesi duruyor ve gösterge doğru şekilde çizmiyor ( bir kontrol ayarlarsanız yaklaşık 900 bar, ardından gösterge genel olarak çalışmayı durdurur ),

.....

https://www.mql5.com/ru/docs/series/timeseries_access yardımından betiği ekledim, hacim nedeniyle uzun süre kullanmak istemedi. Inkludnik'e attı, birkaç satır ekledi ve her şey yolunda gitti,

senaryo iyi yapılmış ve robota kolayca entegre edilmiştir, çoklu para birimi + çoklu zaman çerçevelerinde basitçe gereklidir! Çünkü boşaltma ve dondurma çalışma göstergelerine bağlı değildir,

aynısı standart bir MA'da bile elde edilebilir, ancak özelliğinden dolayı vb. birçoğu fark etmeyecek ve programı veya dönemi değiştirmeyecek ve sonra tekrar yüklenecek ..

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Tünaydın ! Android 4.4'teki MT5 güncellemeyi durdurdu. Uygulamayı bile açamıyor. Kim yüzleşirse, yardım için minnettar olacağım.
Teşekkür ederim!
 
fxsaber :

OnTesterInit'te Expert.mqh aracılığıyla edinilebilirler, çünkü EA, parametreleri ayarlamak için çerçeve modunda başlayacaktır.

Herhangi bir nedenle EXPERT::Parameters çağrısının bir sonucu olarak, tüm parametreler string türündedir . Bu bir hata mı yoksa sınırlama mı?

 
Stanislav Korotky :

Herhangi bir nedenle EXPERT::Parameters çağrısının bir sonucu olarak, tüm parametreler string türündedir . Bu bir hata mı yoksa sınırlama mı?

Daha iyi bir örnek.

 
Andrey :
Tünaydın ! Android 4.4'teki MT5 güncellemeyi durdurdu. Uygulamayı bile açamıyor. Kim yüzleşirse, yardım için minnettar olacağım.
Teşekkür ederim!

Minimum - Android   5, geliştiriciler son zamanlarda bunun hakkında yazdı.

 
fxsaber :

Daha iyi bir örnek.

Örnek, bu yöntem için standarttır, örneğin:

    EXPERT::Parameters( 0 , parameters, names);
     for ( int i = 0 ; i < ArraySize (parameters); i++)
     // здесь parameters[i].type всегда равно TYPE_STRING, вне зависимости от фактического типа параметра

Bu, Expert.mqh kitaplığının kendisinin kaynak kodundan görülebilir.

not. Tartışmayı kitaplık konusuna taşıdı.

 

ParameterGetRange/ParameterSetRange ile ilgili başka bir hata.

ParameterSetRange öğesinin çağrılması, sonraki bir ParameterGetRange çağrısı için parametrenin optimizasyona dahil edilmesine ilişkin bayrağı değiştirmez:

 // параметр "name" изначально включен в оптимизацию
// в одной части кода...
ParameterSetRange( "name" , false , value , start, step, stop);
...
// в другой части кода финализация проверок
ParameterGetRange( "name" , enabled, value , start, step, stop); // получаем enabled=true, т.е. изменения внесенные ParameterSetRange не применились
 
Stanislav Korotky :

ParameterGetRange/ParameterSetRange ile ilgili başka bir hata.

ParameterSetRange öğesinin çağrılması, sonraki bir ParameterGetRange çağrısı için parametrenin optimizasyona dahil edilmesine ilişkin bayrağı değiştirmez:

Bu konuya düşkünken birçok nüans olduğunu hatırlıyorum. OnTester* işlevine bağlı olarak bir şey doğru veya yanlış gösterildi. Farklı Açık işlevlerde aramayı deneyin.

Neden: