[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 276
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
Quando si usano (chiamano) funzioni da questi file (già implementate in mt4), in caso di funzionamento errato dell'EA, possiamo vedere nel log il numero dell'errore che abbiamo fatto nel codice.
Per esempio, chiamiamo la funzione GetLastError() :
In questo caso, se abbiamo fatto un errore nel codice o impostato parametri esterni errati, vedremo il numero di questo errore nel log.
Per esempio, 130.
E la decodifica del numero può essere trovata sulla pagina -https://book.mql4.com/ru/appendix/errors
E non dovremo cercare in tutto il codice, perché sappiamo già da questo numero - dove è stato fatto esattamente l'errore!
Permettetemi di correggere un po': la funzione GetLastError può essere chiamata senza il file di intestazione, ma per ottenere la descrizione dell'errore senza navigare nei siti dovreste collegare la libreria:
Non avete chiamato la funzione correttamente.
La vostra funzione si chiama così: se (NumberOfPositions(NULL,Magic)> 1)
Dovrebbe apparire così:
Sentite la differenza (avete mancato il "-1")! e CAMBIATE IL VOSTRO CODICE.
Per controllarlo, è possibile stampare un commento sul grafico. Per esempio, così (all'inizio della funzione START).
Per quanto riguarda la tua seconda condizione, io ("senza pensare in modo intelligente") imposterei un mago diverso e una funzione separata Open_Buy_2() per aprire le posizioni dalla seconda condizione !Il codice della seconda condizione sarebbe come questo
rid,
Capisco anche perché la seconda condizione non funziona, forse ho spiegato male il problema:
Voglio che il mio EA sia in grado di controllare se gli ordini sono stati aperti da lui o no, anche se sono stati chiusi molto tempo fa. NumberOfPositions funziona, ma conta solo il numero di posizioni aperte. (ecco perché non funziona)
Nel codice del mio EA, c'è uno script che apre ogni posizione successiva tenendo conto dei dati della posizione precedente e se non c'era una posizione precedente, il primo ordine dovrebbe essere aperto senza questa condizione (altrimenti, l'EA non parte). Pertanto, ci dovrebbe essere una funzione che capisce se almeno un ordine di questo EA è stato aperto o meno (anche se l'ordine è stato poi chiuso). Se non c'è stato ancora nessun ordine (l'inizio del lavoro), allora il primo ordine viene aperto senza considerare la seconda condizione, e tutti gli ordini successivi vengono aperti considerando la seconda condizione, cioè usando i dati degli ordini precedenti.
È possibile modificare la funzione in questo modo?
Per favore, ditemi cosa mostra la funzione iTime.
Che cos'è questa baggianata di 10 cifre? Secondi?
Come si tradurrebbe in anno-mese-giorno-ora-minuti?
Capisco. Potete determinare se le posizioni sono state nella storia in questo modo:
Ma allora il vostro codice funzionerà solo in tester. Perché altrimenti dovrete cambiare il magik ogni volta che accendete l'EA online.
A quanto pare, è necessario impostare il tempo per il quale viene presa la storia dell'account.
Cioè, quando è stato aperto/chiuso l'ultimo scambio con il dato magik? Era sei mesi fa o 24 ore fa?
Ci sono funzioni che restituiscono il numero di barra (contando dalla barra corrente fino al fondo della storia) dell'ultimo trade aperto o chiuso.
Per darvi un esempio. Ho usato queste funzioni nel mio codice in questo modo:
O come questo:
alle prese con lo stesso semplice problema... apre un mare di posizioni ma ne serve solo 1 al massimo e quando l'acquisto si chiude e arriva un segnale per aprire la vendita... Grande richiesta di suggerimento e correzione di ciò che è sbagliato nel codice qui sotto... Dove devo prescrivere un magik? Se non ti dispiace, fai un esempio stupido, quando compri incroci verso l'alto (non più di 1 ordine) e vendi verso il basso anch'esso non più di 1. Penso che questo risolverà immediatamente le domande di molti neofiti. Grazie in anticipo.
Un'altra domanda stupida:
- Come dichiarare un array il cui numero di elementi è dato da una variabile esterna.
È così.
Un'altra domanda stupida:
- Come dichiarare un array il cui numero di elementi è dato da una variabile esterna.
https://docs.mql4.com/ru/array/ArrayResize
alle prese con lo stesso semplice problema... apre un mare di posizioni ma ne serve solo 1 al massimo e quando l'acquisto si chiude e arriva un segnale per aprire la vendita... Grande richiesta di suggerimento e correzione di ciò che è sbagliato nel codice qui sotto... Dove devo prescrivere un magik? Se non ti dispiace, fai un esempio stupido, quando compri incroci verso l'alto (non più di 1 ordine) e vendi verso il basso anch'esso non più di 1. Penso che questo risolverà immediatamente le domande di molti neofiti. Grazie in anticipo.
Prova così:
(dovete essere più attenti con NumberOfPositions(), è scritto nell'intestazione per una ragione:
/| Descrizione : | Descrizione : Restituisce il numero di posizioni.
//| Parametri: |
//| sy - nome dello strumento ("" o NULL - simbolo corrente) |
|| op - operazione ( -1 - qualsiasi posizione) |
//| mn - MagicNumber ( -1 - qualsiasi numero magico) |
//+----------------------------------------------------------------------------+