mql5言語の特徴、微妙なニュアンスとテクニック - ページ 174

 
Igor Makanu:

が違う

いわゆるコントロールとマネジメントのタスクがあります

EA-マネジメント、サービス-コントロール

制御は余分なものであってはならない - システムのすべてのリソースを消費してしまうと、制御の代わりに不安定なシステムになってしまう

では、その節約とは何でしょうか?このサービスでは、同じように注文を列挙し、同じように比較する。

もし、一つのサービスが複数のアドバイザーに「何かが変わった」というシグナルを送ることで「サービス」するという考えであれば、その解決策には疑問が残る。
第一に、判断に必要な重要なデータを外部から待つのは愚かなことです。また、第二に、節約できるとすれば、一つの端末に多数のExpert Advisorを搭載した場合のみである。

これは理論的なトリックであり、実際にはEAでの注文ルックアップには何の問題もありません。

 
MT5の何らかの不具合により、このような状況が発生しました。
ACCOUNT_TRADE_EXPERT = true
ACCOUNT_TRADE_ALLOWED = false
TERMINAL_TRADE_ALLOWED = true
このようなBANは、ブローカーではなく、ターミナル(バグ)が原因である可能性があることを念頭に置いてください。
 
fxsaber:
MT5の何らかの不具合がこの状況を捉えた。 この禁止事項は、ブローカーではなく、ターミナル(バグ)の結果である可能性があることを念頭に置いてください。

ロボと同じ状況ではなく、最初の2分でトレードが終了し、相場が行く?

ただ、この2分間、毎日取引禁止なのか、月曜日だけなのかは覚えていません。

 
Alexey Viktorov:

ロボと同じ状況ではなく、最初の2分で取引が終了し、相場が行っている?

ただ、この2分間は毎日なのか月曜日だけなのかは覚えていませんが、取引はできません。

いや、これは中途半端なんですよ。MT5の障害、ブローカーは関与していない。

 
Alexey Viktorov:

ただ、その2分間は毎日取引禁止なのか、月曜日だけなのかは覚えていません。

マーケットオープン時のみ
 
MessageBoxは ログのすべての情報を表示しない。ログを読んでいると、ときどき疑問が湧いてくることがあります。解決方法は以下の通りです。
// Терминал при 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
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

mql5の特性、ヒントとコツ

fxsaber, 2020.04.30 08:49

MT5の何らかの不具合により、このような状況に陥っています。
ACCOUNT_TRADE_EXPERT = true
ACCOUNT_TRADE_ALLOWED = false
TERMINAL_TRADE_ALLOWED = true
このようなBANは、ブローカーではなく、ターミナル(バグ)が原因である可能性があることを念頭に置いてください。

また、手に入れました。再ログイン時にまれに発生することがあると推測されます。

解決方法 - 偽の場合、少し間をおいてから再試行する。

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);
}
 
代入時に変数の変化をキャッチしたいとき。
if (Value != (Value = NewValue()))
  Print("Value is changed.");
 
fxsaber:
代入時に変数の変化をとらえる必要がある場合。

ここにUBがあるのに、使えないのか。

 
Vict:

ここにUBがあるのに、使えないのか。

動作はしますが、適切なマクロを提案してください。