Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 577
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
Bene, formerei tutto in una funzione, e la chiamerei quando ne ho bisogno - anche ad ogni tick (se è ragionevole e necessario), o all'apertura di una nuova candela - per esempio, una volta all'ora, se lavoriamo in H1.
Con la funzione, naturalmente, è comodo. Ho capito il codice. Ora è chiaro. Penserò, come portarlo a quegli scopi che voglio e capire, quando e in quale fase prendere i dati necessari.
Se fosse proprio "il massimo dell'imprudenza", sarebbe vietato.
WinAPI estende notevolmente le capacità di MQL. E si può fare qualcosa di stupido anche senza dll.
Ed ecco un esempio di passaggio di stringhe negli appunti:
Ben fatto, e anche con i commenti.
Grazie.
Ecco un'altra domanda.
Sarebbe possibile emulare un clic del mouse su determinate coordinate?
Grande, e anche con il commento.
Grazie.
Un'altra domanda.
È possibile fare un'emulazione di un clic del mouse alle coordinate date?
Grande, e anche con un commento.
Grazie.
Un'altra domanda.
È possibile fare un'emulazione di un clic del mouse alle coordinate date?
Sì, possiamo.
Bene, formerei tutto in una funzione e la chiamerei quando ho bisogno - ad ogni tick (se necessario e ragionevole) o all'apertura di una nuova candela - per esempio, una volta all'ora, se lavoriamo con H1.
Artem, ho capito bene, se abbiamo un ciclo:for(int i=0; i<copy_bars; i++) e c'è un ciclo for(int j=0; j<copy_bars; j++) dove if(j==i) continua; ,
vorrà dire che il conteggio è parallelo e se abbiamo circa 5 candele, il confronto continuerà:
1 con 1 - scartare.
1 con 2, 1 con 3, 1 con 4, 1 con 5.
Poi inizierà un ciclo dove sarà:
2 con 1, 2 con 3, 2 con 4, 2 con 5.
e così via.
È così che sarà?
Artem, ho capito bene che se abbiamo un ciclo:for(int i=0; i<copy_bars; i++) e c'è un ciclo for(int j=0; j<copy_bars; j++) dove if(j==i) continua; ,
vorrà dire che il conteggio è parallelo e se abbiamo circa 5 candele, il confronto continuerà:
1 con 1 - scartare.
1 con 2, 1 con 3, 1 con 4, 1 con 5.
Poi inizierà un ciclo dove sarà:
2 con 1, 2 con 3, 2 con 4, 2 con 5.
e così via.
Sarà lo stesso?
Sì.
Un'altra domanda: se non abbiamo bisogno di confrontare la candela corrente, allora non dobbiamo iniziare il conteggio da 1 e non da zero?
O dovremmo capire che qui 0 è la candela 1, 1 è la candela 2, ecc.
Un'altra domanda: se non abbiamo bisogno di confrontare la candela corrente, allora non dobbiamo iniziare il conteggio da 1 e non da zero?
o dovremmo capire che qui 0 è la candela 1, 1 è la candela 2, ecc.
Qui lo zero è l'inizio dell'array. E nell'array scriviamo le candele dalla prima a ..., non "a", ma nel numero che ci serve:
1 è il numero di candele da copiare e copy_bars è il numero di candele da copiare.
Pertanto, array[] contiene la candela necessaria nella cella con indice 0 - o 1 o 1+copy_bars-1. A seconda della direzione di indicizzazione di array[] (ArraySetAsSeries() imposta la direzione di indicizzazione, che può essere controllata usando ArrayGetAsSeries(), ArrayIsSeries())
Qui lo zero è l'inizio dell'array. E nell'array scriviamo candele dalla prima alla ..., non "alla", ma in numero di candele di cui abbiamo bisogno:
1 è il numero di candele da copiare e copy_bars è il numero di candele da copiare.
Pertanto, array[] contiene la candela richiesta nella cella con indice 0 - o 1 o 1+copy_bars-1. A seconda della direzione di indicizzazione di array[] (ArraySetAsSeries() imposta la direzione di indicizzazione, che può essere controllata con ArrayGetAsSeries(), ArrayIsSeries())
Oh, questa programmazione. Più avanti nel bosco....
Per prima cosa ho controllato quello che mostra tramite Alert. Sembra essere viceversa, cioè la candela più vicina a quella attuale ha il numero massimo.
Poi l'ho controllato via:
bool series=ArrayIsSeries(dataCandle);
Allarme (serie);
e lo script mostra "falso".
Secondo la mia logica, se falso è all'estremità sbagliata, allora vero sarà all'estremità giusta.
Ho prescritto:
ArraySetAsSeries (dataCandle, true); //cambia direzione
bool series=ArrayIsSeries(dataCandle); //controlla di nuovo
Alert (series); //scrivere il risultato sullo schermo.
Ma ottengo ancora "falso" dopo questo.
Qual è il mio problema?
Oh, questa programmazione. Più avanti nel bosco....
Ho controllato prima solo attraverso Alert cosa dava. Risulta essere il contrario, cioè la candela più vicina alla candela attuale ha il numero massimo.
Poi l'ho controllato via:
bool series=ArrayIsSeries(dataCandle);
Allarme (serie);
e lo script mostra "falso".
Secondo la mia logica, se falso è all'estremità sbagliata, allora vero sarà all'estremità giusta.
Ho prescritto:
ArraySetAsSeries (dataCandle, true); //cambia direzione
bool series=ArrayIsSeries(dataCandle); //controlla di nuovo
Alert (series); //scrivere il risultato sullo schermo.
Ma ottengo ancora "falso" dopo questo.
Qual è il mio problema?
Il dataCandles è una struttura. L'array dove scriviamo le candele della storia - array[]. E dobbiamo renderla una serie temporale in modo che la sua indicizzazione coincida con l'indicizzazione delle candele sul grafico. Cioè la cella zero dell'array[] corrisponderà alle candele più vicine alla data corrente.
Cioè: 1. copiare le candele nell'array array[], 2. renderlo una serie temporale, poi leggere i valori da esso nella struttura.
Si può fare a meno di array[] - basta scrivere i dati direttamente dal grafico nella struttura, ma ho suggerito questo per compatibilità con Five - permette di copiare direttamente solo nell'indicatore usando high[i], low[i] e altri dati, ma nello script o Expert Advisor, dobbiamo prima copiare l'intervallo storico necessario nell'array, cosa che ho fatto.