MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 93

 
Vikon :
Baskılar yalnızca işlevin içine eklenebilir, ancak yazdırma veya uyarının çalışması için bu işlevi nasıl çağıracağımı anlamıyorum. Kodumu üç basit değişkenle düzelterek yardımcı olabilir misiniz ??? Her şeyi yazıda anlatıldığı gibi yapıyorum ama editör atlamıyor ya da bir şey eklenmemiş ya da bir şey anlaşılmamış, her halükarda duvar, bu yüzden yardım istedim. SKC için teşekkürler.

uyarırsın d.

Sizin için nerede hesaplanır?

//+------------------------------------------------------------------+
//|                                                      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);
  }
//+------------------------------------------------------------------+
Ve kendisini çağırmanın sonucuna bir çağrı döndüren yöntem nedir?
 
Artyom Trishkin :
Sınıfın içinde, değerlere Prints yapın. Ardından, komut dosyasını çalıştırdığınızda orada ne yazdırılacağına günlüğe bakın;)

Ve ayrıca hiçbir şey

Sınıf:

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);}

  };


senaryo

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

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

Ve ayrıca hiçbir şey

Sınıf:

Net değil - bir şeyi ne elde etmek istiyorsunuz?
 
Vikon :

Ve ayrıca hiçbir şey

//+------------------------------------------------------------------+
//|                                                      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 :
Net değil - bir şeyi ne elde etmek istiyorsunuz?

İstemek:

1. komut dosyasından sınıfa veri aktarın
2. sınıfta bu verilerin toplamını üretmek
3. Tutarı sınıftan komut dosyasına aktarın
4. Komut dosyasındaki verilerin toplamını monitöre veya yazıcıya gönderin.

Herşey!

 
Vikon :

İstemek:

1. komut dosyasından sınıfa veri aktarın
2. sınıfta bu verilerin toplamını üretmek
3. Tutarı sınıftan komut dosyasına aktarın
4. Komut dosyasındaki verilerin toplamını monitöre veya yazıcıya gönderin.

Herşey!

Yukarıdaki örneğe bakın
 
Artyom Trishkin :
Yukarıdaki örneğe bakın
Ama aynı zamanda a + b = d değişkenlerinin toplamını da vermiyor ama d toplamına ihtiyacım var! Ve bu miktar özelde ne kadar hesaplanacaktı: yoksa duvar!
 
Vikon :
Ama aynı zamanda a + b = d değişkenlerinin toplamını da vermiyor ama d toplamına ihtiyacım var!

Size göre tam olarak neyi sayması gerektiğini göstermedim. Hesaplanan değerin nasıl alınacağını gösterdim -c() işlevini çağırın ;

Onu hiçbir yerde aramadın ve d'nin bir şekilde kendini hesaplamasını bekledin.

Ve c() işlevinin orada ne düşündüğü size kalmış

 
Artyom Trishkin :

Size göre tam olarak neyi sayması gerektiğini göstermedim. Hesaplanan değerin nasıl alınacağını gösterdim -c() işlevini çağırın ;

Onu hiçbir yerde aramadın ve d'nin bir şekilde kendini hesaplamasını bekledin.

Ve c() işlevinin orada ne düşündüğü size kalmış

Bir işlevin nasıl oluşturulacağını ve onu bir EA'da nasıl çağırılacağını biliyorum ve kullanıyorum. Sorun sınıflarla ortaya çıktı!

 
Artyom Trishkin :

Size göre tam olarak neyi sayması gerektiğini göstermedim. Hesaplanan değerin nasıl alınacağını gösterdim -c() işlevini çağırın ;

Onu hiçbir yerde aramadın ve d'nin bir şekilde kendini hesaplamasını bekledin.

Ve c() işlevinin orada ne düşündüğü size kalmış

Sınıf içinde bir işlevin nasıl çağrılacağının tüm amacı, yani ne kadar private: public: birbirleriyle nasıl çalışılacağı, sınıfa nasıl veri aktarılacağı ve sınıftan sonucun nasıl alınacağı budur. Şimdilik, işte burada!

Ancak işleviniz de hiçbir şey hesaplamaz.