Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 523
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
Che canone è questo? C'è un documento ufficiale - è esattamente come il tuo... tutto il resto è solo un falso.
1. vale la pena impostare la serializzazione di tutti gli array utilizzati in OnCalculate
2. Prima di entrare nel ciclo, mettete buff[length]=Bid+size; - otterrete circa quello che volete. Una linea curva e alla fine una "visiera" a Bid+size
3. Osserva i confini dell'array. Naturalmente, rates_total < lunghezza, ma non si può scherzare su questo :-)
In altre parole, dovete scrivere ArraySetAsSeries all'inizio e poi ballare da lì?
Oh sì, l'ho descritto male. Avete bisogno di questa linea per andare a sinistra sul grafico e aggiornarla con ogni tick
Grazie mille per la tua risposta dettagliata!
Seguendo i vostri consigli ho diviso i rami e tutto ha funzionato.
Ho affrontato un problema con l'apertura simultanea di 10-15 ordini pendenti, ho risolto il problema aggiungendo il tuo codice dopo:
Anche questa non è una soluzione. L'ordine può essere aperto manualmente o da un altro EA. Di conseguenza, l'EA in fase di sviluppo non aprirà nulla. Quindi dobbiamo contare il numero di ordini aperti dall'Expert Advisor. Avendo questi dati, decidete se aprire o meno un ordine.
Sono sicuro che c'è un modo migliore.
Per quanto riguarda il tuo codice, per favore spiega cosa significa 1; i >=0; --i?
Questo è il ciclo dell'ordine standard. OrdersTotal() - questo è il numero di ordini. Gli ordini sono indicizzati a partire da zero. Così, se c'è 1 ordine, il suo indice sarà 0, mentre OrdersTotal() restituirà 1. Così, il ciclo dovrebbe iniziare con l'indice, che è 1 meno del numero di ordini. Otteniamo OrdiniTotali() - 1. Il secondo operando è la condizione di esecuzione del corpo del ciclo. In questo caso, il ciclo terminerà a i = -1. Il terzo operando è l'esecuzione del salto del ciclo all'indice successivo (diminuzione di 1).
Potete leggere l'operatore di loop nella documentazione.
Anche questa non è un'opzione. L'ordine può essere aperto manualmente o da un altro EA. Di conseguenza, l'EA in fase di sviluppo non aprirà nulla. Quindi dobbiamo contare il numero di ordini aperti dall'Expert Advisor. Avendo questi dati, dovremo prendere una decisione se aprire o meno un ordine.
Ho provato in questo modo ma ha ricominciato ad aprire 10-15 ordini per 1 segnale:
Il terzo operando è quello di passare all'indice successivo (diminuire di 1).
Quindi sta guardando tutti gli ordini dalla fine?
Ho provato questo, ma ha iniziato ad aprire di nuovo 10-15 ordini per 1 segnale:
Quindi guarda tutti gli ordini dalla fine?
Per usare la funzione OrderMagicNumber(), dovete prima selezionare un ordine. Il ciclo standard di raccolta delle informazioni sui propri ordini si presenta così (per esempio, contare il numero dei propri ordini):
Dopo l'esecuzione di questo codice, la variabile nCnt conterrà il numero di ordini di lavoro dell'Expert Advisor.
Risolvo il problema come segue...
Grazie.
Per usare la funzione OrderMagicNumber(), dovete prima selezionare un ordine. Il ciclo standard di raccolta di informazioni sui propri ordini si presenta così (ad esempio, contare il numero dei propri ordini):
Dopo l'esecuzione di questo codice, la variabile nCnt conterrà il numero di ordini di lavoro dell'EA.
Grazie mille! Ha funzionato!
Potreste consigliarmi se ++nCnt è la sostituzione del numero di ordini ottenuto nella variabile nCnt stessa?
Grazie mille! Ha funzionato.
Potete dirmi se ++nCnt sta sostituendo il numero di ordini ricevuti nella variabile nCnt stessa?
In tutti questi casi, consultare subito la documentazione. ))
Grazie mille! Ha funzionato.
Potete dirmi se ++nCnt è la sostituzione del numero di ordini ricevuti nella variabile nCnt stessa?
C'è una documentazione completa del linguaggio, basta dare un'occhiata al menu superiore del sito.
Non essere pigro a leggerlo, è impossibile tenere tutto in testa, quasi tutti, non solo i principianti, ci riescono sempre.
C'è una documentazione completa sul linguaggio, basta dare un'occhiata al menu superiore del sito web.
Non siate pigri a leggerlo - non potete tenere tutto nella vostra testa - è sempre lì per quasi tutti - non solo per i neofiti.
Grazie. Non sono sempre sicuro in quale sezione guardare, non sono ancora molto bravo e l'editor di F1 non sempre mi manda nel posto giusto)
Cercherò di non disturbare con domande stupide, grazie per la vostra pazienza)
1. intendi iniziare scrivendo ArraySetAsSeries e poi andare da lì?
Oh sì, l'ho descritto male. Avete bisogno di questa linea per andare a sinistra sul grafico e aggiornarla con ogni tick
Quindi disegnate una linea orizzontale.
Perché avete bisogno dei buffer e del loro ricalcolo? ObjectSetDoubke(0,myHLine,OBJPROP_PRICE,concrete_price_value);
l'utente vedrà la linea, non si perde tempo a ricalcolare i buffer, tutti sono contenti e si disperdono felicemente
PS/ si capisce bene - indicatore buffer, serve a trasferire (condividere/condividere) i risultati dei calcoli eseguiti in primo luogo. Disegnare una linea orizzontale di lunghezza N è diverso