L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 200
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
Torniamo all'affermazione originale sugli errori della R nell'articolo.
La nostra opinione è ancora valida: ci sono degli errori presenti, e sono stati causati da una disattenzione nell'implementazione.
Proverò a fare una domanda al team di supporto R.
E tu ci entri, ricalcoli tutto, passi qualche settimana a ricontrollare come ha fatto lui. Ma invece non hai nemmeno letto il nostro articolo.
Da parte nostra, abbiamo fatto il lavoro. E abbiamo fatto un buon lavoro. Se neanche Wolfram è un'autorità per voi, allora state perdendo il vostro tempo con questo modo di comunicare.
Non confondete i creatori con gli utenti, per favore.
E tu ci entri, ricalcoli tutto, passi qualche settimana a ricontrollare come ha fatto lui. Ma invece non hai nemmeno letto il nostro articolo.
Da parte nostra, abbiamo fatto il lavoro. E abbiamo fatto un buon lavoro. Se neanche Wolfram è un'autorità per voi, allora state perdendo il vostro tempo con questo modo di comunicare.
Non confondete i creatori con gli utenti, per favore.
Ci sono molte formule che assumono 0^0=1, per esempio la notazione per i polinomi e le serie di potenze, l'aritmetica dei numeri cardinali, il teorema binomiale, ecc., tutti questi presuppongono 0^0=1. Per esempio, sostituendo x=0 in x^0+x^1+x^2+... = 1/(1-x) mostra 0^0 = 1.
Si può supporre che definire una funzione significa specificare un modo per calcolarla.
Espressione dataInoltre, secondo:
https://en.wikipedia.org/wiki/Gamma_distribution
quando x = 0, alfa = 1, beta = 1, si ottiene un valore indefinito nel numeratore, che porta l'intera frazione nell'incertezza.
Diciamo che, a rigore, la densità gamma della distribuzione al punto zero è indefinita. E prendendo il limite a destra, la densità è uguale a uno.
Alla luce di ciò, crediamo che la formulazione dell'affermazione "errori di calcolo in R" non sia corretta. Più precisamente, è una questione di convenzioni: che considerare uguale all'espressione zero in grado zero. Equiparare la densità della distribuzione gamma a zero nel punto zero non sembra essere una pratica valida.
non si adatta alla definizione della funzione perché contiene un'incertezza nel punto x=0, come avete sottolineato.
Se la condizione x>=0 è messa al posto di x>0 allora non c'è incertezza e si possono calcolare i valori usando questa formula.
Per quanto riguarda la pratica - Mathematica e Matlab possono essere considerati come standard industriali per i calcoli ingegneristici, producono 0, cioè quell'espressione è valida solo per x>0.
Possiamo assumere che definire una funzione significa specificare un modo per calcolarla.
L'espressione data è.non è appropriato per definire una funzione perché contiene un'incertezza a x=0, come avete sottolineato.
Se metti la condizione x>=0 invece di x>0, non c'è incertezza e puoi calcolare i valori usando questa formula.
Per quanto riguarda la pratica - Mathematica e Matlab possono essere considerati lo standard industriale per i calcoli ingegneristici, danno 0, cioè quell'espressione è vera solo per x>0.
Mathematica e Matlab possono essere considerati lo standard industriale per i calcoli di ingegneria
Hai preso una situazione per la quale non c'è soluzione, hai cercato il risultato che Wolfram restituisce, e hai chiamato sbagliati tutti gli altri risultati. Questo non è un calcolo ingegneristico, ma un dogma.
Potrebbero prendere R come riferimento e scrivere su come trovare un errore in Wolfram. Immagino che se si prendono tutti i software di matematica, e li si divide in due gruppi in base a ciò che restituiscono in questa situazione - ci sarà una divisione 50%/50%, si può aggiungere una dozzina di altri software che mql eccelle in un articolo su mql.
Grazie per gli errori menzionati inAS 243. Ma non dovreste dare la colpa al comportamento di altre funzioni con parametri, per le quali non esiste una soluzione chiara.
Quindi si sarebbe dovuto scrivere nell'articolo sui vantaggi di mql - guarda, in R c'è una funzione che ha un errore di 15 cifre decimali. E abbiamo un'altra funzione in mql che è più precisa. Tutto sarebbe colto e scientifico, non dogmatico come adesso.
Consideriamo un esempio con i parametri a=0,5, b=1 nel punto x=0
Se non escludiamo il punto x=0, la densità diverge e la probabilità è OK.
E più avanti non c'è neanche un problema:
Si scopre che quando il calcolo della CDF R esclude il punto x=0, l'infinito è scomparso da qualche parte.
Caro collega!
Per diverse pagine c'è una discussione sulle differenze tra i vostri algoritmi e quelli di R sui bordi del dominio della funzione. I punti marginali sono punti marginali e in pratica le differenze possono essere trascurate.
Ma in questo caso ho una domanda molto più sostanziale:
Dov'è la documentazione per tutte le vostre funzioni?
In precedenza, ho pensato che prendiamo la vostra funzione, poi prendiamo la documentazione di R, dato che le vostre funzioni sono analoghe, e approfondiamo quelle parti della documentazione di R che descrivono gli algoritmi, o vanno ai link forniti da R. R ha una documentazione e un apparato di riferimento di altissima qualità.
Nel corso della discussione, ho scoperto che le vostre funzioni sono diverse da R - sono alcune altre funzioni i cui algoritmi si basano su altre fonti. Non c'è niente di questo nell'articolo stesso, nessuna documentazione. E lo apprendiamo da Renat in un contesto completamente diverso.
In pratica, possiamo trarre una conclusione inequivocabile che il codice non può essere portato da R a MQL5.
Ed ecco perché.
Per me è chiaro che se dice "analogo di R" e non c'è documentazione sull'analogo, allora è analogico al 100% e posso facilmente trasferire il codice dall'interprete al compilatore senza preoccuparmene. E se non è così, è abbastanza per mettere fine all'idea di portare il codice da R a MQL5. Nessuno vuole avere un mal di testa completamente bloccato quando trasferendo il codice funzionante in R si ottiene un codice MQL che non funziona a causa di sottigliezze nell'implementazione degli algoritmi.
Dov'è la documentazione per tutte le vostre funzioni?
In precedenza, ho pensato che prendiamo la vostra funzione, poi prendiamo la documentazione di R, dato che le vostre funzioni sono analoghe, e andiamo in quelle parti della documentazione di R che o descrivono gli algoritmi, o vanno ai link forniti da R. R ha una documentazione e un apparato di riferimento di altissima qualità.
Nel corso della discussione, ho scoperto che le vostre funzioni sono diverse da R - sono alcune altre funzioni i cui algoritmi si basano su altre fonti. Non c'è niente di questo nell'articolo stesso, nessuna documentazione. E lo apprendiamo da Renat in un contesto completamente diverso.
In pratica, possiamo trarre una conclusione inequivocabile che il codice non può essere portato da R a MQL5.
Ed ecco perché.
Per me è chiaro che se dice "analogo di R" e non c'è documentazione sull'analogo, allora è analogico al 100% e posso facilmente trasferire il codice dall'interprete al compilatore senza preoccuparmene. E se non è così, è abbastanza per mettere fine all'idea di portare il codice da R a MQL5. Nessuno vuole ottenere un blocco completo, quando dopo la migrazione del codice di lavoro in R si ottiene il codice MQL, che non funziona a causa delle sottigliezze nell'implementazione degli algoritmi.
Per il momento le funzioni sono descritte nell'articolo https://www.mql5.com/ru/articles/2742
Consideriamo come esempio il calcolo di una distribuzione normale con parametri mu=2, sigma=1:
n <- 10
k <- seq(0,1,by=1/n)
mu=2
sigma=1
normal_pdf<-dnorm(k, mu, sigma, log = FALSE)
normal_cdf<-pnorm(k, mu, sigma, lower.tail=TRUE,log.p = FALSE)
normal_quantile <- qnorm(normal_cdf, mu,sigma, lower.tail=TRUE,log.p = FALSE)
normal_pdf
normal_cdf
normal_quantile
1) L'analogo della funzione R dnorm() è una funzione:
La funzione calcola i valori della funzione di densità di probabilità della distribuzione normale con i parametri mu e sigma per l'array di variabili casuali x[]. In caso di errore restituisce false. Un analogo di dnorm() in R.
2) pnorm analogico:
La funzione calcola il valore della funzione di distribuzione normale con i parametri mu e sigma per l'array di variabili casuali x[]. In caso di errore, restituisce false. Analogo di pnorm() in R.
3) Analogo di qnorm:
Questa funzione calcola i valori della funzione inversa della distribuzione normale con i parametri mu e sigma per l'array di valori probability[]. In caso di errore, restituisce false. L'analogo di qnorm() in R.
Questo è un esempio di come usarlo:
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- arrays for calculated values
double x_values[];
double normal_pdf[];
double normal_cdf[];
double normal_quantile[];
//--- prepare x values
const int N=11;
ArrayResize(x_values,N);
for(int i=0;i<N;i++)
x_values[i]=i*1.0/(N-1);
//--- set distribution parameters
double mu=2.0;
double sigma=1.0;
//--- calculate pdf, cdf and quantiles
MathProbabilityDensityNormal(x_values,mu,sigma,false,normal_pdf);
MathCumulativeDistributionNormal(x_values,mu,sigma,true,false,normal_cdf);
MathQuantileNormal(normal_cdf,mu,sigma,true,false,normal_quantile);
//--- show calculated values
for(int i=0;i<N;i++)
PrintFormat("1 %d, x=%.20e PDF=%.20e, CDF=%.20e, Q=%.20e,",i,x_values[i],normal_pdf[i],normal_cdf[i],normal_quantile[i]);
}
Risultato:
2016.11.11:56:46.413 Test (EURUSD,H1) 1 0, x=0.0000000000000000e+00 PDF=5.39909665131880628364e-02, CDF=2.27501319481792120547e-02, Q=0.0000000000000000e+00,
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 1, x=1.00000000000000005551e-01 PDF=6.56158147746765951780e-02, CDF=2.87165598160018034624e-02, Q=1.0000000000088818e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 2, x=2.00000000000000011102e-01 PDF=7.89501583008941493214e-02, CDF=3.593031911292598098213e-02, Q=2.0000000000177636e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 3, x=2.99999999999999988898e-01 PDF=9.40490773768869470217e-02, CDF=4.456546247585430410108e-02, Q=3.0000000000266454e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 4, x=4.000000000000022204e-01 PDF=1.1092083434679455543315e-01, CDF=5.47992916995579740225e-02, Q=3.99999999999999911182e-01
2016.11.11:56:46.413 Test (EURUSD,H1) 1 5, x=5.0000000000000000e-01 PDF=1.29517595665891743772e-01, CDF=6.68072012688580713080e-02, Q=5.0000000000222045e-01,
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 6, x=5.9999999999999999977796e-01 PDF=1.49727465635744877437e-01, CDF=8.07566592337710387195e-02, Q=6.0000000000310862e-01
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 7, x=6.99999999999999955591e-01 PDF=1.71368592047807355438e-01, CDF=9.6800484585610344040793e-02, Q=7.0000000000177636e-01
2016.11.11:56:46.413 Test (EURUSD,H1) 1 8, x=8.000000000000044409e-01 PDF=1.94186054983212952330e-01, CDF=1.15069670221708289515e-01, Q=8.000000000000044409e-01,
2016.11.11 11:56:46.413 Test (EURUSD,H1) 1 9, x=9.000000000000022204e-01 PDF=2.1785217177032550525793e-01, CDF=1.35666060946382671659e-01, Q=9.0000000000133227e-01
2016.11.11:56:46.413 Test (EURUSD,H1) 1 10, x=1.00000000000000000000e+00 PDF=2.41970724519143365328e-01, CDF=1.58655253931457046468e-01, Q=1.0000000000000000e+00,
Risultato del calcolo in R: