Existe um padrão para o caos? Vamos tentar encontrá-lo! Aprendizado de máquina com o exemplo de uma amostra específica. - página 5

 
elibrarius #:
Precisamos de um resultado financeiro preciso e livre de erros. Sem eles, a linha de balanço não é confiável.
Fin. res. se escolhermos 0 (você não pode incluir, será sempre 0), se 1, se -1. Sempre, mesmo que você marque como classe 0, não negocie. O modelo estará errado e é necessário saber o preço do erro.

Não é o modelo que determina a direção da entrada, portanto, se houver um erro na direção, não haverá entrada e, portanto, não haverá perda.

 
Aleksey Vyazmikin #:

Não é o modelo que determina a direção da entrada, portanto, se houver um erro na direção, não haverá entrada e, portanto, não haverá perda.

Escrevi sobre a classe 0, que às vezes será prevista como 1 ou -1. Você escreveu sobre o fato de o resultado financeiro ser desconhecido.

 
Aleksey Vyazmikin #:

Não é o modelo que determina a direção da entrada

Se não é o modelo que determina isso, então não há necessidade de ensiná-lo.

 
elibrarius #:

Escrevi sobre a classe 0, que às vezes será prevista como 1 ou -1. Você escreveu sobre ele que o resultado financeiro é desconhecido.

Apenas não desista da direção.

Se a classe for zero e a direção for +1 e tiver sido classificada como 1, haverá uma perda - pegue qualquer coluna com o módulo do resultado financeiro.

Se a classe for zero e a direção for +1, mas tiver sido classificada como -1, não haverá entrada nem perda.

Se a classe for zero e a direção for -1, e tiver sido classificada como -1, haverá uma perda - pegue qualquer coluna com o módulo do resultado financeiro.

Se a classe for zero e a direção for -1 e tiver sido classificada como 1, não haverá entrada, não haverá perda.

elibrarius #:

Se não é o modelo que determina isso, não há razão para ensiná-lo.

A lógica aqui é simples - vários preditores, ou mesmo seus valores, gravitam mais em direção a uma determinada direção do movimento do preço. Quando ensinamos tudo junto pela classe 1 e 0, estamos essencialmente selecionando os indicadores que determinam um movimento forte em qualquer uma das direções - e geralmente não há muitos deles, mas se dermos a cada direção sua própria classe, algumas contradições estatísticas desaparecerão e o modelo já pode incluir indicadores de um indicador em diferentes extremos de seu valor, por exemplo, o RSI 70/30 pode facilmente se separar.

Em teoria, a classe zero é plana, portanto, deve ser suficientemente semelhante para cada direção. Novamente, dividi a amostra em duas partes ao mesmo tempo - por direção de entrada - e isso melhorou os resultados do aprendizado, ou seja, uma porcentagem maior de modelos atendeu ao critério do limite de lucro.

 
Aleksey Vyazmikin #:

Se a classe for zero e a direção for +1 e ela tiver sido classificada como -1, não haverá entrada, nem perda.

O professor não poderá entrar. Mas o modelo cometerá um erro e entrará no mercado. O modelo não sabe sobre 0 e +1 do professor, ele recebeu a previsão de -1 e negociará

 
elibrarius #:

O professor pode não entrar. Mas o modelo cometerá um erro e entrará no mercado. Ou você tem um operador condicional que proíbe o modelo de operar conforme previsto? Infelizmente, não tenho onde colocar esse operador para criar um equilíbrio.

No momento, não há nenhum operador, mas há dados para ele e eles estão escritos na coluna "Target_P" - portanto, tudo pode funcionar com bastante sucesso.

Aqui está um exemplo da lógica de código que esbocei para criar o saldo

int Prognoz=0;//Сюда запишем прогноз
int Target_100[];//Фактическая целевая
int Target_P[];//Тип сделки - покупка/продажа
double Target_100_Buy[];//Финансовый результат от покупки
double Target_100_Sell[];//Финансовый результат от продажи
double Fin_Rez[];//Финансовый результат
int Strok_Total=0;//Всего строк
int Index_Fin_Rez=1;//Считаем число классифицированных 1 и -1 - это размер массива баланса и индекс массива Fin_Rez
ArrayResize(Target_100,Strok_Total);
ArrayResize(Target_P,Strok_Total);
ArrayResize(Target_100_Buy,Strok_Total);
ArrayResize(Target_100_Sell,Strok_Total);
ArrayResize(Fin_Rez,Strok_Total);
ArrayInitialize(Fin_Rez,0);
/*
Прочли данные файла в массивы - не знаю как реализовано у Вас
*/
for(int i=0; i<Strok_Total; i++)
{
/*
Сделали прогноз
*/
   if(Prognoz==-1 && Target_P[i]==-1)
   {
      Fin_Rez[Index_Fin_Rez]=Fin_Rez[Index_Fin_Rez-1]+Target_100_Sell[i];
      Index_Fin_Rez++;
   }
   if(Prognoz==1 && Target_P[i]==1)
   {
      Fin_Rez[Index_Fin_Rez]=Fin_Rez[Index_Fin_Rez-1]+Target_100_Buy[i];
      Index_Fin_Rez++;
   }
}
ArrayResize(Fin_Rez,Index_Fin_Rez);
 
Aleksey Vyazmikin #:

No momento, não há nenhum operador, mas há dados para ele e são gravados na coluna "Target_P", de modo que tudo pode funcionar muito bem.

Aqui está um exemplo da lógica de código que esbocei para criar o saldo

O modelo só deve operar de acordo com a previsão. Se você calcular o resultado usando o professor, estará espiando o futuro. A negociação deve ser feita somente de acordo com a previsão. Você não terá Target_100_Sell no futuro real.

O modelo não sabe sobre 0 e +1 do professor, ele recebeu a previsão de -1 e negociará. Você só precisa saber o resultado financeiro de cada variante de previsão.

 
elibrarius #:

O modelo só deve operar de acordo com a previsão. Se você calcular o resultado usando o professor, estará espreitando o futuro. A negociação deve ser feita somente de acordo com a previsão.

O modelo não sabe sobre 0 e +1 do professor, ele recebeu a previsão -1 e negociará. Você só precisa saber o resultado financeiro de cada variante de previsão.

O que o peeking tem a ver com isso? Mudamos o alvo para melhorar o aprendizado, não para mudar a lógica do EA. A lógica é que sabemos a direção de entrada sem o modelo, e o modelo deve nos dizer se devemos entrar ou não.

 
Aleksey Vyazmikin #:

e o modelo deve lhe dizer se deve entrar ou não.

Já verificamos isso.

 
elibrarius #:

Já verificamos isso.

Veja, temos pontos de entrada - linhas de amostragem, e há um resultado financeiro determinado pelos pontos de saída, ou seja, os locais onde um stop loss ou outro sinal é definido. Você quer entrar no mercado de forma contrária à estratégia, ou seja, comprar onde deveria vender, se o modelo assim o disser, e para isso você precisa definir novos pontos de saída. Surge a pergunta: se o ponto de saída ainda não apareceu, mas o ponto de entrada já apareceu, o que você deve fazer então - fechar e perguntar ao modelo sobre a direção de entrada, ou o quê?