Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 200
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Voltemos à declaração original sobre os erros R no artigo.
A nossa opinião ainda se mantém: há erros presentes, e eles foram causados por descuido na implementação.
Vou tentar fazer uma pergunta à equipa de apoio R.
E você entra nele, recalcula tudo, passa algumas semanas a rever como ele fez. Mas em vez disso, ainda nem leu o nosso artigo.
Pela nossa parte, nós fizemos o trabalho. E nós fizemos um bom trabalho. Se a Wolfram não é uma autoridade para você também, então você está perdendo seu tempo com essa forma de comunicação.
Não confunda os criadores com os usuários, por favor.
E você entra nele, recalcula tudo, passa algumas semanas a rever, como ele fez. Mas em vez disso, ainda nem leu o nosso artigo.
Pela nossa parte, nós fizemos o trabalho. E nós fizemos um bom trabalho. Se a Wolfram não é uma autoridade para você também, então você está perdendo seu tempo com esta forma de comunicação.
Não confunda os criadores com os usuários, por favor.
Há muitas fórmulas que assumem 0^0=1, por exemplo notação para polinómios e séries de potência, aritmética do número cardinal, o teorema binomial, etc., todos estes assumem 0^0=1. Por exemplo, substituindo x=0 por x^0+x^1+x^2+... = 1/(1-x) mostra 0^0 = 1.
Pode-se assumir que definir uma função significa especificar uma forma de calculá-la.
Dada a expressãoAlém disso, de acordo com:
https://en.wikipedia.org/wiki/Gamma_distribution
se x = 0, alfa = 1, beta = 1, você obtém um valor indefinido no numerador, o que traz toda a fração para a incerteza.
Afirmamos que, estritamente falando, a densidade gama da distribuição no ponto zero é indefinida. E tomando o limite à direita, a densidade é uma só.
À luz disto, acreditamos que a formulação da declaração "erros de cálculo em R" não é correcta. Mais precisamente, é uma questão de convenções: do que considerar igual à expressão zero em grau zero. Equalizar a densidade da distribuição gama a zero no ponto zero não parece ser uma prática válida.
não se ajusta à definição da função porque contém uma incerteza no ponto x=0, como assinalaste.
Se a condição x>=0 for colocada em vez de x>0 então não há incerteza e você pode calcular valores usando esta fórmula.
Em relação à prática - Mathematica e Matlab podem ser considerados como padrões da indústria para cálculos de engenharia, eles produzem 0, ou seja, essa expressão é válida apenas para x>0.
Podemos assumir que definir uma função significa especificar uma forma de calculá-la.
A expressão dada é.não é apropriado para definir uma função porque contém uma incerteza em x=0, como você apontou.
Se você colocar a condição x>=0 em vez de x>0, não há incerteza e você pode calcular valores usando esta fórmula.
Em relação à prática - Mathematica e Matlab podem ser considerados o padrão da indústria para cálculos de engenharia, eles dão 0, ou seja, essa expressão só é verdadeira para x>0.
O Mathematica e o Matlab podem ser considerados o padrão da indústria para cálculos de engenharia
Você pegou uma situação para a qual não há solução, procurou o resultado que a Wolfram retorna, e chamou todos os outros resultados errados. Isto não é um cálculo de engenharia, mas um dogma.
Eles poderiam tomar R como referência, e escrever sobre encontrar um erro na Wolfram. Eu acho que se você pegar todos os softwares de matemática, e dividi-los em dois grupos com base no que eles retornam nesta situação - haverá uma divisão de 50%/50%, você pode adicionar mais uma dúzia de softwares que o mql se sobressai em um artigo sobre mql.
Obrigado pelos erros mencionados noAS 243. Mas não se deve culpar o comportamento de outras funções com parâmetros, para os quais não existe uma solução clara.
Você deveria ter escrito no artigo sobre as vantagens do mql - R tem tal e tal função que tem um erro de 15 casas decimais. E nós temos outra função em mql que é mais precisa. Tudo seria culto e científico, não dogmático como é agora.
Vamos considerar um exemplo com os parâmetros a=0,5, b=1 no ponto x=0
Se não excluirmos o ponto x=0, a densidade diverge e a probabilidade é boa.
E, mais adiante, também não há problema:
Acontece que ao calcular o CDF R exclui o ponto x=0, o infinito desapareceu em algum lugar.
Caro colega!
Para várias páginas há uma discussão sobre as diferenças entre os algoritmos do seu e do R nas bordas do domínio da função. Os pontos marginais são pontos marginais e, na prática, as diferenças podem ser negligenciadas.
Mas, neste caso, tenho uma pergunta muito mais substancial:
Onde está a documentação para todas as suas funções?
Anteriormente, eu pensava que nós pegávamos a sua função, depois pegávamos a documentação para R, já que suas funções são analógicas, e mergulhávamos nas partes da documentação de R que ou descrevem os algoritmos, ou vão para os links fornecidos por R. R tem uma documentação e um aparelho de referência de altíssima qualidade.
No decorrer do argumento, descobri que as suas funções são diferentes do R - são algumas outras funções cujos algoritmos dependem de outras fontes. Não há nada sobre isso no próprio artigo, nenhuma documentação. E aprendemos sobre isso com Renat num contexto completamente diferente.
Na prática, podemos tirar uma conclusão inequívoca de que o código não pode ser portado de R para MQL5.
E aqui está o porquê.
É claro para mim que se diz "analógico de R" e não há documentação sobre o analógico, então é 100% analógico e eu posso facilmente transferir o código do intérprete para o compilador sem me preocupar com isso. E se não for assim, então um caso é suficiente para pôr um fim à ideia de portar código de R para MQL5. Ninguém quer ter uma dor de cabeça completamente bloqueada ao transferir código de trabalho para R você recebe código MQL que não funciona por causa de sutilezas na implementação de algoritmos.
Onde está a documentação para todas as suas funções?
Anteriormente, eu pensava que nós pegávamos sua função, depois pegávamos a documentação para R, já que suas funções são analógicas, e entrávamos nas partes da documentação de R que descrevem os algoritmos, ou íamos para os links fornecidos por R. R tem uma documentação e um aparelho de referência de altíssima qualidade.
No decorrer do argumento, descobri que as suas funções são diferentes do R - são algumas outras funções cujos algoritmos dependem de outras fontes. Não há nada sobre isso no próprio artigo, nenhuma documentação. E aprendemos sobre isso com Renat num contexto completamente diferente.
Na prática, podemos tirar uma conclusão inequívoca de que o código não pode ser portado de R para MQL5.
E aqui está o porquê.
É claro para mim que se diz "analógico de R" e não há documentação sobre o analógico, então é 100% analógico e eu posso facilmente transferir o código do intérprete para o compilador sem me preocupar com isso. E se não for assim, é o suficiente para pôr fim à ideia de portar o código do R para o MQL5. Ninguém quer obter um impasse completo, quando após a migração do código de trabalho para R você obtém código MQL, que não funciona devido às sutilezas na implementação dos algoritmos.
No momento, as funções estão descritas no artigo https://www.mql5.com/ru/articles/2742
Considere o cálculo de uma distribuição normal com os parâmetros mu=2, sigma=1 como exemplo:
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) O análogo da função R dnorm() é uma função:
A função calcula os valores da função de densidade de probabilidade de distribuição normal com os parâmetros mu e sigma para o conjunto de variáveis aleatórias x[]. No caso de um erro, ele retorna falso. Um análogo de dnorm() em R.
2) Anormalidade analógica:
A função calcula o valor da função de distribuição normal com os parâmetros mu e sigma para a matriz de variáveis aleatórias x[]. No caso de um erro, ela retorna falso. Analógico de pnorm() em R.
3) Análogo da qnorm:
Esta função calcula os valores da função inversa da distribuição normal com os parâmetros mu e sigma para a matriz de valores de probabilidade[]. No caso de um erro, ele retorna falso. O análogo de qnorm() em R.
Este é um exemplo de como usá-lo:
//+------------------------------------------------------------------+
//| 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]);
}
Resultado:
2016.11.11:56:46.413 Teste (EURUSD,H1) 1 0, x=0,00000000000000000000e+00 PDF=5,39909665131880628364e-02, CDF=2,27501319481792120547e-02, Q=0,00000000000000000000e+00,
2016.11.11 11:56:46.413 Teste (EURUSD,H1) 1 1, x=1.000000000000000000005551e-01 PDF=6.56158147746765951780e-02, CDF=2.87165598160018034624e-02, Q=1.00000000000000088818e-01
2016.11.11 11:56:46.413 Teste (EURUSD,H1) 1 2, x=2,000000000000000000011102e-01 PDF=7,89501583008941493214e-02, CDF=3,593031911292598098213e-02, Q=2,00000000000000177636e-01
2016.11.11 11:56:46.413 Teste (EURUSD,H1) 1 3, x=2,9999999999999999988898e-01 PDF=9,40490773768869470217e-02, CDF=4,456546247585430410108e-02, Q=3,00000000000000266454e-01
2016.11.11 11:56:46.413 Teste (EURUSD,H1) 1 4, x=4,00000000000000022204e-01 PDF=1,1092083434679455543315e-01, CDF=5,47992916995579740225e-02, Q=3,9999999999999999999999999999911182e-01
2016.11.11:56:46.413 Teste (EURUSD,H1) 1 5, x=5.00000000000000000000e-01 PDF=1.295175956656589174343772e-01, CDF=6.6807201268858071803080e-02, Q=5.0000000000000022202045e-01,
2016.11.11 11:56:46.413 Teste (EURUSD,H1) 1 6, x=5,9999999999999999999999977796e-01 PDF=1,4972727465635744877437e-01, CDF=8,07566592337710387195e-02, Q=6,00000000000000310862e-01
2016.11.11 11:56:46.413 Teste (EURUSD,H1) 1 7, x=6,999999999999999999955591e-01 PDF=1,71368592047807355438e-01, CDF=9,6800484585610344040793e-02, Q=7,00000000000000177636e-01
2016.11.11:56:46.413 Teste (EURUSD,H1) 1 8, x=8.0000000000000000044409e-01 PDF=1.94186054983212952330e-01, CDF=1.15069670221708289515e-01, Q=8.0000000000000000044409e-01,
2016.11.11 11:56:46.413 Teste (EURUSD,H1) 1 9, x=9.0000000000000000022204e-01 PDF=2.1785217177032550525793e-01, CDF=1.35666060946382671659e-01, Q=9.00000000000000133227e-01
2016.11.11:56:46.413 Teste (EURUSD,H1) 1 10, x=1.00000000000000000000e+00 PDF=2.41970724519143365328e-01, CDF=1.5865525253931457046468e-01, Q=1.00000000000000000000e+00,
Resultado do cálculo em R: