class A {
public :
A( int ) { Print( 1 ); }
A( A& ) { Print( 2 ); }
};
voidOnStart ()
{
inta = 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()
{
inta = 5 ;
{
A a ( a ); //(2)
}
}
aşağıdaki örnek MQL'de kendi (C++ dışında) kurallarına göre çalışırken
voidOnStart ()
{
inta = 5 ;
{
inta = 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?
#import "z.ex5"#import#define MACRO1( x ) (x) //(*)
#define MACRO2( x ) MACRO1(x)
int f( int z )
{
return MACRO2( z ); // Error: '()' - operand expected
}
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 ),
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 ..
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
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.
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 не применились
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.
Yürütme sırasında hata:
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
Değişken bildirilmiş olarak kabul edilir veya
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:
ve bunun gibi:
iyi. (*) ve (**) arasındaki fark nedir?
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 ..
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ı?
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.
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.
Minimum - Android 5, geliştiriciler son zamanlarda bunun hakkında yazdı.
Daha iyi bir örnek.
Örnek, bu yöntem için standarttır, örneğin:
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:
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.