Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 674

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
Cari intenditori!
Spero di fare una domanda nel ramo giusto!
La domanda è: è possibile usare #define per definire un costrutto che si dispiegherebbe nel seguente codice:
if(a) printf("%s(%04d)", __FUNCTION__, __LINE__) +printf("%s", _Symbol);
Questo è per capire... La costruzione giusta potrebbe essere diversa. Idealmente, vorrei trovare una soluzione in modo che qualsiasi printf() all'inizio della stringa di output stampi con il costrutto "Function(string in function) " che precede la stringa quando la condizione corrisponde. Questo è tutto per abbreviare le istruzioni scritte
E vorrei che il costrutto evidenziato in rosso fosse sostituito da questo (simile):
#define P(a) if(variabile>=a) printf("%s(%04d)", __FUNCTION__, __LINE__)
Ho trovato qualcosa in Inet, un po' simile, ma non ho lavorato con le classi, quindi non riesco ancora ad elaborare i codici di lavoro. Ho provato ad applicare il costrutto inferiore nella forma
P(3)+printf("%s(%s) Accuracy=%d", Symbol, (Command==0? "Buy": "Sell"), Accuracy);
Ma qualsiasi voce del genere nel codice causa l'errore 'Print' - l'espressione di tipo 'void' è illegale ...
Ciao!
Per favore, spiegate la differenza tra
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}
и
if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("OrderSelect error %d",GetLastError());return;}
grazie!
Ciao!
Per favore, spiegate la differenza tra
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}
и
if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("OrderSelect error %d",GetLastError());return;}
Grazie!
Non c'è alcuna differenza logica. La differenza sta solo nel modo in cui è scritto questo confronto logico.
Il segno "!" è "NON". Cioè, if(!Select()) è uguale a if(Select()==false). In russo, si presenta così: if(NOT Select()).
Potete rapidamente "invertire" il valore di una variabile booleana:
Ho un'altra domanda. Quello che segue è un esempio di programma.
doppio Lotti=0,01;
int slippage=30;
int Subr1()
{
int risultato=-1;
int_result=OrderSend(_symbol,OP_BUY,Lots,slippage,0,0);
if(int_res<0){PrintFormat("OrderSend error = ",GetError());}
restituire int_result;
}
void OnTick()
{
int numer=-10;
if(OrdersTotal()==0)numer=Subr1();
se(OrdiniTotali()>0)Subr2(numer);
ritorno;
}
void Subr2(int order)
{
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;} else PrintFormat("Ok, OrderTicket = ",OrderTicket());
}
Risposta: OrderSelect errore 4051. Se lo sostituisco con SELECT_BY_POS, OrderSelect sbaglia 1. La reazione è la stessa per il tester di strategia e il "run on real data". Ho provato a rimuovere MODE_TRADES per il caso di SELECT_BY_TICKET: non c'è differenza. Qual è il problema e come risolverlo. Grazie!
Risposta: OrderSelect errore 4051. Se lo sostituisco con SELECT_BY_POS, OrderSelect sbaglia 1. La reazione è la stessa per il tester di strategia e "eseguire su dati reali". Ho provato a rimuovere MODE_TRADES per il caso di SELECT_BY_TICKET: non c'è differenza. Qual è il problema e come risolverlo? Grazie!
SELECT_BY_POS è la selezione di un ordine "per priorità" nella lista degli ordini e nel tuo disegno:
Stai cercando di selezionare un ordine che è per coda d'ordine # ... e stai usando il ticket # qui e hai solo 1 ordine e il ticket # 10023444 .... E allora? Qui avete bisogno di un numero da 1 a 2,3 ... bene, quanti ordini avete nel mercato, ... corretto il numero da 0,1,2 ... - La numerazione inizia con 0 e va fino aOrdersTotal()-1...
SELECT_BY_TICKET dovrebbe funzionare, ma solo fino al momento in cui hai il numero del ticket, cioè l'ordine che hai nel mercato, e sopra hai un controllo per inviare l'ordine, e se l'ordine non viene inviato, il ticket = -1 !
E tutto sommato, il vostro progetto per lavorare con gli ordini non è corretto. Se avete deciso di studiare MQL, ecco degli esempi già pronti per lavorare con gli ordinihttps://www.mql5.com/ru/forum/131859
Si parla di array e si parla di forex. Che paradosso!
E uno sciocco sa che tutti gli array di base in MT4/MT4 sono bufferati.
Non lo stesso livello di programmatori in MT4/MT5, per permettere agli utenti di lavorare con gli array di base.
Inoltre, gli array di base in MT4/MT5 hanno la loro estensione (.hts o .hss - non ricordo esattamente, ma qualcosa del genere).
Quindi, non arrivano al terminale in un formato di testo (con estensione .txt), ma nel loro formato proprio.
E in MT4/MT5 gli array di base sono decodificati e convertiti in array di timeframe selezionati (1 minuto, 5 minuti, 15 minuti, ecc.), e solo dopo vengono duplicati e bufferizzati.
Perché sono tamponati?
Per il confronto. In modo che nessun dato vada perso. Uno di questi array è costantemente ricalcolato (di volta in volta), e il secondo (copiato dal primo) è usato quando copiamo nei nostri dati utente.
In altre parole, la procedura per mettere i dati a disposizione degli utenti è piuttosto complessa.
Questo riguarda gli array, nel caso siate interessati.
A proposito, sia gli array MT4/MT5 di base di Android che quelli di Window hanno la stessa estensione.
--------------------------------------------------------------------------------------------------------------------------------
Per quanto riguarda l'importazione di dati DYNAMIC in MT4/MT5 da fonti di terze parti, per quanto ho capito, tale importazione non è prevista.
Quindi non esiste una procedura Client/Server in C++Builder in MT4/MT5.
--------------------------------------------------------------------------------------------------------------------------------
Mi chiedo se questa procedura sarà nella biblioteca
http://tol64.blogspot.com/2015/12/easy-and-fast-gui-mql.html
Molto probabilmente, ovviamente, non sarà nemmeno lì.
Cioè, potete provare a importare gli array dinamici in MT4/MT5 solo in formato base, dove passeranno automaticamente attraverso l'elaborazione standard dei dati.
E uno sciocco sa che tutti gli array di base in MT4/MT4 sono bufferati.
I programmatori di MT4/MT5 non sono dello stesso livello di quelli di MT4/MT5, che permettono agli utenti di lavorare con gli array di base.
Inoltre, gli array di base in MT4/MT5 hanno la loro estensione (.hts o .hss - non ricordo esattamente, ma qualcosa del genere).
Quindi, non arrivano al terminale in un formato di testo (con estensione .txt), ma nel loro formato proprio.
E in MT4/MT5 gli array di base sono decodificati e convertiti in array di timeframe selezionati (1 minuto, 5 minuti, 15 minuti, ecc.), e solo dopo vengono duplicati e bufferizzati.
Perché sono tamponati?
Per il confronto. In modo che nessun dato vada perso. Uno di questi array è costantemente ricalcolato (di volta in volta), e il secondo (copiato dal primo) è usato quando copiamo nei nostri dati utente.
In altre parole, la procedura per rendere i dati disponibili agli utenti è piuttosto complessa.
Questo riguarda gli array, nel caso siate interessati.
A proposito, sia gli array MT4/MT5 di base di Android che quelli di Window hanno la stessa estensione.
Hai un tale casino in testa che non sono nemmeno riuscito a superare
Hai fatto un casino di cose in MQL - array, file, serie temporali e buffer di indicatori.
Se riesci a digerire le informazioni che ho dato in una riga, ti do qualche spunto di riflessione: MT4 e MT5 memorizzano i dati storici in modi diversi, in MT4 un utente ha accesso ai file.hst https://docs.mql4.com/ru/files/fileopenhistory
In MT5 non c'è accesso diretto ai file della cronologia, ma c'è lavoro con i simboli personalizzatihttps://www.mql5.com/ru/docs/customsymbols
Hai un tale casino in testa che non sono nemmeno riuscito a superarlo
Hai fatto un casino di tutto MQL - array, file e buffer di indicatori
Se riesci a digerire le informazioni che ho dato in una riga, ti do qualche spunto di riflessione: MT4 e MT5 memorizzano i dati storici in modi diversi, in MT4 un utente ha accesso ai file.hst https://docs.mql4.com/ru/files/fileopenhistory
In MT5 non c'è accesso diretto ai file della cronologia, ma c'è lavoro con i simboli personalizzatihttps://www.mql5.com/ru/docs/customsymbols
Non ho detto una sola parola sui file della storia nel mio post, per niente.
Hai di nuovo confuso qualcosa, e ancora una volta, fuori tema.
Stavo parlando di insiemi di dati DINAMICI. Questo è un argomento completamente diverso. Senti la differenza.
Non ho detto una parola sui file della storia nel mio post, per niente.
Sei di nuovo confuso, e di nuovo fuori tema.
Stavo parlando di array di dati dinamici. Questo è un argomento completamente diverso.
Inoltre, gli array di base in MT4/MT5 hanno persino la loro estensione (.hts o .hss - non ricordo esattamente, ma qualcosa del genere).
Ok, vai avanti, non capisco lo scopo della tua presenza in questo thread del forum
Stavo parlando di insiemi di dati DINAMICI. Questo è un argomento completamente diverso. Senti la differenza.
OK, vai avanti, non capisco lo scopo della tua presenza in questo thread del forum
Credo che dovresti anche capire che in tutti i linguaggi di programmazione gli array dinamici sono solo array dinamici e leserie temporali sonoserie temporali e parte del lavoro (accesso) con leserie temporali è organizzato come lavoro con gli array...È qui che si discute in dettaglio la questione della formazione dei dati nel terminale:
http://profitraders.com/Python/hstRead.html
Voglio attirare l'attenzione dei lettori sul fatto che questo articolo NON riguarda i dati storici, che si trovano in: MT4->Service->Figures Archive,
e direttamente sui dati DINAMICI del terminale in formato .hst, che sono direttamente coinvolti nel processo di ottenimento ed elaborazione delle quotazioni di mercato.
------------------------------------------------------------------------------------------
Forse non sono stato abbastanza chiaro. Leggi altri autori. Spero che diventi più chiaro.