Teste de sistemas de previsão em tempo real - página 19

 
grasn >> :

Um pouco mais tarde, poderei dar uma estimativa da probabilidade da implementação da previsão. Pergunta - de que correlação você está falando?

Quero dizer algo que lhe permite avaliar a qualidade de um sistema de previsão em algum tipo de ponto. Para que você pudesse pegar dois sistemas, marcar cada um, comparar as pontuações e dizer "este é XX melhor do que aquele".

Em geral, seria interessante pensar como tal estimativa poderia ser feita com mais precisão...

O coeficiente de correlação é a primeira coisa que me vem à mente. Assim.

Voltamos à história por um par de anos.

A cada hora que corremos o sistema na história, ele constrói uma previsão e conta sua correlação com a história

Então a correlação média é a pontuação do sistema.

E em que técnicas você baseia sua estimativa da probabilidade de a previsão se materializar?


 

Sempre quis tentar um parâmetro curioso - a expectativa matemática em cada seção de tempo, mas nunca tive tempo suficiente. O cálculo é bastante simples, é a soma dos produtos dos níveis de preços pelas freqüências correspondentes de ocorrências. A probabilidade é tirada do estado de probabilidade inicial do sistema.


Eu não testei o parâmetro em absoluto, portanto não posso dizer nada. Mas só para o interesse do esporte: 15 min, EURUSD, previsão de um dia a partir do momento presente

Vetor estatal (um pouco fora de lugar).


Expectativa nas seções de tempo (1 amostra - 15 minutos)




Níveis prováveis (ou não muito prováveis):



 

a Lord_Shadows

Переименовали ветку. Теперь уже не игра, а тестирование, и кончились прогнозы.

As previsões ainda não começaram, no sentido de que estamos apenas nos aquecendo :o))) junte-se a :o)


para shtoba

Quero dizer algo que permite avaliar a qualidade do sistema de previsão em termos de alguns pontos. Em geral, seria interessante pensar como fazer tal estimativa.

Tal classificação foi inventada há muito tempo para os campeonatos - na verdade, é o número de pontos ganhos. Posso acrescentar - sem aplicar nenhum MM - apenas o modelo funciona. O principal é para que servem estes pontos? Qual é o objetivo?

Se formos à história por alguns anos, executamos o sistema a cada hora, ele constrói a previsão e calcula sua correlação com a história. Então, o valor médio da correlação é uma espécie de pontuação do sistema.

O mercado nunca se repete, e se você calcular a correlação da previsão por 3 períodos, você encontrará muitas situações "similares". Mas o coeficiente não diz nada.

E que métodos você usa para estimar a probabilidade de implementação da previsão?

De duas maneiras:

(1) Uma previsão é feita a cada contagem e seu desempenho é avaliado. Em seguida, as freqüências são calculadas, se for o caso, é realizada uma análise mais complexa, a fim de relacionar a freqüência com a situação atual, independentemente do modelo com a previsão

(2) O segundo método, mais teórico, está no próprio modelo.

 

HAPPY VOICE DAY!!!! FELIZ DIA DE NOSSA VITÓRIA!!! :о)))

Só falhou um pouco o nível 1.3331, o resto está bem. Agora uma situação curiosa no EURUSD. Abaixo está o cálculo da entropia de informação "mapa":

Se levarmos a peito o princípio da entropia máxima, devemos esperar um recuo para o nível de cerca de 1,3445, mas por outro lado, o modelo dinâmico mostra uma possibilidade essencial de subir até 1,3756 (lembro, considero o nível de preço como estatístico, em torno do qual o preço "se concentrará"). Portanto, o mais razoável não é começar a negociar na segunda-feira, mas esperar por cerca de 10-20 leituras de 15 minutos cada :o)


O que vocês acham, colegas? Quem tem planos/objectivos para segunda-feira?


EDIÇÃO:

(1) Comecei a aprender MQL e fiz um roteiro muito legal :o) "fetch data" para MathCAD:

extern int diapason = 7000;


int start()
{
double process[];

GetHistoryProcess(process, diapason);
CreateFlowData(process);

return(0);
}


void GetHistoryProcess(double signal[], int window)
{
int n;
int i;

double y[];

ArrayResize(y, window);
ArrayInitialize(y, 0.0);

ArrayResize(signal, window);
ArrayInitialize(signal, 0.0);

i=0;

for(n=0; n<=window-1; n++)
{
y[i]=(High[window-n-1]+Low[window-n-1])/2.0;
i=i+1;
}

ArrayCopy(signal, y, 0, 0, WHOLE_ARRAY);

return(0);
}


void CreateFlowData(double process[])
{
int i;
int N;
int Handle;

string FILE="data.csv";

N=ArraySize(process);
Handle=FileOpen(FILE, FILE_CSV|FILE_WRITE,";");

if(Handle<0)
{
if(GetLastError()==4103)
{
Alert("Нет файла с именем ",FILE);
}
else
{
Alert("Ошибка при открытии файла ",FILE);
}

return;
}

for(i=0; i<=N-1; i++)
{
FileWrite(Handle, process[i]);
}

FileClose(Handle);

return(0);
}


No início eu não conseguia entender por que as previsões não se realizavam, depois descobri - esqueci de "inverter" os dados :o). Entrei pensando externamente e terei uma interface na inicialização, onde posso entrar na faixa de histórico desejada (também muda) sem a compilação. Então não há interface, não funciona para scripts? Levou alguns especialistas, por exemplo, trabalha lá.


(2) Não consigo descobrir como "escrever para o futuro" as séries cronológicas previstas (por exemplo). Durante o cálculo, e durante o processamento e análise dos dados, o tempo foi deslocado, digamos, por algumas contas. Grosso modo, quero carregar 100 amostras no futuro desde alguma data histórica (ou zero), ou seja, alguns dados têm que ser carregados primeiro na história antes da barra atual, e outros mais. Não funciona.

 
grasn >> :

No início eu não conseguia entender por que as previsões não se realizavam, mas depois descobri - esqueci de "virar" os dados :o). Entrado externamente, pensando que durante a inicialização haverá uma interface, onde posso entrar na faixa histórica desejada (também muda) sem compilação. Então não há interface, não funciona para scripts? Levou alguns especialistas, por exemplo, trabalha lá.

Não funciona para scripts, apenas para indicadores e Conselheiros Especializados. Faça sua exportação como um indicador se você quiser gerenciar variáveis externas


(2) Não consigo entender como (por exemplo) devo "escrever as séries cronológicas previstas para o futuro". Ao calcular, e ao processar e analisar dados, o tempo passou, digamos, por algumas contas? Grosso modo, quero carregar 100 amostras no futuro desde alguma data histórica (ou zero), ou seja, alguns dados têm que ser carregados primeiro na história antes da barra atual, e outros mais. Não parece funcionar.

Não há futuro na MT. Todas as séries são colocadas em matrizes, e vice versa. O índice 0 corresponde ao tempo atual (ou o mais recente disponível), o índice 1 corresponde à barra para trás, etc. Então, para o futuro, precisamos dos índices -1, -2, etc., mas não há tais índices negativos em mql.

Mas há outros tumultos. Veja a função SetIndexShift para indicadores (definir deslocamento da linha indicadora relativamente ao início do gráfico). É apenas uma mudança visual. Os índices são como eram e permanecem.


Há também o SetIndexDrawBegin (Defina o número de série da barra desde o início dos dados, a partir do qual o desenho da linha indicadora deve começar), ele pode ser usado para cortar o desenho à esquerda para uma barra especificada.

 

Para fazer tudo sincrônico no tempo - marque os valores de sua série não com índices, mas com o tempo e sincronize com o gráfico MT por Tempo[bar].

Mas há um problema - o eixo temporal no gráfico pode ser não-uniforme. Se não houver barras na série inicial no gráfico (não há conexão com o servidor ou há um buraco por algum outro motivo) - então as barras ainda serão desenhadas de forma contínua, e o tempo saltará sobre essas lacunas. Isto é natural apenas para o "passado".

 
grasn >> :

... Entrado externamente, pensando que na inicialização haverá uma interface onde poderei entrar na faixa histórica desejada (também muda) sem compilar. Então não há interface, não funciona para scripts? Tomando alguns especialistas como exemplo, ele funciona lá....

Insira #property show_inputs no script e seu externo aparecerá quando o script for executado.

 

para Shtoba, granit77

Colegas, obrigado pela ajuda. :о) Não estou muito satisfeito com estes indicadores :o). Não sei como utilizá-las. Para o comércio são níveis de status local, de acordo com o conceito de modelagem de mercado - o preço "se concentra" perto deles. Na imagem eles estão vermelhos (mais precisamente, ainda não os calculei, estou preparando um astrolábio :o)):

Teoricamente, elas podem ser mostradas na MT como linhas ("tendência", por exemplo, o tipo parece ser OBJ_TREND). Mas surge uma questão muito simples, como recalcular o tempo conta (0, 1, 2, .... (15 minutos cada)) para o tempo "futuro". Até agora, encontrei a seguinte maneira: tomamos o número de segundos TimeCurrent( ), adicionamos o previsto e este número deve ser convertido em tempo de alguma forma. Como eu faço isso?

PS: Mas ainda temos algo nesta entropia. O preço não atingiu o nível, mas começou a se mover e se concluirmos o negócio ainda estaremos no plus: o)

 

 
grasn >> :
... Apenas uma questão muito simples surge, como recalcular o tempo conta (0, 1, 2, .... (15 minutos cada)) para o tempo "futuro".
FutureTime=Time[0]+N*Period()*60;
где N - номер бара в будущее от нулевого.
Razão: