Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1279

 
leonerd:

Coloque seu nariz em um código simples que calcula o ângulo de movimento do preço. A figura abaixo mostra isso.


Depende em que x(pixels, barras ou tempo) e y(pixels ou preço) são medidos.
E qual é a tarefa: medir o ângulo na tabela atual com a escala atual (largura da barra em pixels) e o período de tempo? Ou para medir o ângulo de modo que ele permaneça o mesmo para qualquer TF e escala?
Diferentes tarefas e sistemas de coordenadas - diferentes soluções.
 
leonerd:

Coloque seu nariz em um código simples que calcula o ângulo de movimento do preço. A figura abaixo mostra isso.


Bem, você pode calculá-lo com uma tangente. E você não precisa do ângulo em si, você só precisa conhecer a tangente.

 
Alexey Viktorov:

E você não precisa realmente de um ângulo em si, você só precisa de uma tangente.

Exatamente! E nossa tangente é chamada: velocidade.

Neste exemplo, o preço passou de 1884 pontos em 39 velas de 1 hora. A velocidade total desta onda é: 1884/(39/24) = 1159 pips por dia.

double interval=double(iBarShift(symbol,frame,start_time)-iBarShift(symbol,frame,finish_time)*PeriodSeconds(frame)/86400;
int distance=MathAbs(finish_price-start_price);
int speed=interval>0?(distance/interval):0;
E nós não precisamos de um ângulo, por que precisamos de um ângulo? Quando começarmos a esticar ou achatar o gráfico, como será então o ângulo? Os ângulos podem ser medidos quando os eixos x e y tiverem as mesmas unidades. Por exemplo, se você pegar um caderno com quadrados, desenhe uma linha ao longo das diagonais destes quadrados, você receberá 45 graus. E o que se passa e o que está à direita são centímetros. E aqui, o que é um ponto de preço igual a? Uma hora, um dia... Esses não são valores comparáveis.
 
Aleksei Stepanenko:

Exatamente! E nossa tangente é chamada: velocidade.

Neste exemplo, o preço passou de 1.884 pontos em 39 velas de uma hora. A velocidade total desta onda é: 1884/(39/24) = 1159 pips por dia.

E nós não precisamos de um ângulo, por que precisamos de um ângulo? Quando começarmos a esticar ou achatar o gráfico, como será então o ângulo? Os ângulos podem ser medidos quando os eixos x e y tiverem as mesmas unidades. Por exemplo, se você pegar um caderno com quadrados, desenhe uma linha ao longo das diagonais destes quadrados, você receberá 45 graus. E o que se passa e o que está à direita são centímetros. E aqui, o que é um ponto de preço igual a? Uma hora, um dia...Esses não são valores comparáveis.

Por que precisamos compará-los? Quilômetros e tempo também não são comparáveis, mas isso não nos impede de contar a velocidade em km/hora.

Se sua tangente for velocidade, será essa velocidade por unidade de tempo do período do gráfico. Se o preço mudou 1884 pips em 39 horas, serão 48 pips por hora. Não há necessidade de convertê-lo em dias.

Mas você também pode calcular a "aceleração" como uma relação entre a velocidade atual e a velocidade da barra anterior. E ao coletar vários desses valores, a aceleração média pode ser determinada.

 
Aleksei Stepanenko:

E aqui, o que é igual a um ponto de preço? Uma hora, um dia... Os valores não são comparáveis.

Bem, a distância também é medida em anos-luz. Portanto, não é um problema.
Vamos introduzir uma velocidade constante. Por exemplo, 1 _Ponto por uma barra de 1 minuto e levar o sistema de coordenadas a um preço em ambos os eixos .

Então, os ângulos serão os mesmos em qualquer período de tempo.

O principal é calcular corretamente o número de barras de minutos entrex1e x2.

Neste sistema, um ângulo de 45 graus significaria que o preço mudaria por N*tg(45) =N pips em barras de N minutos e um ângulo de 30 graus significaria que o preço mudaria por N*tg(30)=N*0,57735 pips em barras de N minutos.
É melhor usar barras de minutos em vez de tempo, pois há furos de tempo na forma de fins de semana, baixa volatilidade, etc.
 

Concordo 100%, porque o castiçal pode ser esticado tanto horizontalmente quanto verticalmente. E deve haver algum padrão para determinar o ângulo (largura do castiçal em pixels e o número de pontos em um pixel).

Posso fazer uma pergunta fora do tópico?

Como posso converter corretamente o tempo de dados para o dobro para que o compilador não jure (perda de dados devido a conversão incorreta é possível)?

duplo A = Tempo[1];

Obrigado de antemão!

 
Alexey Viktorov:

Se você tiver 1884 pips em 39 horas, a velocidade é de 48 pips por hora. E não há nenhuma necessidade de converter isso em dias.

Sim, essa é a minha suposição. Uma vez que fiz a velocidade int (ou seja, pips inteiros), pensei em usar um período maior, para que as frações de um pip em velocidade não importassem muito e pudessem ser descartadas. Por isso, eu tenho pontos por dia. Bem, isto está de acordo com o relógio biológico humano. Cansado, dormiu, levantou-se de manhã: "Qual foi a velocidade ontem? Parece consistente, então esse é o padrão que eu estabeleci para mim mesmo. E depois, é claro, é uma questão de preferência pessoal.


Nikolai Semko:

Bem, a distância também é medida em anos-luz. Portanto, isso não é um problema.
Vamos introduzir uma velocidade constante. Por exemplo, 1 _Ponto por uma barra de 1 minuto e levar o sistema de coordenadas a um preço em ambos os eixos .

Sim, novamente a velocidade é obtida, apenas em unidades: pontos por minuto. Quanto aos fins de semana e buracos, tomei o seguinte caminho: o que há velas na tabela é o intervalo de tempo, e o que está ausente (dias/horas) não está lá. Porque se levarmos em conta os fins de semana, e o preço ficar parado naquele momento, a velocidade cairá visivelmente sem nenhum motivo. Mas, mais uma vez, isto é para cada um deles:)


Ferro Roni:

Como converter corretamente o tempo de dados para o dobro, para que o compilador não jure (a perda de dados devido à conversão incorreta é possível).

double A = (double)Time[1];

Por que você armazenaria o tempo de dados em dobro? Se você armazenar diferentes tipos de variáveis na mesma matriz, e trazê-las aqui e ali, considere substituir a matriz usual por uma matriz de estrutura:


struct My
   {
   datetime time;
   double price;  
   } my[];

int finish=0;
ArrayResize(my,finish+1);
my[finish].time=Time[1];
my[finish].price=Close[1];
 

Muito obrigado!

As estruturas só funcionam em mql 5 ou já em mql 4 ?

 
Sim, eles trabalham em quatro, é muito conveniente escrever com eles, claramente.
 
Roni Iron:

Muito obrigado!

As estruturas funcionam apenas em mql 5 ou já em mql 4 ?

Não só as estruturas funcionam, mas também a união.

Razão: