[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 404

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
1. Beh, se sono arrivati nuovi dati, questo è ciò di cui abbiamo bisogno, no?
2. Beh, sì, abbiamo bisogno di dati dalla barra 0, ovviamente. MarketInfo() estrae i dati dalla barra zero, tutto qui. Allora perché paragonarlo a qualcos'altro?
3. anche se c'è un buco nella storia, non influenzerà i calcoli attuali. Avrebbe avuto un impatto nel momento in cui il buco era lì. Cioè, se otteniamo l'Ask attuale, non ci interessa molto sapere quali erano i prezzi diverse barre fa (non intendo formalmente, ma riguardo al momento attuale riguardo a una certa variabile di mercato, perché la funzione RefreshRates() farà il trucco riguardo al momento attuale nel tempo sulla 0a barra!
Certo, ho scavato a fondo, ma voglio capire come comportarmi meglio.
4. Tu, Vadim, mi hai detto che ho scritto male la funzione qui sopra:
Secondo voi, cosa c'è di sbagliato?
1. Se non ci sono dati, ma non ne sappiamo nulla? Restituisce FALSE. Come dovrebbe essere valutato? Nessun dato o un errore, o ci sono ancora dati?
2. Dovete riconciliarvi per risolvere il problema del 1° punto.
3. Non si considera la dinamica del processo. Accendere il computer, il terminale. Tutti i dati sembrano essere arrivati. Tutto convergeva sulla barra dello zero. I segnali vengono trovati. L'affare è concluso. Si è scoperto che non tutti i dati sono arrivati. 5 minuti dopo abbiamo ottenuto le barre mancanti con i numeri 1,2,3,4,5. Il segnale è scomparso. Cosa fare?
4. L'ho segnato in rosso. Un possibile errore di scelta di un identificatore sbagliato nello switch non è ancora gestito. Ho scritto sopra come dovrebbe essere fatto.
È inutile chiamare RefreshRates() senza aspettare il risultato. Può fallire per molto tempo.
Chi fa una tale domanda?
Cosa c'è di sbagliato secondo voi?
Non è sbagliato, è solo confuso.
Fine:
Se ld_price = 0, la funzione restituisce 0 da sola. Perciò non abbiamo bisogno di un assegno.
Questo è un guasto:
Anche non necessario. Potete usare MraketInfo() in tutti i casi.
Alla fine, la funzione si trasforma nella funzione MarketInfo() nella sua forma pura (se si rimuovono tutte le cose inutili).
In linea di principio, teoricamente, questi sono i posti giusti:
Non ci interessa cosa restituisce RefreshRates(), è importante che le variabili Ask e Bid abbiano gli ultimi valori conosciuti dal terminale.
Ciao!
Qual è la ragione dei diversi risultati del tester per lo stesso EA?
Il periodo testato, la coppia di valute e il timeframe sono gli stessi, ma i risultati ottenuti oggi sono molto diversi da quelli precedenti, l'EA ha smesso di aprire posizioni lunghe.
Non so se la colpa sia delle quotazioni del terminale o del fine settimana. Forse le persone competenti possono aprirmi gli occhi sulla ragione ovvia?
Ciao!
Qual è la ragione dei diversi risultati del tester per lo stesso EA?
Il periodo testato, la coppia di valute e il timeframe sono gli stessi, ma i risultati ottenuti oggi sono molto diversi da quelli precedenti, l'EA ha smesso di aprire posizioni lunghe.
Non so se la colpa sia delle quotazioni del terminale o del fine settimana. Forse le persone competenti possono aprirmi gli occhi sulla ragione ovvia?
Anche due test fatti in fila uno dopo l'altro possono essere diversi, e in modo molto evidente. Il broker cambia lo spread e il test viene fatto con uno spread diverso. Un cambiamento di un punto è sufficiente.
Se c'è stato un test precedente molto tempo fa, forse le impostazioni si sono allentate.
1. Se non ci sono dati e allo stesso tempo ci sono tutti questi dati, ma non ne sappiamo nulla? Restituisce FALSE. Come deve essere interpretato questo? Non ci sono dati o c'è un errore, o ci sono ancora dati?
Non ti capisco. Andiamo in ordine... Chiamiamo RefreshRates(), nessun dato è arrivato... Ma ci sono dei dati. Quello che abbiamo qui è un casino. Se i dati non sono arrivati, i dati non saranno disponibili o i dati non sono stati aggiornati perché la variabile di mercato non è cambiata... Ci sono solo due opzioni.
Se restituisce TRU dopo aver chiamatoRefreshRates(), allora i dati sono stati aggiornati. E se restituisce FELS, allora o non hanno aggiornato, perché c'è un errore o non hanno aggiornato, perché i dati sono freschi e non hanno bisogno di essere aggiornati.
Quindi, capisco che questo può essere visto come segue:RefreshRates() controlla i dati, se i dati non sono nuovi, non aggiorna quelli che non sono nuovi, cioè non sono cambiati, e se sono nuovi, aggiorna. Quindi si può fare affidamento solo sul flag restituito daRefreshRates(). Avete altre opzioni?
2. È necessario riconciliare per risolvere il problema del 1° elemento.
L'hai detto tu:
Riconcilio i dati dal server (MarketInfo()) con la barra zero. Aspettando che siano uguali.
Bene MarketInfo() sta tirando dalla barra zero così com'è... Cosa intendete con quanto sopra?
3. Non si considera la dinamica del processo. Ha acceso il computer, il terminale. Tutti i dati sembrano essere arrivati. Tutto convergeva sulla barra zero. I segnali vengono trovati. L'affare è concluso. Si è scoperto che non tutti i dati sono arrivati. Cinque minuti dopo abbiamo ottenuto le barre mancanti con i numeri 1,2,3,4,5. Il segnale è scomparso. Cosa fare?
Ho deciso di aggiornarlo di nuovo. Ma cosa succede se chiamiamo RefreshRates() e questo aggiorna i dati lentamente? Cioè alcuni dei calcoli saranno eseguiti con alcuni dati di mercato, e altri con altri dati... Che cosa allora?
4. Contrassegnato in rosso. Inoltre, un possibile errore di selezione dell'identificatore sbagliato nello switch non viene gestito. Ho scritto sopra come dovrebbe essere gestito.
È inutile chiamare RefreshRates() senza aspettare il risultato. Può fallire per molto tempo.
Hm. Beh, se aspettiamo, la citazione potrebbe cambiare... C'è una strada a doppio senso qui?
RefreshRates(); // Perché questo freno senza elaborazione del valore di ritorno?
Lo menzioni diverse volte, ma non c'è ancora alcuno specifico. Voglio dire, per quanto vedo questa funzione usata di solito, è appena prima del codice in cui si usano le variabili dei dati di mercato e questo è tutto. Non ci pensano davvero. Ma ci ho pensato e ho deciso di capire come farlo bene. Per sapere con certezza che tale e tale approccio è effettivamente corretto e funzionerà in tutte le condizioni normali.
Allora Vadim, cosa intendi con questa espressione:
"
Perché questo freno senza elaborare il valore di ritorno?".
Come possono essere trattati? Ho scritto la mia logica sopra, ma non ho avuto risposta. L'ho descritto abbastanza accuratamente e senza alcuna variante.
Non è sbagliato, è solo confuso.
Fine:
Se ld_price = 0, la funzione restituisce 0 da sola. Pertanto, non è necessario alcun controllo.
Questa è la ripartizione:
Non è nemmeno necessario. Potete usare MraketInfo() in tutti i casi.
Alla fine, la funzione si trasforma in una pura funzione MarketInfo() (se si rimuovono tutte le cose inutili).
E poi perché Ask (se stiamo parlando specificamente del prezzo di acquisto), se possiamo 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 questo momento?
Non importa cosa restituisce la funzione RefreshRates(), è importante che le variabili Ask e Bid abbiano gli ultimi valori conosciuti dal terminale.
In pratica, abbiamo bisogno di qualcos'altro, per quanto ne so. E abbiamo bisogno di un ultimo server Ask e Bid e non di un terminale locale. Giusto?
Per questo ho iniziato una discussione qui, per capire una volta per tutte come organizzarla in modo più logico e corretto. Perché in teoria questo è corretto, ma in pratica...