Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 174

 
Igor Makanu :

farklı

sözde kontrol ve yönetim görevleri vardır

EA - yönetim, servis - kontrol

kontrol gereksiz olmamalıdır - sistemin tüm kaynaklarını alın, kontrol yerine kararsız bir sistem alın

Peki tasarruf nedir? Hizmet aynı sipariş yinelemesini, aynı karşılaştırmaları yapacaktır.

Fikir, bir hizmetin birkaç Uzman Danışmana "hizmet vermesi" ve onlara "bir şey değişti" sinyali göndermesiyse, çözüm şüphelidir.
İlk olarak, bir karar vermek için gereken kritik verileri dışarıdan beklemek aptallıktır. Ve ikinci olarak, eğer varsa, tasarruf sadece bir terminalde birden fazla Uzman Danışman olması durumunda olacaktır.

Daha çok teorik zevkler gibi, pratikte EA'da siparişlerin numaralandırılmasıyla ilgili herhangi bir sorun yoktur.

 
MT5'teki bazı aksaklıklar bu durumu yakaladı.
 ACCOUNT_TRADE_EXPERT = true
ACCOUNT_TRADE_ALLOWED = false
TERMINAL_TRADE_ALLOWED = true
Böyle bir yasağın, komisyoncu değil, Terminal'in (hata) eylemlerinin sonucu olabileceğini unutmayın.
 
fxsaber :
MT5'teki bazı aksaklıklar bu durumu yakaladı. Böyle bir yasağın, komisyoncu değil, Terminal'in (hata) eylemlerinin sonucu olabileceğini unutmayın.

Bu Robo ile aynı durum değil, ilk 2 dakika ticaret kapanıyor ama kotasyonlar gidiyor?

Sadece hatırlamıyorum, her gün veya sadece Pazartesi günleri bu 2 dakika ticaret yapmak yasaktır.

 
Alexey Viktorov :

Bu Robo ile aynı durum değil, ilk 2 dakika ticaret kapanıyor ama kotasyonlar gidiyor?

Sadece hatırlamıyorum, her gün veya sadece Pazartesi günleri bu 2 dakika ticaret yapmak yasaktır.

Hayır, gün ortasında. MT5 çökmesi, komisyoncu işsiz.

 
Alexey Viktorov :

Sadece hatırlamıyorum, her gün veya sadece Pazartesi günleri bu 2 dakika ticaret yapmak yasaktır.

Sadece pazar açıldığında
 
MessageBox , günlükteki tüm bilgileri görüntülemez. Günlüğü okurken bazen sorular ortaya çıkar. Sorunu şu şekilde çözdü.
 // Терминал при MessageBox не выводит в лог имя MQL-программы, текст заголовка окна, флаги и результат нажатия.
int MessageBox2( const string Text, const string Caption = NULL , const int Flags = 0 )
{
   const int Res = MessageBox (Text, Caption, Flags);
  
#define TOSTRING(A) " " + #A + " = " + ( string )(A)
   Print ( "MessageBox:" + TOSTRING(Caption) + TOSTRING(Flags) + TOSTRING(Res));
#undef TOSTRING
  
   return (Res);
}

#define MessageBox MessageBox2
 

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

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

fxsaber , 2020.04.30 08:49

MT5'teki bazı aksaklıklar bu durumu yakaladı.
 ACCOUNT_TRADE_EXPERT = true
ACCOUNT_TRADE_ALLOWED = false
TERMINAL_TRADE_ALLOWED = true
Böyle bir yasağın, komisyoncu değil, Terminal'in (hata) eylemlerinin sonucu olabileceğini unutmayın.

Tekrar koştu. Nadir durumlarda bunun yeniden oturum açma sırasında olabileceğini düşünüyorum.

Çözüm - yanlışsa kısa bir aradan sonra tekrar deneyin.

 bool IsTradeAllowed( const int Attempts = 0 )
{        
   // https://www.mql5.com/ru/forum/170952/page174#comment_16363677
   bool Res = false ;
   int Count = 0 ;
  
   // https://www.mql5.com/ru/forum/170952/page174#comment_16363677
   while (!(Res = :: MQLInfoInteger ( MQL_TRADE_ALLOWED ) &&
                 :: AccountInfoInteger ( ACCOUNT_TRADE_EXPERT ) &&
                 :: AccountInfoInteger ( ACCOUNT_TRADE_ALLOWED ) &&
                 :: TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED )) &&
         (Count++ < Attempts) && !:: IsStopped ())
    :: Sleep ( 100 );
    
   return (Res);
}
 
Atama sırasında bir değişkende bir değişiklik tespit etmeniz gerektiğinde.
 if (Value != (Value = NewValue()))
   Print ( "Value is changed." );
 
fxsaber :
Atama sırasında bir değişkende bir değişiklik tespit etmeniz gerektiğinde.

Burada UB'niz var, kullanamazsınız.

 
Vict :

Burada UB'niz var, kullanamazsınız.

Çalışıyor, ancak doğru makroyu önerebilir misiniz?