MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 93

 
Vikon:
プリントは関数の中にしか挿入できないのですが、この関数を呼び出してプリントやアラートを動作させる方法がよくわかりません。私のコードを3つの単純な変数で修正することで助けてもらえますか?記事の通りにやっても、エディターが表示されないというか、何かが足りないというか、とにかく壁がないので、相談させていただきました。SKCをありがとうございました。

アラートでdを出力していますね。

どこで計算するのですか?

//+------------------------------------------------------------------+
//|                                                      TestASD.mq4 |
//|              Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int      InputA=1;
input int      InputB=3;

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
   int c(int m_a,int m_b)
     {
      m_a=a+b; m_b=a-b;
      int m_d=m_a+m_b;
      d=m_d;
      Print(__FUNCTION__);
      return(c(m_a,m_b));
     }
public:
   int               a;
   int               b;
   int               d;
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
ASD   ar;
void OnStart()
  {
//---
   ar.a=InputA;
   ar.b=InputB;
   Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d);
  }
//+------------------------------------------------------------------+
そして、自分自身を呼び出した結果を返すメソッドとは?
 
Artyom Trishkin:
クラス内部で、valuesにPrintを行う。そして、スクリプトを実行したときに出力されるログを見てください ;)

というのも、またいいんです。

クラスとなります。

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
  
  int a_s;
  int a_d;
  int d;

int g ()
{d=a_s+a_d;
return (g());
}

public:
void fg (int a,int b)
{ a_s=a;
   a_d=b;
}
void sf ()
  {g ();
  Alert (d);}

  };


台本

#include <ASD.mqh>
ASD ar;
void OnStart()
  {

   ar.fg (3,5);
   ar.sf ();
}
 
Vikon:

というのも、またいいんです。

クラスとなります。

明確でない-何を得たいのか?
 
Vikon:

そしてまた、何もない

//+------------------------------------------------------------------+
//|                                                      TestASD.mq4 |
//|              Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int      InputA=1;
input int      InputB=3;

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
public:
   int               a;
   int               b;
   int               d;
   int c(int m_a,int m_b)
     {
      m_a=a+b; m_b=a-b;
      d=m_a+m_b;
      Print(__FUNCTION__);
      return(d);
     }
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
ASD   ar;
void OnStart()
  {
//---
   ar.a=InputA;
   ar.b=InputB;
   Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d,"\nar.c(",ar.a,",",ar.b,")=",ar.c(ar.a,ar.b));
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:
明確でない-何を得たいのか?

しています。

1. スクリプトからクラスへのデータの受け渡し
2.これらのデータをクラスで合計する
3. クラスからスクリプトに合計を渡す
4. スクリプトから、データの合計をモニターまたはプリンターに印刷する。

すべて!

 
Vikon:

しています。

1. スクリプトからクラスへのデータの受け渡し
2.これらのデータをクラスで合計する
3. クラスからスクリプトに合計を渡す
4.スクリプトから、データの合計をモニターやプリンターに出力する。

すべて!

上記の例を参照してください。
 
Artyom Trishkin:
上記の例を参照してください。
でも、変数a+b=dの和も出ないし、dの和が必要なんです!そして、この金額は内密に計算されるべきであり、そうでなければ壁である。
 
Vikon:
しかし、変数a+b=dの和が必要なのに、計算されません。

正確に数えるべきものを示していない。計算された値を取得する方法、つまりc()関数を呼び 出す方法を紹介しました。

どこにも呼び出さず、dがどうにかして勝手に計算してくれるのを待っていたんですね。

そして、c()関数が何を計算するかは、あなた次第です

 
Artyom Trishkin:

正確に数えるべきものを示していない。計算された値を取得する方法、つまりc()関数を呼び 出す方法を紹介しました。

どこにも呼ばず、dがどうにかして勝手に計算してくれるのを待っていたんですね。

そして、c()関数が何をカウントしているかは、あなた自身が決めることです

Expert Advisorで関数を作成し、呼び出す方法は知っているし、使っている。授業についての質問です!

 
Artyom Trishkin:

正確に数えるべきものを示していない。計算された値を取得する方法、つまりc()関数を呼び 出す方法を紹介しました。

どこにも呼ばず、dがどうにかして勝手に計算してくれるのを待っていたんですね。

そして、c()関数が何を計算するかは、あなた次第です

それは、クラスの中でどのように関数を呼び出すか、すなわち、private:public:、クラスにどのようにデータを渡し、どのようにクラスから結果を得るか、という点です。今のところこれです!

しかし、あなたの関数も何も計算しません。