[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 405

 
hoz:
1. Perché dovrebbe accadere all'improvviso? Abbiamo solo bisogno di aggiungere altro, che la funzione ha restituito qualche altro valore, che significherebbe, "Nessun prezzo". Sembra logico. Quando lanciavo la funzione, pensavo più alla logica precedente, poi non ho fatto attenzione alla sua fine. E perché la funzione 0 restituisce 0 da sola non capisco qualcosa...

2. Perché ho bisogno di Ask (se stiamo parlando specificamente del prezzo di acquisto), se posso sempre usare MarketInfo(fs_symbol, MODE_ASK)? Dopotutto, se la si guarda in questo modo, facendo riferimento ad Ask, non si può essere sicuri che sia preciso in un dato momento?

1. Semplice. La funzione è dichiarata come double, quindi quando viene chiamata, restituirà double indipendentemente dal fatto che chiami return o no. Se aggiungiamo altro... ma non abbiamo ancora quest'altro.

2. Se non fa differenza se premete 3 tasti o 30, non avete bisogno di questi Bid e Ask. Se Expert Advisor non fa calcoli lunghi, va bene, è conveniente usare Bid e Ask. Se esegue calcoli lunghi, potete usare RefreshRates(). Ci sono diversi modi per farlo.

 
hoz:


Per quanto ho capito, questo non è ciò di cui abbiamo bisogno. E abbiamo bisogno dei prezzi dell'ultimo server Ask e Bid, non di quelli del terminale locale. Giusto?

Per questo ho iniziato la discussione qui, per capire una volta per tutte come organizzarla in modo più logico e corretto. Perché in teoria questo è corretto, ma in pratica...

Il server è là fuori, e ci viene dato un terminale per contattare il server. Se c'è una connessione, allora l'ultimo prezzo nel terminale corrisponderà all'ultimo prezzo sul server. Se non c'è connessione, allora non importa affatto quali sono i prezzi.

 
Dopo aver eseguito la prima o la seconda istruzione if, ho bisogno di interrompere le seguenti istruzioni if e trasferire il controllo a un blocco con altri criteri di trading. I cicli hanno un'interruzione con l'istruzione continue, ma ho bisogno di interrompere l'esecuzione di una serie di istruzioni. Come si fa? Puoi darmi un suggerimento?
 
Hai provato una pausa; hai provato una pausa?
 
Buon pomeriggio. Attualmente sto lavorando a un diploma sui robot di trading. Sono un economista, non un programmatore, ma ho avuto un'idea, anche se credo che sia venuta a molti. Ma ho avuto un'idea, anche se penso che sia capitato a molte persone, per collegare sar parabolica e (dal momento che sar non è molto buono a piatto) bande di bollinger. Fondamentalmente con le impostazioni standard, e comprare, quando candela tocca il fondo di BB (e parabolica si muove sotto), e la prossima chiude sopra precedente (e parabolica si muove più lontano dal prezzo a causa di accel e mostra tendenza). Lo stesso nella parte superiore quando si vende. Sarebbe interessante utilizzare un trailing stop le cui impostazioni potrebbero essere impostate manualmente... Qualcuno ha per caso un'idea simile già in mql? o se qualcuno può aiutare, perché vorrei davvero testarlo...grazie in anticipo
 
Integer:

1. Semplice. La funzione è dichiarata come double, quindi restituirà double quando chiamata, indipendentemente dal fatto che return sia stato chiamato in essa. Se aggiungiamo altro... ...ma quell'altro non c'è ancora.

2. Se non fa differenza se premete 3 tasti o 30, non avete bisogno di questi Bid e Ask. Se Expert Advisor non fa calcoli lunghi, va bene, è conveniente usare Bid e Ask. Se esegue calcoli lunghi, potete usare RefreshRates(). Tutto può essere fatto in diversi modi.

1. Sì, sono solo sovraccarico di lavoro e devo aver scritto una cosa stupida.

2. Lungo è un termine relativo. Sta suggerendo di misurare la velocità del calcolo medio?

Intero:

Il server è là fuori da qualche parte e ci viene dato un terminale per contattare il server. Se c'è una connessione, allora l'ultimo prezzo nel terminale corrisponderà all'ultimo prezzo sul server. Se non c'è connessione, non importa quale sia il prezzo sul server.

Se assumiamo, come avete scritto, che l'ultimo valore della variabile di mercato (nel nostro caso, il prezzo ) corrisponde all'ultimo valore del server, allora significa che il terminale aggiorna le variabili dell'ambiente di mercato se ha connessione con il server. Ma non è così, perché questa funzione esiste e significa che i prezzi non vengono aggiornati continuamente, giusto?

Non sto discutendo, sto chiedendo, argomentando il mio punto di vista. Si prega di notare che!

 
hoz:

Se assumiamo, come hai scritto, che il terminale abbia l'ultimo valore della variabile dei dati di mercato, nel nostro caso il prezzo, corrispondente all'ultimo valore del server, allora significa che il terminale aggiorna da solo le variabili dell'ambiente di mercato se c'è una connessione con il server, il che significa che la funzione RefreshRates() non è necessaria. Ma non è così, perché questa funzione esiste e significa che i prezzi non vengono aggiornati continuamente, giusto?

Non sto discutendo, sto chiedendo, argomentando il mio punto di vista. Si prega di notare che!


Se arrivano nuovi tick durante i calcoli nell'EA (quando la funzione start() è in esecuzione), l'EA non li conoscerà (tick). RefreshRates() permette di utilizzare gli ultimi prezzi aggiornati, ma questa funzione non accede al server. Aggiorna l'ambiente di mercato noto al terminale. Nessuna delle funzioni, tranne il trading, accede al server
 
Vinin:

Se arrivano nuovi tick durante i calcoli nell'EA (quando la funzione start() è in esecuzione), l'EA non li conoscerà (tick). RefreshRates() permette di utilizzare gli ultimi prezzi aggiornati, ma questa funzione non accede al server. Aggiorna l'ambiente di mercato noto al terminale. Nessuna delle funzioni, tranne quelle di trading, accede al server.

Quindi se la richiesta è locale e non al server, allora questa funzione dovrebbe funzionare istantaneamente! Come detto sopra, la funzione RefreshRates() potrebbe non avere il tempo di aggiornare i dati dell'ambiente di mercato...
 
hoz:

Quindi se la richiesta è locale e non al server, allora questa funzione dovrebbe funzionare istantaneamente! E sopra è stato detto che la funzione RefreshRates() potrebbe non avere il tempo di aggiornare i dati dell'ambiente di mercato...

Funziona. E lo aggiorna se c'è qualcosa da aggiornare. Ma se non c'è stata nessuna nuova spunta, non c'è niente da aggiornare.
 
Vinin:

E funzionerà. E lo aggiorna se c'è qualcosa da aggiornare. Ma se non c'è una nuova spunta, non c'è niente da aggiornare.


Quindi se non c'è un nuovo tick, il prezzo non cambierà... e ovviamente i prezzi precedenti saranno ancora validi. Quindi non c'è bisogno di complicare le cose!

E Vadim ha scritto in cima che era necessario controllare questo punto. Ma non c'era logica nelle sue parole, e nemmeno argomentazione. È strano... Così, inserisco RefreshRates() ovunque e in quel momento gli ultimi dati conosciuti dal terminale diventano utilizzabili al posto dei precedenti e tutto va come dovrebbe. A condizione cheRefreshRates() restituisca TRU. Se è Falso, significa che i dati non sono cambiati e funziona con i prezzi precedenti... Sto ragionando correttamente?

Quindi non ho bisogno di preoccuparmi, basta chiamareRefreshRates() e funzionerà con i dati reali...