Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 93
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Le stampe possono essere inserite solo all'interno di una funzione, ma non capisco come chiamare questa funzione per far funzionare la stampa o l'avviso. Puoi aiutarmi sistemando il mio codice con tre semplici variabili? Faccio tutto come descritto nell'articolo, ma l'editor non appare, o manca qualcosa, o manca qualcosa, in ogni caso, il muro, così ho chiesto aiuto. Grazie per l'SKC.
State emettendo d con un allarme.
Dove si calcola?
//| 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);
}
//+------------------------------------------------------------------+
All'interno della classe, fate delle stampe ai valori. E poi guardate nel log cosa verrà stampato quando si esegue lo script ;)
E quindi va anche bene.
classe:
{
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);}
};
lo script
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
E quindi va anche bene.
classe:
E così anche niente
//| 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));
}
//+------------------------------------------------------------------+
Non è chiaro - cosa vuoi ottenere?
Lo faccio:
1. per passare dati dallo script alla classe
2. sommare questi dati nella classe
3. passare la somma dalla classe allo script
4. dallo script, stampare la somma dei dati su un monitor o una stampante.
Tutto!
Lo faccio:
1. passare i dati dallo script alla classe
2. sommare questi dati nella classe
3. passare la somma dalla classe allo script
4. Dallo script, emetti la somma dei dati su un monitor o una stampante.
Tutti!
Vedere l'esempio precedente
Ma non calcola nemmeno la somma delle variabili a+b=d, mentre io ho bisogno della somma di d!
Non vi ho mostrato esattamente cosa dovrebbe contare. Vi ho mostrato come ottenere il valore calcolato - chiamate la funzione c();
Non l'hai chiamato da nessuna parte e hai aspettato che d si calcolasse in qualche modo da solo.
E cosa calcola la funzione c() dipende da voi
Non vi ho mostrato esattamente cosa dovrebbe contare. Vi ho mostrato come ottenere il valore calcolato - chiamate la funzione c();
Non l'avete chiamato da nessuna parte, e stavate aspettando che d si calcolasse in qualche modo da solo.
E dovete decidere da soli cosa conta la funzione c()!
So come creare e chiamare la funzione nell'Expert Advisor, e la uso. La domanda riguarda le classi!
Non vi ho mostrato esattamente cosa dovrebbe contare. Vi ho mostrato come ottenere il valore calcolato - chiamate la funzione c();
Non l'hai chiamato da nessuna parte, e stavi aspettando che d si calcolasse in qualche modo da solo.
E cosa calcola la funzione c() dipende da voi
Questo è il punto, come chiamare una funzione all'interno di una classe, cioè, come privato: pubblico:, come passare dati a una classe e come ottenere il risultato dalla classe. Finora questo è tutto!
Ma anche la vostra funzione non calcola nulla.