初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1187

 
leonerd:

が、あるクラスをベースクラスとして宣言し、条件によってはそれを継承したクラスの一つとしてオーバーライドすることは可能でしょうか?

課題は、コード内でクラス名を同じにすることです。

また、テスターを定義するためにどのディレクティブを使用するべきかアドバイスしてください。

このようなやり方は可能なのでしょうか?

#include <NewsFilter.mqh>
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
 
Artyom Trishkin:

ありがとうございます。はい、しかし、ここでnews_filterオブジェクトは未定義であることが判明しました。コードのどこからでもアクセスできるように、グローバルに宣言する必要があります。どうすればいいのか?

CNewsFilter       news_filter;
void OnInit()
  {
  }
 
leonerd:

ありがとうございます。はい、しかし、ここでnews_filterオブジェクトは未定義であることが判明しました。コードのどこからでもアクセスできるように、グローバルに宣言する必要があります。どうすればいいのか?

どのような場合に未定義になるのでしょうか?

 
Artyom Trishkin:

どのような場合に不定になるのでしょうか?

#include <NewsFilter.mqh>

void OnInit()
  {
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
  }
void OnTick()
  {
   news_filter.Check()...
  }
 

この文の実行とその条件の表現のロジックを理解するために、ご教授ください。


CTrade         m_trade;

CPositionInfo  m_position;

if(!m_trade.PositionClose(m_position.Ticket()))

チケットで定義されたポジションをクローズしない場合?

まずポジションチケットを取得→プログラムがポジションを閉じようと する→返されたブール値が反転する。

そうだろ?

 
odyn:

この文の実行とその条件の表現のロジックを理解するために、ご教授ください。


チケットで定義されたポジションをクローズしない場合?

まずポジションチケットを取得→プログラムがポジションを閉じようと する→返されたブール値が反転する。

そうだろ?

-> 指定されたチケットのポジションがクローズされた場合はtrueを、そうでない場合はfalseを返します。

条件:指定されたチケットのポジションがクローズされていない場合...

 
Сергей Таболин:

-> 指定されたチケットのポジションがクローズされた場合はtrueを、そうでない場合はfalseを返します。

条件:指定されたチケットのポジションがクローズされていない場合...

問題は、プログラムがポジションを閉じようとして いるのか、そうでないのか、ということです。

 
odyn:

問題は、プログラムがポジションを閉じようと するか、しないかです。

はい、そうです。

 
Сергей Таболин:

はい、そうです。

ご回答ありがとうございました。

 

説明してください。

OnTradeTransaction 関数。

Expert Advisorでなければならないのでしょうか?

そうでない場合、どのような場合にコードに含めるべきでしょうか? また、その理由は?

理由: