Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
sDotToLineDist - script para MetaTrader 5
- Visualizações:
- 1584
- Avaliação:
- 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
A Média Móvel de Alan Hull é uma média móvel sem atraso.
Fast iBarShift and Bars for MT5Funções completas e rápidas semelhantes às funções Bars e iBarShift do MQL4.
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 SketcherUma variação da regressão linear.