Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1331
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
Aiuta a correggere l'indicatore, non viene visualizzato nel terminale MT5, dà errori durante la compilazione.
Aiuta a risolvere l'indicatore, non viene visualizzato nel terminale MT5, dà errori durante la compilazione.
Il modo più semplice è impostare ArraySetAsSeries(Open,true) ; ArraySetAsSeries(Close,true) ; e così via in OnCalculate all'inizio di tutti gli array.
questa è la tradizionale sorpresa in apparenza: in 5 le direzioni di indicizzazione predefinite sono diverse che in 4.
L'indicatore non usa buffer, costruisce solo oggetti grafici - dopo l'avvio premi Ctrl+B e vedi dove li ha messi
Scavando attraverso la documentazione e il forum ...
Come rendere globali le variabili di tipo puntatore [nell'esempio var], se sono create in OnInit() da stringa:
CObj* var=new CObj(p1,p2,p3);
e il numero di oggetti e i parametri del costruttore non sono noti in anticipo e sono calcolati in OnInit() ?
Scavando attraverso la documentazione e il forum ...
Come rendere globali le variabili di tipo puntatore, se sono create in OnInit():
e il numero di oggetti e i parametri del costruttore non sono noti in anticipo e sono calcolati in OnInit() ?
Non ci capisco niente, ma passare un array di puntatori CArrayObj agli oggetti creati in OnInit()
Niente di comprensibile, ma passare un array di puntatori CArrayObj agli oggetti creati in OnInit()
Artem, grazie per la risposta.
Mi scuso per la domanda poco chiara)
Ci sono tre variabili globali di tipo puntatore a un oggetto in Expert Advisor: var1, var2, var3.
Prima di eseguire OnInit(), non si sa se tutte queste variabili saranno necessarie (questo è legato ai tempi), anche i parametri per i costruttori, che inizializzeranno gli oggetti, sono sconosciuti.
Come creare tali variabili in OnInit() in modo che siano globali?
Artem, grazie per la tua risposta.
Mi scuso per la domanda poco chiara)
In EA si possono usare tre variabili globali di tipo puntatore: var1, var2, var3.
Prima di eseguire OnInit(), non si sa se tutte queste variabili saranno necessarie (questo è legato ai tempi), anche i parametri per i costruttori che inizializzeranno gli oggetti sono sconosciuti.
Come creare tali variabili in OnInit(), in modo che siano globali?
Non so quale magico costruttore hai lì, che contiene solo incognite :)
Non è necessario dichiarare prima gli oggetti come istanze.
Dovete dichiarare un array CArrayObj. I vostri oggetti stessi devono essere discendenti di CObject.
Create il vostro oggetto con new e aggiungete un puntatore ad esso alla lista.
Crea il prossimo oggetto e lo aggiunge alla lista, e così via.
Questa lista - un puntatore ad essa (e la lista è dichiarata globalmente) - è passata ai vostri costruttori.
Ma ecco come volevi fare i costruttori con argomenti sconosciuti in anticipo - non ci capisco niente. Cerca di chiarirlo
Ma ecco come farete i costruttori con argomenti sconosciuti in anticipo - sono un po' confuso qui. Prova a spiegarlo
Creazione di oggetti di tipo CIsNewBar per ogni timeframe utilizzato per ogni simbolo.
HH.C'era un problema con la classeCArrayObj: quando si accede agli elementi di tipoCArrayObj* ArrayObj. At(0), i membri della classe dell'oggetto che è At(0) sono inaccessibili, anche se questi membri della classe sono esattamente pubblici, cioè un costrutto di tipo ArrayObj.At(0).method(parameter) non funziona.I caratteri sono specificati da una linea con separatori nel parametro di input, quindi non è possibile creare tutti gli oggetti in anticipo prima di OnInit().
Cioè il primo parametro sconosciuto del costruttore è un simbolo.
Il secondo parametro sconosciuto del costruttore è un timeframe, poiché ogni simbolo avrà il proprio insieme di timeframe, analogamente passato da una stringa con delimitatori nel parametro di input.
E ho anche paura di usare queste librerie, forse qualcosa cambierà in esse quando si aggiorna il terminale, e il mio Expert Advisor smetterà improvvisamente di funzionare...
Crea oggetti di tipo CIsNewBar per ogni timeframe utilizzato per ogni simbolo.
P.S.C'era un problema con la classeCArrayObj: quando si accede agli elementi di tipoCArrayObj* ArrayObj. At(0), i membri della classe oggetto che At(0) non è disponibile, anche se questi membri della classe sono esattamente pubblici, cioè un costrutto di tipo ArrayObj.At(0).method(parameter) non funziona.I caratteri sono specificati da una linea con delimitatori nel parametro di input, quindi è impossibile creare tutti gli oggetti prima di OnInit().
Cioè il primo parametro sconosciuto del costruttore è un simbolo.
Il secondo parametro sconosciuto del costruttore è un timeframe, poiché ogni simbolo avrà il proprio insieme di timeframe, analogamente passato da una stringa con delimitatori nel parametro di input.
E ho anche paura di usare queste librerie, forse qualcosa cambierà in esse quando si aggiorna il terminale, e il mio Expert Advisor smetterà improvvisamente di funzionare...
È tutto sbagliato in qualche modo...
Scrivi in parole semplici quello che vuoi fare. Senza alcun riferimento ai vostri tentativi di codificare il tutto.
Non mi sembra giusto...
Scrivi in parole semplici quello che vuoi fare. Senza alcun accenno ai vostri tentativi di codificare il tutto.
Consulente esperto multivaluta.
La lista dei simboli è specificata tramite il parametro di input, la stringa con il delimitatore "AUDUSD,EURUSD,GBPUSD...", il numero di simboli non è predefinito.
Per ogni simbolo, ci sono due timeframes, su cui lavora il suo "proprio" sistema di trading.
Corrispondentemente, ci sono due parametri di input, stringhe delimitate da: breve lasso di tempo per un rispettivo simbolo "M1,M30,M5..."
un timeframe lungo per il rispettivo simbolo "H1,D1,H4.."
Cioè per AUDUSD i timeframe sono M1 e H1, per EURUSD M30 e D1, ecc.
In OnTick(), per ogni simbolo, è necessario tracciare la comparsa di una nuova barra su entrambi i timeframe (breve e lungo) per prendere decisioni di trading.
Ho cercato di scriverlo nel modo più semplice possibile)
Consulente esperto multivaluta.
L'elenco dei simboli è impostato tramite il parametro di input, una stringa con separatore "AUDUSD,EURUSD,GBPUSD...", il numero di simboli non è predefinito.
Per ogni simbolo, ci sono due timeframes, su cui lavora il suo "proprio" sistema di trading.
Corrispondentemente, ci sono due parametri di input, stringhe delimitate da: breve lasso di tempo per un rispettivo simbolo "M1,M30,M5..."
un timeframe lungo per il rispettivo simbolo "H1,D1,H4.."
Cioè per AUDUSD i timeframe sono M1 e H1, per EURUSD M30 e D1, ecc.
In OnTick(), per ogni simbolo, è necessario tracciare la comparsa di una nuova barra su entrambi i timeframe (breve e lungo) per prendere decisioni di trading.
Ho cercato di scriverlo nel modo più semplice possibile).
Avete già una classe per un nuovo bar?
E come sono esattamente i parametri di input?