Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 480
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Por favor, ayuda a traducir el algoritmo para encontrar las coordenadas del punto de intersección de dos segmentos
Del artículo:
Es muy sencillo.
¿Quizás alguien tenga uno ya hecho en los archivos?x1,y1 y x2,y2 son las coordenadas de los vértices del primer segmento;
x3,y3 y x4,y4 son las coordenadas de los vértices del segundo segmento;
para encontrar la intersección hacemos las ecuaciones de las rectas:
primera ecuación:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
segunda ecuación
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
estas ecuaciones definen una recta que pasa por dos puntos, que es lo que necesitamos.
A partir de estas ecuaciones encontramos x e y mediante las siguientes fórmulas:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
como nuestras líneas se cruzan, tienen un punto de intersección común con las coordenadas (x,y), que necesitamos encontrar.
Para que la intersección pertenezca a nuestros segmentos de línea, tenemos que restringirla, es decir, comprobar la condición:
si
(((x1<=x)y(x2>=x)y(x3<=x)y(x4 >=x))o((y1<=y)y(y2>=y)y(y3<=y) y(y4>=y))
entonces hay un punto de intersección de estos segmentos, y si no lo hay, no hay punto de intersección.
También debes comprobar el paralelismo de estos segmentos mediante los coeficientes de ángulo:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
donde k1 y k2 son las tangentes de los ángulos de los segmentos a la dirección positiva del eje OX, si k1=k2, entonces los segmentos son paralelos y por tanto no tienen puntos de intersección.
¡Hola queridos amigos!
Por favor, ayuda a traducir el algoritmo para encontrar las coordenadas del punto de intersección de dos segmentos de línea
Del artículo:
Es muy sencillo.
¿Tal vez alguien tenga uno listo en los archivos?x1,y1 y x2,y2 son las coordenadas de los vértices del primer segmento;
x3,y3 y x4,y4 son las coordenadas de los vértices del segundo segmento;
para encontrar la intersección hacemos las ecuaciones de las rectas:
primera ecuación:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
segunda ecuación
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
estas ecuaciones definen una recta que pasa por dos puntos, que es lo que necesitamos.
A partir de estas ecuaciones encontramos x e y mediante las siguientes fórmulas:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
como nuestras líneas se cruzan, tienen un punto de intersección común con las coordenadas (x,y), que necesitamos encontrar.
Para que la intersección pertenezca a nuestros segmentos de línea, tenemos que restringirla, es decir, comprobar la condición:
si
(((x1<=x)y(x2>=x)y(x3<=x)y(x4 >=x))o((y1<=y)y(y2>=y)y(y3<=y) y(y4>=y))
entonces hay un punto de intersección de estos segmentos, y si no lo hay, no hay punto de intersección.
También debes comprobar el paralelismo de estos segmentos mediante los coeficientes de ángulo:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
donde k1 y k2 son las tangentes de los ángulos de los segmentos a la dirección positiva del eje OX, si k1=k2, entonces los segmentos son paralelos y por tanto no tienen puntos de intersección.
Es un poco complicado... Escribí la definición de la intersección de las líneas, una en máximos de 2m y la otra en mínimos de 2m, más allá de la siguiente barra o no. Lo escribí usando la tangente, la relación entre la diferencia de precios en pips y el número de barras entre los Haijs en los que se dibuja la línea. Correspondientemente, es la tangente del ángulo de la segunda línea en lowes. Y luego uso la tangente para encontrar el número de puntos de la siguiente barra, es decir, uso la fórmula inversa con el valor cambiado de un cateto (el número de barras). Obtenemos el valor del precio en el punto probado de estas líneas. Y en consecuencia, si el valor del precio de la barra recta es menor, el cruce se ha producido.
Pero hasta ahora no puedo encontrar este indicador.
...
¿O tal vez alguien tiene uno ya hecho en los archivos?
Kim publicó una función. La función devuelve el precio del punto de la semirrecta trazada desde la línea hacia la derecha.
x1 - barra de la primera coordenada de la línea, y1 - precio de la primera coordenada de la línea. x2 - barra de la segunda coordenada de la línea, y2 - precio de la segunda coordenada de la línea, x - la barra para la que se devuelve el precio.
Puedes encontrar los precios de cada una de las dos líneas y ver si se solapan...
He escrito aquí más o menos..., algo cuenta y se dibuja, pero no en todas las intersecciones. Hay algo que no funciona en mi escritura. No entiendo lo que es.
Muchas gracias Alexey y Artem por su atención a mi pregunta.
He escrito aquí más o menos..., algo cuenta y se dibuja, pero no en todas las intersecciones. Hay algo que no funciona en mi escritura. No sé lo que es.
De momento, no soy capaz de entender nada en programación, hoy es el cumpleaños de mi querida esposa. Tiene 18 años y 384 meses.
Pero... Tenga en cuenta que el cruce de las líneas puede producirse DENTRO o FUERA de las barras, y el precio (coordenada Y) sólo puede obtenerse en la barra. Ya sea antes o después, pero no siempre se puede determinar el punto de cruce. Yo diría que eso es raro. Teniendo en cuenta lo anterior, revisa tu código teniendo en cuenta esto, quizás funcione.
Alexey Viktorov 2015.12.12 17:33 # RU
Ha cumplido 18 años.
Por favor, indique qué tipo de comandos se deben insertar en el Asesor Experto para que corrija automáticamente los takeprofits ya establecidos en las posiciones abiertas al recalcularlas. ¿O tal vez haya un script que corrija todos los topes del último conjunto?
Por favor, aconsejar cómo añadir código para que en el probador de la estrategia puede cambiar los pesos de ajuste de los patrones. m_pattern_0(90) sustituir las variables de entrada
No soy muy bueno con la POO, me salen errores" funciónmiembro no definida" o simplemente el código no funciona.
Pregunta similar sin respuesta aquí https://www.mql5.com/ru/forum/13484
p.d.: Con CiCustom puedo cambiar los pesos de los modelos, pero con los indicadores estándar que tienen clases estándar (como CSignalEnvelopes, etc.) ¿dónde están los métodos para establecer los valores de cada modelo, pero aún no están disponibles enel Asistente?
¿O tal vez ya fue sugerido en algún lugar?
Algo se cargará desde el sitio MetaQuotes y obtengo la siguiente imagen:
Inicio : Base de datos 2049/12358 registros.
La penúltima es del 17.10.2014, la última es del 14.07.1993.
¿Dónde están los que faltan?