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

 

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

mql5言語の特徴、微妙なニュアンスとコツ

fxsaber さん 2017.11.30 09:48

メモ

アクション/プログラムの種類 TFまたはシンボルの変更 アカウント変更
インジケーター OnDeinitとOnInitを実行すると、グローバルクラスのオブジェクトが変更されます(フルリセット)。 prev_calculatedがリセットされる以外は何も起こりません。
電子ブック OnDeinitとOnInitを実行しても、グローバルクラスのオブジェクトは 変更されません。 OnDeinitとOnInitを実行すると、グローバルクラスのオブジェクトが変更される(フルリロード)。

再ログイン時にEAを完全再起動させない方法を教えてください(手動など)。

再ログインですべてリセットされるのは理解できない。これは欠点なのでしょうか?

 
fxsaber:

動作しますが、正しいマクロを提案することができます。

もし、あなたが工芸品の品質にあまり関心がないのであれば、私はさらに関心がありません。

 
Vict:

もし、あなたが工芸品の品質にあまり関心がないのであれば、私はさらに関心がありません。

ここでは、MQL5の特徴について書きます。

 
fxsaber:

ここでは、MQL5の特徴について書かれています。

機能であってUBじゃないとか言ってる奴wwwwwwwwドキュメントに情報はないのでしょうか?ほとんどの場合、UBはコンパイラにあらゆる最適化をさせる自由を与える必要があります。 実際のコードで異なるケースでどのような結果になるかは、オプティマイザの気分次第で、私には分かりません。このコードをクロスでも実行して、何か結果が出るかもしれませんが、その時は「ほら、クセがあるでしょ」と言われるべきでしょうか?

このコードをクロスで動かして結果を出すと、「ほら、どこが特殊なんだ」と言われます。

 
Vict:

機能であってUBじゃないとか言ってる奴wwwwwwwwドックには何か情報があるのでしょうか?

ここは、ドックにないものを書くところです。そうでなければ、このスレッドに意味はない。

 
fxsaber:

ここは、ドックにないものを書くところです。そうでなければ、このスレッドの意味がありません。

開発者のコメントがあれば有意義だが、そうでなければ...。

だから、そう、ドックに書いてあるのは、実行命令、つまり、すべてが合法と思われる のだ。しかし、プラスでは本当に激しいubであることを考えると、この言及が本当に正確な 実行順序を 意味する のか演算子の連想性ではない のかを確認したいと思います。

 
fxsaber:

再ログイン時にEAを完全に再起動させない方法を教えてください(例:手動)。

再ログインですべてリセットされるのは理解できない。これは欠点なのでしょうか?

再ログイン時に一部の計算をスキップするタスクと、アカウント変更時にExpert Advisorを 削除するタスクがありました。1か所で解決しました。

単純にアカウント変更時にExpert Advisorを削除したい場合はこのようになります。

string GetGlobalNameAccount( void )
{
  return(::MQLInfoString(MQL_PROGRAM_NAME) + (string)::ChartID() + "_Account");
}

void SaveAccount( void )
{  
  if (!::GlobalVariableSet(GetGlobalNameAccount(), CurrentAccount))
    ::Alert("GlobalVariableSet - ERROR!");
  
  return;
}

int LoadAccount( void )
{
  int Res = 0;
  
  const string Name = GetGlobalNameAccount();
    
  if (::GlobalVariableCheck(Name))
  {
    Res = (int)::GlobalVariableGet(Name);
    
    ::GlobalVariableDel(Name);      
  }
  
  return(Res);
}

const int CurrentAccount = (int)AccountInfoInteger(ACCOUNT_LOGIN);
int PrevAccount = 0;

int OnInit( void )
{
  PrevAccount = LoadAccount();
  
  bool Res = !PrevAccount || (PrevAccount == CurrentAccount);
  
  if (Res)
  {
    // .....
  }
  else
    Alert("Account is changed! " + (string)PrevAccount + " -> " + (string)CurrentAccount);
    
  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_ACCOUNT)
    SaveAccount();
}


MQL5の最もシンプルなタスクは、私たちをサブバージョンで踊らせます。

 
Vladimir Simakov:

開発者のコメントがあれば納得ですが、そうでなければ...。

だから、そう、ドキュメントには、実行命令、-それゆえ、すべてが合法であるように思われる しかし、プラスでは本当に激しいubであることを考えると、ヘルプが本当に 演算子の連想性ではなく正確に 実行順序を 意味して いることを確認したいと思います。

この枝はポイ捨てしないようにお願いします。このスレッドは、C++ではなくMQL5の機能についてです。

 
Artyom Trishkin:

この枝はポイ捨てしないようにお願いします。このスレッドは、C++ではなくMQL5の特殊性についてのスレッドです

一方はUBに書き、もう一方は盲目的に彼に呼応する、奇妙なものです。MCLのヘルプにあるのは大丈夫なのか?

注:MQL5における操作の優先順位は、以下の優先順位に対応します。 С++ であり、MQL4で示された優先順位とは異なる。

また、表で「実行順序」と呼ばれているものは、実際には「連想性」と呼ばれるもので、評価の順序には影響せず、一般の場合には定義されていない。

まあ、気にしないでください、ありがたいことです、ここの皆さんはクソ専門家ですから、お邪魔はしません。

 
Vict:
注意:MQL5での操作の優先順位は、以下のように対応します。 С++あり、MQL4で示された優先順位とは異なる

これは、ノン・ストリクト・モードにのみ適用される可能性が高いです。

ここでは何百人もの人が何年も前からクロスプラットフォームのものを書いているんです。
理由: