Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2129

 
elibrarius:
Vocês são robôs?
Trabalhar dia e noite sem dormir ou descansar ))))

Fusos horários... mas ainda impressionante))))

 
elibrarius:

7 dígitos é suficiente.

Aqui está um histograma do equilíbrio - novos modelos em azul, modelos antigos em vermelho.

Todas as configurações são as mesmas.

Relevância do prognóstico



Os modelos usam o tempo ao máximo. É difícil dizer se é bom ou ruim, mas é meio ruim quando algum preditor obtém uma vantagem devido à semelhança com os analógicos.

Relembrar

Precisão

No final há uma diferença, não uma grande, claro, mas ainda assim.

O balanço não é mau.


 
Aleksey Vyazmikin:

Aqui está um histograma do equilíbrio - novos modelos em azul, modelos antigos em vermelho.

Todas as configurações são as mesmas.

Relevância do prognóstico



Os modelos usam o tempo ao máximo. É difícil dizer se é bom ou ruim, mas é meio ruim quando algum preditor obtém uma vantagem à custa de similaridade com as contrapartes.

Relembrar

Precisão

No final há uma diferença, não uma grande, claro, mas ainda assim.

Não é mau.


Então, o tempo seno + coseno é melhor do que apenas números?
Você alimenta os minutos na versão antiga? Caso contrário, alimente-os para uma comparação adequada. Na versão seno + co-seno são contabilizados. Ou retire os minutos do syn+kos se for mais rápido.
 
elibrarius:
Então, o tempo seno + coseno é melhor do que apenas números?
Você alimenta os minutos na versão antiga? Caso contrário, alimente-os, para uma comparação adequada. A versão seno + cosseno leva-os em conta. Ou tirar os minutos de syn+cos se for mais rápido.

A métrica que eu forneci - parece pior. A razão é mais provável que atinja um conjunto aleatório de preditores para construir uma árvore de predição dividida associada ao tempo.

Sim, eu não usei minutos na minha versão antiga.

 
Aleksey Vyazmikin:

A métrica que eu forneci - parece pior. A razão é a alta probabilidade de acertar um conjunto aleatório de preditores para construir uma árvore dividida do preditor associado ao tempo.


Você fez um catbustom? Não deve haver ali uma selecção aleatória de preditores. Os impulsionadores usam todos os preditores, mas árvores rasas.

Em uma floresta aleatória, sim. É definido, por exemplo, por

max_features{"auto", "sqrt", "log2"}, int ou float, por defeito="auto ".

O número de características a considerar quando se procura a melhor divisão:


Aleksey Vyazmikin:

Sim, eu não usei minutos na minha versão antiga.

Talvez tenham piorado o resultado? Tente na nova versão removê-las.

É isso, deve ser uma analogia completa com a sua versão antiga.

if(nameInd[nInd]=="Hour")        {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.hour)*360.0/24.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}

if(nameInd[nInd]=="WeekDay")     {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.day_of_week)*360.0/7.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}


 
elibrarius:

Foste tu que fizeste o catbustom? Não deve haver ali uma selecção aleatória de preditores. Os impulsionadores usam todos os preditores, mas árvores rasas.

Em uma floresta aleatória, sim. Definido, por exemplo , por


Talvez tenham piorado o resultado? Tente na nova versão removê-las.

Aí, deve ser uma analogia completa com a sua versão antiga.

if(nameInd[nInd]=="Hour")        {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.hour)*360.0/24.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}

if(nameInd[nInd]=="WeekDay")     {CopyTime        (sim,per,startDt,n_bar+1,dtm);TimeToStruct(dtm[0],dts);ArrayResize(tmp,1);tmp[0]=(double)(dts.day_of_week)*360.0/7.0;tmp[0]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));}


Quanto à aleatoriedade - já há o suficiente.

Não ficou surpreso, que eu tenha tempos separados com seno e cosseno, enquanto agora entendo, deve haver um, mas seno e cosseno são usados?

Daí a questão, o que é buf, e por que quando é igual a zero, tomamos um cosseno?

 
Aleksey Vyazmikin:

Quanto à aleatoriedade - há muita coisa.

Não ficaste surpreendido por eu ter tempos separados com seno e cosseno, e como entendo agora, deveria haver um, mas seno e cosseno são usados?

Daí a questão, o que é buf, e porquê quando é igual a zero, então tomamos o cosseno?

O buf é o número do buffer.
Para o tempo há 2. Há indicadores com 1 tampão, há mais de 2.

Eu faço loop através do número de buffers no meu loop quando componho colunas para o conjunto de treino.

Tens de alimentar tanto seno como cosseno, não apenas um. Veja https://megaobuchalka.ru/9/5905.html para uma explicação.

Osdados numéricos parecem ser desnecessários para codificar. Mas, em alguns casos, é razoável codificar também os dados numéricos [22]. Ao codificar dados numéricos, é necessário levar em conta o significado dos dados, a localização dos valores na faixa de valores e a precisão da medição dos dados. Isto é ilustrado por exemplos. Por exemplo, a codificação permite que a significância dos dados seja levada em conta. Se a entrada numa rede for um ângulo entre duas direcções, por exemplo, a direcção do vento, nunca é apropriado alimentar o ângulo (em graus ou radianos) na rede. Uma tal entrada faria a rede "aprender" que 0 graus e 360 graus são a mesma coisa. Faz mais sentido alimentar o seno e o cosseno desse ângulo como entrada. O número de sinais de rede de entrada aumenta, mas os valores de entrada fechados são codificados por sinais de entrada fechados.

Виды трансформации данных — Мегаобучалка
Виды трансформации данных — Мегаобучалка
  • megaobuchalka
  • megaobuchalka.ru
Трансформация данных — это преобразование данных к определенному представлению, формату или виду, оптимальному с точки зрения конкретного метода анализа [6]. Для разных задач анализа могут потребоваться разные методы трансформации. Типичными средствами трансформации данных являются следующие. Преобразование временны́х данных . Оптимизация...
 
elibrarius:

número tampão buf.
Para o tempo há 2. Há indicadores com 1 tampão, há mais de 2.

Eu faço loop através do número de buffers quando componho as colunas para o conjunto de treino.

Tens de alimentar tanto seno como cosseno, não apenas um. Explicação do porquê - aqui https://megaobuchalka.ru/9/5905.html

Por isso, fiz tudo bem originalmente - já não me lembro do que estava a fazer...

   double tmp[4];
   int nInd=0;
   MqlDateTime dts;
   double pi=3.1415926535897932384626433832795;
   for(int buf=0; buf<2; buf++)
   {
      TimeToStruct(iTime(Symbol(),PERIOD_CURRENT,0),dts);
      tmp[buf]=(double)(dts.hour*60+dts.min)*360.0/1440.0;
      //tmp[buf]=(double)(dts.hour*60+dts.min)*360.0/24.0;
      tmp[buf]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));

      TimeToStruct(iTime(Symbol(),PERIOD_CURRENT,0),dts);
      tmp[buf+2]=(double)(dts.day_of_week*1440+dts.hour*60+dts.min)*360.0/10080.0;
      //tmp[buf+2]=(double)dts.day_of_week*360.0/7.0;
      tmp[buf+2]=(buf==0?MathSin(tmp[0]*pi/180.0):MathCos(tmp[0]*pi/180.0));
   }
 
Não podemos fazer só com uma entrada em vez de 4?
Apenas o número de minutos a partir de segunda-feira 0:00 =
dts.day_of_week*1440+dts.hour*60+dts.min
Mas é má ideia. Para chegar, por exemplo, aos primeiros 10 minutos de cada hora, você teria que fazer muitas separações.
Provavelmente é melhor como tu - apenas dias, horas. E talvez minutos.
 
elibrarius:
Não podemos fazer apenas uma entrada em vez de 4?
Apenas o número de minutos a partir de segunda-feira 0:00 = Embora seja uma má ideia. Para chegar, por exemplo, aos primeiros 10 minutos de cada hora, você teria que fazer muitas rachaduras.
Provavelmente é melhor como tu - apenas dias, horas. E talvez minutos.

Já começaram a treinar sem minutos - vamos ver.

Eu ainda uso 1/4 bar de tempo - horas, 4 horas, dias.