per continuare...
Ho pensato di convertire le righe di questo esempio:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_metodo_slow!=MODE_SMA && m_metodo_slow!=MODE_EMA && m_metodo_slow!=MODE_SMMA && m_metodo_slow!=MODE_LWMA)
Nell'algoritmo:
1) due array:
il primo contiene m_method_fast e m_method_slow
il secondo contiene i valori dell'enumerazione ENUM_MA_METHOD.
2) In un ciclo, prendendo il valore del primo array, controllare se si trova nel secondo.
Potete dirmi come implementare questo?
Ho capito che è necessario collegare CArray . Ma di che tipo?
Chi può, per favore, scrivere una parte del codice, perché le cose elementari di base, e con la sintassi non posso ancora prendere.
Grazie!

- www.mql5.com
per continuare...
Ho pensato di convertire le righe di questo esempio:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_metodo_slow!=MODE_SMA && m_metodo_slow!=MODE_EMA && m_metodo_slow!=MODE_SMMA && m_metodo_slow!=MODE_LWMA)
Nell'algoritmo:
1) due array:
il primo contiene m_method_fast e m_method_slow
il secondo contiene i valori dell'enumerazione ENUM_MA_METHOD.
2) In un ciclo, prendendo il valore del primo array, controllare se si trova nel secondo.
Potete dirmi come implementare questo?
Ho capito che è necessario collegare CArray . Ma di che tipo?
Chi può, per favore, scrivere una parte del codice, perché le cose elementari di base, e con la sintassi non posso ancora prendere.
Grazie!
Come questo:
func(int& array1[],int& array2[]) { int total1=ArraySize(array1); int total2=ArraySize(array2); //--- for(int i=0;i<total1;i++) { for(int j=0;j<total2;j++) { if(array1[i]==array2[j]) { // trovato } } } }
Sì, sono già arrivato a questo punto in C++ per principianti :-)
Solo che non esiste un tipo di dati ENUM_MA_METHOD.
Come posso scoprire in quale tipo di dati consiste questa enumerazione? È possibile eseguire un ciclo attraverso l'enumerazione ENUM_MA_METHOD stessa?
Ora vedo due modi:
/il primo modo per descrivere entrambi gli array ENUM_MA_METHOD l_array_enum_ma_method[3]; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; print("array size %d", ArraySize(l_array_enum_ma_method)); print("ENUM_MA_METHOD size %d", ArraySize(ENUM_MA_METHOD)); ENUM_MA_METHOD l_array_select_method[1]; l_array_select_method[0]=m_MethodFast; l_array_select_method[1]=m_MethodSlow; //ulteriormente secondo lo schema //secondo modo, collegare la libreria //#includere <ArraysArrayInt.mqh> CArrayInt *l_array_enum_ma_method=new CArrayInt; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; l_array_enum_ma_method.Sort(); //--- elemento di ricerca if(l_array_enum_ma_method.Search(m_MethodFast)!=-1) printf("Element found"); else printf("Element not found"); //--- eliminare l'array delete l_array_enum_ma_method;
nel secondo modo è necessario collegare una libreria di un tipo specifico, e che tipo è ENUM_MA_METHOD?
hmm... strano, ho cliccato su reply e si è rivelato un nuovo post....
Sì, sono già arrivato a questo punto in C++ per principianti :-)
Solo che non esiste un tipo di dati ENUM_MA_METHOD.
Come posso scoprire in quale tipo di dati consiste questa enumerazione? È possibile eseguire un ciclo attraverso l'enumerazione ENUM_MA_METHOD stessa?
Ora vedo due modi:
nel secondo modo è necessario collegare una libreria di un tipo specifico, e che tipo è ENUM_MA_METHOD?
hmm... strano, ho fatto clic su reply e si è rivelato un nuovo post....
Primo modo:
ENUM_MA_METHOD l_array_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; //--- più avanti nella linea
Secondo modo:
#include <Arrays\ArrayInt.mqh> CArrayInt l_array_enum_ma_method; //--- l_array_enum_ma_method.Add(MODE_SMA); l_array_enum_ma_method.Add(MODE_EMA); l_array_enum_ma_method.Add(MODE_SMMA); l_array_enum_ma_method.Add(MODE_LWMA); //--- più avanti nella linea
Non riesco a capire perché sono necessari così tanti passaggi?
oops... grazie mille, è quello che sto cercando di fare... via.
Nel primo caso, ho già visto questo modo di registrare, ma non ho ancora capito di cosa ho bisogno,
e nel secondo caso - ero confuso da ArrayInt. Pensavo che essendo Int, significa che viene memorizzato solo il valore numerico, ma ,
sembra che il compilatore converta MODE_SMA in un numero, e quando si recupera il valore, sarà necessario eseguire una conversione implicita (usando le parentesi) al tipo(ENUM_MA_METHOD), cioè qualcosa di simile al seguente.
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
P.S. Nella terza sezione 3. Metodi per l'impostazione dei parametri, dovremmo cancellare le righe dichiarate prematuramente, penso a
:
CiCustom m_fast_ma; // indicatore come oggetto CiCustom m_slow_ma; // indicatore come oggetto
P.S. Nella terza sezione 3. Metodi per l'impostazione dei parametri, penso che dovremmo cancellare le righe dichiarate prematuramente:
Mi stavo entusiasmando, ma non riesco a risolvere il problema (comm - ho letto del trasferimento dell'indirizzo di memoria, ma non ha funzionato nemmeno in questo modo):
Il compilatore restituisce l'errore 'm_MethodFast' - espressione costante richiesta, ' m_MethodSlow' - espressione costante richiesta
Naturalmente, queste sono domande per i non addetti ai lavori. forse dovrei porre tali domande in un altro thread, in modo da non intasare l'articolo?
/il primo modo per descrivere entrambi gli array //int *Finger_m_MethodFast; //int *Finger_m_MethodSlow; //Finger_m_MethodFast=&m_MethodFast; //Finger_m_MethodFast=&m_MethodSlow; // int l_array1_select_method[]={Finger_m_MethodFast,Finger_m_MethodFast}; ENUM_MA_METHOD l_array1_select_method[]={m_MethodFast,m_MethodSlow}; ENUM_MA_METHOD l_array2_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; int total_array1=ArraySize(l_array1_select_method); int total_array2=ArraySize(l_array2_enum_ma_method); bool NoErrorsFlag=false; for(int i_array1=0;i_array1<total_array1;i_array1++) { for(int i_array2=0;i_array2<total_array2;i_array2++) { if(l_array1_select_method[i_array1]=l_array2_enum_ma_method[i_array2]) { NoErrorsFlag=true; } } if(!NoErrorsFlag) { PrintFormat("Tipo di lisciatura non valido %s media mobile!".,EnumToString(l_array1_select_method[i_array1])); } } if(!NoErrorsFlag) { return(false); }

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Crea il Tuo Robot di Trading in 6 Passaggi! è stato pubblicato:
Se non sai come vengono costruite le classi di trading e hai paura delle parole "Programmazione Orientata agli Oggetti", allora questo articolo fa per te. In effetti, non è necessario conoscere i dettagli per scrivere il proprio modulo di segnali di trading. Basta seguire alcune semplici regole. Tutto il resto verrà fatto da MQL5 Wizard e otterrai un robot di trading pronto all'uso!
È vero, MQL5 Wizard semplifica enormemente la creazione di un Expert Advisor, ma prima devi imparare cosa verrà utilizzato come input per esso. Per creare automaticamente un Expert Advisor utilizzando MQL5 Wizard, assicurati che i suoi componenti aderiscano a cinque classi di base della sezione Classi di base degli Expert Advisor:
Ecco tutta la forza dell'approccio "grande e terribile" chiamato Programmazione Orientata agli Oggetti (OOP). Ma niente paura, ormai quasi tutti hanno un cellulare con tante funzioni e quasi nessuno sa come funziona. Non abbiamo bisogno di studiare tutto questo, parleremo solo di alcune funzioni della classe CExpertSignal.
Autore: MetaQuotes