Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
1518
Avaliação:
(19)
Publicado:
2018.07.23 09:53
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Parâmetros da função:

  • double LX1 - a coordenada X do primeiro ponto da linha;
  • double LY1 - a coordenada Y do primeiro ponto da linha;
  • double LX2 - a coordenada X do segundo ponto da linha;
  • double LY2 - a coordenada Y do segundo ponto da linha;
  • double DX - a coordenada X do ponto;
  • double DY - a coordenada Y do ponto.


Princípio de cálculo

Com base nas coordenadas de dois pontos da linha, obtemos a fórmula de linha: y=a+k*x. O coeficiente k determina a inclinação da linha, ou seja, uma mudança na coordenada y por uma unidade de mudança na coordenada x. O coeficiente k é calculado da seguinte forma:

double K=(LY2-LY1)/(LX2-LX1);

A constante a determina o valor da linha, se x=0, ou seja, corresponde ao nível, onde a linha cruza o eixo y. Conhecendo o coeficiente de inclinação e a coordenada X de um dos pontos da linha, calculamos a:

double LA=LY1-K*LX1;

A distância de um ponto à linha é determinada com base na perpendicular desenhada para a linha. Se você girar o desenho 90 graus no sentido anti-horário, a linha d terá a mesma inclinação que a linha principal, mas com o sinal oposto. Conhecendo a inclinação e as coordenadas de um ponto, podemos obter a equação da linha, mas neste caso na forma x =a-ky. Então a constante a:

double DA=DX+K*DY;

Tendo as fórmulas de duas linhas, encontramos o ponto de sua interseção. Para este propósito, nós substituímos o y expresso pela fórmula da primeira linha para a fórmula da segunda linha, fazemos algumas transformações e obtemos a coordenada x do ponto de intersecção:

double CX=(DA-K*LA)/(1.0+K*K);

Em seguida, substitua o x resultante na fórmula pela primeira linha e obtenha o valor da coordenada y do ponto de intersecção das linhas:

double CY=LA+K*CX;

Conhecendo as coordenadas de dois pontos, nós podemos calcular a distância entre elas ao longo dos eixos x e y (as projeções no eixo). Além disso, usando o teorema de Pitágoras, calcular a distância:

MathSqrt(MathPow(DX-CX,2)+MathPow(DY-CY,2))

Uma discussão em russo está disponível em https://www.mql5.com/ru/forum/237198. Você também pode discutir a ideia aqui, nos comentários.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/20481

HMA HMA

A Média Móvel de Alan Hull é uma média móvel sem atraso.

Fast iBarShift and Bars for MT5 Fast iBarShift and Bars for MT5

Funções completas e rápidas semelhantes às funções Bars e iBarShift do MQL4.

GoldWarrior02b GoldWarrior02b

Este EA usa os indicadores iCCI (Commodity Channel Index, CCI), ZigZag e Impulse. O trailing de posição (stop móvel) é possível.

Linear Regression Sketcher Linear Regression Sketcher

Uma variação da regressão linear.