Confronto tra la media mobile (e qualsiasi altro indicatore) e l'errore - pagina 3

 
Dina Paches:

Grazie, Artyom, ma purtroppo si scopre che può avere anche dei limiti.

Spero di non aver ucciso nessuno?
 
Artyom Trishkin:
Spero che tu non abbia ucciso nessuno.

No. Non ha niente a che vedere con l'ambiente che mi circonda).

 
Dina Paches:

Io no. Non ha niente a che vedere con l'ambiente che mi circonda).

Beh, che ne dite di un insetto? No? Peccato... ;)
 
Artyom Trishkin:

Beh, in primo luogo, la differenza di due valori normalizzati darà alla fine un valore non normalizzato. Dovete controllare la differenza normalizzata.

In secondo luogo, se volete catturare i crossover all'interno di una barra, prendete i valori di tutti i tick sullo zero e sulla prima barra - ne prenderete molti... ...ti aspetta una vera delizia...

Se testate dall'apertura di una barra, l'Expert Advisor dovrebbe ovviamente tracciare l'apertura di una nuova barra e, dopo il fatto, controllare i crossover.

Prima di tutto, decidi per te stesso - fai trading all'apertura della barra, o ad ogni tick, poi scrivi il tuo codice. E, di conseguenza, testarlo allo stesso modo.

In primo luogo, ho scritto nel primo post che faccio trading solo all'apertura delle barre. C'è una sottigliezza nel trading delle zecche. Puoi ottenere un segnale, ma visivamente non ci sarà nessun crossover sul grafico, perché è disegnato solo a certi prezzi (apertura, chiusura, ecc.). Non è disegnato da zecche. In questo caso, spiegate al profano che sì, non c'è nessun crossover sul grafico, ma perché è specifico per il disegno di muwings quando si visualizzano solo valori distanti (di nuovo, prezzi di apertura, chiusura, ecc. - approssimazione, se avete sentito questa parola) piuttosto che per tick. In secondo luogo, la normalizzazione delle differenze non ha senso. Non saprete MAI in anticipo a quale segno dovete normalizzare per evitare di ottenere esattamente 0 (stupidamente non tagliando tutte le cifre significative). Sono stato impegnato nella programmazione per un bel po' di tempo, e in relazione a ciò capisco abbastanza bene la matematica computazionale (nella mia occupazione principale - modellazione della fisica, dove devo costantemente lottare con la precisione dei calcoli). Infatti, in generale, la normalizzazione è una grande semplificazione, se non si vuole approfondire le complessità della matematica del calcolo, gli errori, ecc. Se ti consideri un tale guru e non sei disposto ad abbassarti a leggere attentamente tutto l'argomento e poi arrivare a delle conclusioni, è una cosa. Se questo non è il caso e stai anche facendo trading sull'apertura di una nuova barra, allora prova a testare il tuo robot sulla barra del 29.07.2015 alle 3:20 con i parametri di due SMA 5 e 34 applicate al prezzo di chiusura, su un timeframe di un minuto. Esattamente la situazione in cui i movimenti all'interno della stessa barra si incrociano due volte. E questa situazione non è realistica quando il trading non si basa sui tick. Il vostro robot di trading riceverà entrambi i segnali? E soprattutto, la risposta alla domanda perché sulla stessa barra la differenza di muwings (o meglio i loro valori grezzi) in tempi diversi non è uguale, non è stata ancora data (solo Alexey Lebedev ci ha provato, grazie per questo, ma sono tutte congetture ...). Ed è impossibile rispondere senza conoscere i principi del funzionamento dell'iMA.

P.S. Solo per chiacchierare, credo che ci siano dei thread speciali sul forum, se non vuoi entrare nel cuore del problema.

 
Dina Paches:

Grazie, Artyom, ma purtroppo si scopre che può avere anche dei limiti.

Grazie per il consiglio, naturalmente, ma posso leggere l'Aiuto da solo. E ancora, la matematica computazionale non è legata a un particolare linguaggio di programmazione. Sono proprio gli errori di calcolo che bisogna affrontare.
 
gammaray:
...

Continua a reinventare l'iperboloide. Funziona sempre per me e conta correttamente. Oh, sì, scusate, non sono un guru della vostra matematica computazionale, non invento cazzate - faccio programmi per MT4 e MT5. E continui a fare il furbo, se non vuoi sentire quello che ti viene detto (e non si tratta di un libro di testo).

Ripeto - se fai trading all'apertura di una nuova barra - la domanda è: perché hai bisogno di una croce all'interno della barra (ti interessa? Se sì, ti consiglierò come farlo, se no - lascia perdere).

Non ho intenzione di usare il mio robot sui tuoi dati temporali - ho rinunciato da tempo al trading sui MAH. E il fatto che i MAE sovrascrivono la barra zero quando vengono calcolati usando tutti i prezzi tranne il prezzo aperto è noto anche a uno scolaro. Perché dovresti spiegare a qualcuno che c'era e ora non c'è più, se fai trading all'apertura di una candela? Quindi all'apertura e prendere i dati dal MAA.

Dove avete trovato il problema? Ecco la tua croce:


Potete darmi un codice che identifichi correttamente questo crossover?

 
Artyom Trishkin:

Continua a reinventare l'iperboloide. Funziona sempre per me e conta correttamente. Oh, sì, scusate, non sono un guru della vostra matematica computazionale, non invento cazzate - faccio programmi per MT4 e MT5. E tu continui a fare il furbo, visto che non vuoi sentire quello che ti viene detto (e non si tratta di un libro di testo).

Ripeto - se fai trading all'apertura di una nuova barra - la domanda è: perché hai bisogno di una croce all'interno della barra (ti interessa? Se sì, ti consiglierò come farlo, se no - lascia perdere).

Non ho intenzione di usare il mio robot sulle tue serie temporali - ho rinunciato al trading sui MAH molto tempo fa. E il fatto che i MAE sovrascrivono la barra zero quando vengono calcolati usando tutti i prezzi tranne il prezzo aperto è noto anche a uno scolaro. A cosa ti serve spiegare a qualcuno che c'era e ora non c'è più se fai trading all'apertura di una candela? Quindi all'apertura e prendere i dati dal MAA.

Dove avete trovato il problema? Ecco il tuo crossover:


Potete suggerire un codice che identifichi correttamente questo crossover?

Non sto inventando l'iperdoloide. Se avessi voluto inventarlo, non vi avrei chiesto nulla. E non sto facendo il furbo, sto dando dei controesempi (compresa la tua normalizzazione preferita). Per quanto riguarda i crossover all'interno di una barra. Il TS più primitivo su MA apre gli scambi alla loro intersezione. Al prossimo incrocio nella direzione opposta, la prima cosa da fare è chiudere il trade aperto al vecchio incrocio, e aprirne uno nuovo di fronte ad esso. Se mi manca un crossover (e nel caso di crossover all'interno della barra due volte, per così dire, sarà così), allora mi manca un segnale. E di conseguenza non chiudo il commercio attuale. E il mio robot ha due trade attivi, anche se ci dovrebbe essere sempre un trade in questo TS. Ecco perché ogni crossover è importante. Inoltre, riguardo al prezzo all'apertura di una candela. In questo caso la parte del leone dei segnali di crossover sarà persa se prendiamo per esempio i valori MA ai prezzi di chiusura. Un semplice esempio - prendiamo il prezzo di chiusura della MA (non importa quale prendere per una nuova barra, dato che è appena apparsa; tutti i valori di МА saranno uguali). Immaginate la situazione in cui le MA sono incrociate da qualche parte nel mezzo della barra appena apparsa, ma al prezzo di apertura non sono incrociate. Sulla prossima nuova barra, quell'intersezione è persa del tutto perché prendiamo il prezzo di chiusura della barra precedente (e si sono incrociati da qualche parte tra i prezzi di apertura e di chiusura). I segnali arriveranno solo in quel raro caso che è stato originariamente descritto da me quando la MA si incrocia esattamente al prezzo di chiusura della barra. Significa che se la barra corrente è aperta, c'è già una limitazione che МА dovrebbe essere applicata ai prezzi aperti.

Ho trattato l'esempio che ho dato introducendo una disuguaglianza non rigida. Prova a testare la barra nel mio post precedente (dove ci sono due incroci di MA in una barra) e vedi se il tuo robot rileva questi incroci? Se funziona solo quando appare una barra, è impossibile. Solo se funziona a zecche. E ho già descritto le insidie

 

Non è mai necessario normalizzare nulla quando si confrontano due numeri reali.

Se i numeri sono veramente uguali, sono immagazzinati in memoria allo stesso modo. In realtà, è proprio grazie a questa proprietà che le macchine di calcolo possono esistere.

Quindi, i confronti della forma if(a<b) o if(a==b) sono corretti in ogni caso e non è richiesta alcuna normalizzazione.

Se la mente curiosa di un ricercatore trova contraddizioni a questa regola, significa che o la sua macchina è fuori uso, o la sua mente. Uno dei due.

L'aiuto e la documentazione naturalmente dovrebbero essere letti almeno qualche volta (sono stati scritti anche da umanoidi come noi), ma è necessario avere il proprio ragionamento sensato.

 
gammaray:

Non sto inventando l'iperdoloide. Se volessi inventare, non chiederei nulla qui. E non sto facendo il furbo, ma dando dei controesempi (anche per la tua normalizzazione preferita). Per quanto riguarda i crossover all'interno di una barra. Il TS più primitivo sul MA apre gli scambi alla loro intersezione. Al prossimo incrocio in direzione opposta, la prima cosa da fare è chiudere il trade aperto al vecchio incrocio e aprirne uno nuovo di fronte ad esso. Se mi manca un crossover (e nel caso di crossover all'interno della barra due volte, per così dire, sarà così), allora mi manca un segnale. E di conseguenza non chiudo il commercio attuale. E il mio robot ha due trade attivi, anche se ci dovrebbe essere sempre un trade in questo TS. Ecco perché ogni crossover è importante. Inoltre, riguardo al prezzo all'apertura di una candela. In questo caso la parte del leone dei segnali di crossover sarà persa se prendiamo per esempio i valori MA ai prezzi di chiusura. Un semplice esempio - prendiamo il prezzo di chiusura della MA (non importa quale prendere per una nuova barra, dato che è appena apparsa; tutti i valori di МА saranno uguali). Immaginate la situazione in cui le MA sono incrociate da qualche parte nel mezzo della barra appena apparsa, ma al prezzo di apertura non sono incrociate. Sulla prossima nuova barra, quell'intersezione è persa del tutto perché prendiamo il prezzo di chiusura della barra precedente (e si sono incrociati da qualche parte tra il prezzo di apertura e di chiusura). I segnali arriveranno solo in quel raro caso che è stato originariamente descritto da me quando la MA si incrocia esattamente al prezzo di chiusura della barra. Significa che se la barra corrente è aperta, c'è già una limitazione che МА dovrebbe essere applicata ai prezzi aperti.

Ho trattato l'esempio che ho dato introducendo una disuguaglianza non rigida. Prova a testare la barra nel mio post precedente (dove ci sono due incroci di MA in una barra) e vedi se il tuo robot rileva questi incroci? Se funziona solo quando appare una barra, è impossibile. Solo se funziona a zecche. E lì ho già descritto le insidie

Cerca i crossover ad ogni tick. Qual è il problema?
 
Andrey Dik:

Non è mai necessario normalizzare nulla quando si confrontano due numeri reali.

Se i numeri sono davvero uguali, vengono memorizzati allo stesso modo. Infatti, è proprio questa proprietà che rende possibile l'esistenza delle macchine da calcolo.

Quindi, i confronti della forma if(a<b) o if(a==b) sono corretti in ogni caso e non è richiesta alcuna normalizzazione.

Se la mente curiosa di un ricercatore trova contraddizioni a questa regola, significa che o la sua macchina è fuori uso, o la sua mente. Uno dei due.

L'aiuto e la documentazione devono certamente essere letti almeno qualche volta (sono stati scritti anche dall'uomo come noi), ma bisogna avere le proprie considerazioni ragionevoli.

Se la normalizzazione non fosse necessaria quando si confrontano numeri di tipo doppio usando uno dei metodi suggeriti in Documentation, non sorgerebbero nemmeno queste domande.

E non devo usare la normalizzazione per ottenere la precisione necessaria per l'innesco di qualsiasi condizione nei miei codici. Per non parlare del fatto che l'uso della normalizzazione dei valori a diversi decimali nel confronto, può essere semplicemente di per sé conveniente e richiesto quando si impostano le condizioni di confronto, in base ai compiti da risolvere.

P./S.: Ma, in generale, ne ho parlato in questo thread e prima:

Sulla possibilità con l'aiuto della normalizzazione di regolare/adeguare il livello richiesto di accuratezza dei confronti (e/o dei valori di uscita) e/o degli errori tollerabili per alcuni compiti e scopi, che a sua volta, tra le altre cose, permette alle condizioni del programma di funzionare esattamente dove e come è stato inteso quando si prescrivono condizioni specifiche nel codice.