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

 
odyn:

こんにちは、コノヤロー。

以下はそのコードです。

struct STRUCT_POSITION {...\}.

STRUCT_POSITION SPosition[];

質問です。

STRUCT_POSITION SPosition[]; とは?構造体のインスタンスを生成しているのであれば、なぜ動的配列 なのでしょうか?本当にできるのだろうか?なぜ?


ご回答のほど、よろしくお願いいたします。

struct STRUCT_POSITION {...\}を宣言することで、ユーザー定義データ型を作成します。また、STRUCT_POSITION SPosition[];は、ユーザー型の変数の宣言である。変数が配列であることは角括弧 [] で示されます。他の型と同じように、カスタム型の変数を複数宣言することができます。

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
このエントリでは、変数配列
 
皆さん、ごきげんよう、時間です。
私のアンドロイド端末の一つで、MT5が動作しなくなりました。
ただ、動かなくなっただけです。何も変更せず、何も設定しなかった。
スクリーンショットのようになります。
インターネットも使えるし、他は全部使える。
場違いだったらごめんなさい。
ファイル:
 

MT5を再起動するためのユーティリティ(WatchDogのようなもの)はありますか?


MT5が何らかのエラーで終了したとします。すぐにリモートでトレースして、MT5を再起動するにはどうしたらよいでしょうか。

MT4でMT4barを使用しています。MT5で同じようなものが必要。

 

こんにちは。

常に同じクラスのオブジェクトを定義し、呼び出すための普遍的な基底クラスを作ろうとしています。

そして、ニュースをテストするために、2つのソリューションを作っています。基本クラス CNewsFilter と 2 つの継承クラス CNewsFilterLive と CNewsFilterTester があります。 コード内でCNewsFilterオブジェクトを定義したい。また、どのモードが実行されているかによって、自動的にクラスが選択されます。しかし、何かがうまくいかない。以下はベースクラスで、例としてInit()メソッドだけを残しています。

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilter
  {
protected:
   //---
public:
                     CNewsFilter(void);
                    ~CNewsFilter(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilter::Init(string symbol_name,int magic_number)
  {
   return true;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif

継承されたクラス。

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilterTester : public CNewsFilter
  {
protected:
public:
                     CNewsFilterTester(void);
                    ~CNewsFilterTester(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::CNewsFilterTester() :  m_delimiter('\t')
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::~CNewsFilterTester(void)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilterTester::Init(string symbol_name,int magic_number)
  {
   // some code
   return true;
  }

そして、それをEAコードで呼び出す。

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

デバッグしていると、継承されたクラス CNewsFilterTester に入ることはありません。これは、ベースクラスのコードの最後に追加したベースクラス指令に従って入るべきものです。MQL5__はあくまで例として挙げています。テスターでどうやるかは別問題です。今のところ、このアイデア自体はうまくいっていない。継承したクラスのメソッドが呼び出されないのだ。Init()が呼ばれたとき、継承されたクラス(この例ではCNewsFilterTester)のInit()には行きません。助けてください。

#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif
 
leonerd:

こんにちは。

常に同じクラスのオブジェクトを定義し、呼び出すための普遍的な基底クラスを作ろうとしています。

そして、ニュースをテストするために、2つのソリューションを作っています。基本クラス CNewsFilter と 2 つの継承クラス CNewsFilterLive と CNewsFilterTester があります。コード内でCNewsFilterオブジェクトを定義したい。また、どのモードが実行されているかによって、自動的にクラスが選択されます。しかし、何かがうまくいかない。以下はベースクラスで、例としてInit()メソッドだけを残しています。

継承されたクラス。

そして、それをEAコードで呼び出す。

デバッグしていると、継承されたクラス CNewsFilterTester に入ることはありません。これは、ベースクラスのコードの最後に追加したベースクラス指令に従って入るべきものです。MQL5__はあくまで例として挙げています。テスターでどうやるかは別問題です。 今のところ、このアイデア自体はうまくいっていない。継承したクラスのメソッドが呼び出されないのだ。Init()が呼ばれたとき、継承されたクラス(この例ではCNewsFilterTester)のInit()には行きません。よろしくお願いします。

こちら

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

を作成すると、ベースクラスオブジェクトが作成されます。従って - どこにでもベースクラスがあるのです。

 

正しい条件の書き方 :

このように

if(((MASlowHandle - PBid) > 0.0002) && ((MASlowHandle - MAFastHandle) > 0.0002))

とか、こんな感じ。

if((MASlowHandle - PBid) > 0.0002 && (MASlowHandle - MAFastHandle) > 0.0002)

??

 
odyn:

正しい条件の書き方 :

このように

とか、こんな感じ。

??

そんなことはどうでもいいんです。このように書くこともできます。

if(MASlowHandle - PBid > 0.0002 && MASlowHandle - MAFastHandle > 0.0002)

論理演算より算術演算が優先されます。

しかし、条件の中に&&と||の両方がある場合は、理解しやすくするために括弧で区切ることが望ましい。

 
Alexey Viktorov:

主義主張の問題ではありません。このような言い方もできます。

算術の優先順位は論理の優先順位より高い。

しかし、条件に && と || がある場合は、理解しやすいように括弧で区切ることが望ましい。

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

 

コードを公開できない理由は何ですか?

いつもメッセージをもらっています。

コードレビューがエラーで終了
コード検証中に検出されたエラー 取引統計 リアルタイムレポート。
https://www.mql5.com/en/code/28074/230766

しかし、コード発行エラーの理由がわからない。

これについては、ご回答をお願いします。

何が問題なのか、少なくともそれは浮き彫りにされるべきです。

 
jaffer wilson:

コードを公開できない理由は何ですか?

いつもメッセージをもらっています。

コードチェックはエラーで終了 しました。
コードチェック中に検出されたエラー 取引統計 リアルタイムレポート。
https://www.mql5.com/en/code/28074/230766

しかし、コード発行エラーの理由がわからない。

これについては、ご回答をお願いします。

何が問題なのか、少なくともそれは浮き彫りにされるべきです。

質問はどこにあるのでしょうか?具体的にはどのようなエラーなのでしょうか?すみません、テレパスはみんなお休みなんです。

クリック

理由: