Questions des débutants MQL5 MT5 MetaTrader 5 - page 480
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Veuillez traduire l'algorithme permettant de trouver les coordonnées du point d'intersection de deux segments.
Extrait de l'article :
C'est très simple !
Peut-être que quelqu'un en a une toute prête dans les archives ?x1,y1 et x2,y2 sont les coordonnées des sommets du premier segment ;
x3,y3 et x4,y4 sont les coordonnées des sommets du deuxième segment ;
pour trouver l'intersection, on fait les équations des lignes :
première équation :
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
deuxième équation
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
ces équations définissent une ligne passant par deux points, ce qui est ce dont nous avons besoin.
A partir de ces équations, on trouve x et y par les formules suivantes :
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);
Puisque nos lignes se croisent, elles ont un point d'intersection commun avec les coordonnées (x,y), que nous devons trouver.
Pour que l'intersection appartienne à nos segments de ligne, nous devons la contraindre, c'est-à-dire vérifier la condition :
si
(((x1<=x)et(x2>=x)et(x3<=x)et(x4 >=x))ou((y1<=y)et(y2>=y)et(y3<=y) et(y4>=y))
alors il y a un point d'intersection de ces segments, et s'il n'y a pas de point d'intersection, alors il n'y a pas de point d'intersection.
Vous devez également vérifier le parallélisme de ces segments à l'aide de coefficients d'angle :
k1:=(x2-x1)/(y2-y1) ;
k2:=(x4-x3)/(y4-y3) ;
où k1 et k2 sont les tangentes des angles des segments par rapport à la direction positive de l'axe OX, si k1=k2, alors les segments sont parallèles et n'ont donc aucun point d'intersection.
Bonjour chers amis !
Veuillez traduire l'algorithme permettant de trouver les coordonnées du point d'intersection de deux segments de droite.
Extrait de l'article :
C'est très simple !
Peut-être que quelqu'un en a un prêt dans les archives ?x1,y1 et x2,y2 sont les coordonnées des sommets du premier segment ;
x3,y3 et x4,y4 sont les coordonnées des sommets du deuxième segment ;
pour trouver l'intersection, on fait les équations des lignes :
première équation :
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
deuxième équation
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
ces équations définissent une ligne passant par deux points, ce qui est ce dont nous avons besoin.
A partir de ces équations, on trouve x et y par les formules suivantes :
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);
Puisque nos lignes se croisent, elles ont un point d'intersection commun avec les coordonnées (x,y), que nous devons trouver.
Pour que l'intersection appartienne à nos segments de ligne, nous devons la contraindre, c'est-à-dire vérifier la condition :
si
(((x1<=x)et(x2>=x)et(x3<=x)et(x4 >=x))ou((y1<=y)et(y2>=y)et(y3<=y) et(y4>=y))
alors il existe un point d'intersection de ces segments, et si ce n'est pas le cas, il n'y a pas de point d'intersection.
Vous devez également vérifier le parallélisme de ces segments à l'aide de coefficients d'angle :
k1:=(x2-x1)/(y2-y1) ;
k2:=(x4-x3)/(y4-y3) ;
où k1 et k2 sont les tangentes des angles des segments par rapport à la direction positive de l'axe OX, si k1=k2, alors les segments sont parallèles et n'ont donc aucun point d'intersection.
C'est un peu compliqué... J'ai écrit la définition de l'intersection des lignes, l'une aux hauts de 2m et l'autre aux bas de 2m, plus loin que la prochaine barre ou pas. Je l'ai écrit en utilisant la tangente, le rapport entre la différence de prix en pips et le nombre de barres entre les Haijs sur lesquelles la ligne est tracée. Par conséquent, c'est la tangente de l'angle de la deuxième ligne à Lowes. Puis j'utilise la tangente pour trouver le nombre de points sur la barre suivante, c'est-à-dire que j'utilise la formule inverse avec la valeur modifiée d'un cathetus (le nombre de barres). Nous obtenons la valeur du prix au point testé de ces lignes. Et par conséquent, si la valeur du prix de la barre droite est inférieure, le croisement a eu lieu.
Mais jusqu'à présent, je n'ai pas trouvé cet indicateur.
...
Ou peut-être que quelqu'un en a une toute prête dans les archives ?
Kim a posté une fonction. La fonction renvoie le prix du point du rayon tiré de la ligne vers la droite.
x1 - barre de la première coordonnée de ligne, y1 - prix de la première coordonnée de ligne. x2 - barre de la deuxième coordonnée de ligne, y2 - prix de la deuxième coordonnée de ligne, x - la barre pour laquelle le prix est renvoyé.
Vous pouvez trouver les prix de chacune des deux lignes et voir si elles se chevauchent...
J'ai écrit ici une sorte de..., quelque chose compte et est dessiné, mais pas à chaque intersection. Il y a un problème avec mon écriture. Je ne comprends pas ce que c'est.
Merci beaucoup Alexey et Artem pour votre attention à ma question !
J'ai écrit ici une sorte de..., quelque chose compte et est dessiné, mais pas à chaque intersection. Il y a un problème avec mon écriture. Je ne sais pas ce que c'est.
En ce moment, je ne suis pas capable de comprendre quoi que ce soit en programmation, c'est l'anniversaire de ma femme bien-aimée aujourd'hui. Elle est âgée de 18 ans et 384 mois.
Mais ! !! Notez que le croisement des lignes peut se produire DANS ou HORS des barres, et que le prix (coordonnée Y) ne peut être obtenu que sur la barre. Soit avant, soit après, mais le point de croisement ne peut pas toujours être déterminé. Je dirais que c'est rare. Compte tenu de ce qui précède, révisez votre code en gardant cela à l'esprit, peut-être cela fonctionnera-t-il.
Alexey Viktorov 2015.12.12 17:33 # RU
Elle a eu 18 ans.
Veuillez me conseiller sur le type de commandes à insérer dans l'Expert Advisor pour qu'il corrige automatiquement les takeprofits déjà définis dans les positions ouvertes lorsqu'il les recalcule. Ou peut-être existe-t-il un script qui corrige tous les arrêts du dernier jeu ?
Veuillez me conseiller sur la manière d'ajouter un code permettant de modifier le poids des modèles dans le testeur de stratégie. m_pattern_0(90) remplacer les variables d'entrée
Je ne suis pas très doué pour la POO, j'obtiens des erreurs" fonctionmembre non définie" ou le code ne fonctionne tout simplement pas.
Question similaire sans réponse ici https://www.mql5.com/ru/forum/13484
p.s. : Avec CiCustom je peux changer les poids pour les modèles, mais avec les indicateurs standards qui ont des classes standards (comme CSignalEnvelopes etc.) où sont les méthodes pour fixer les valeurs pour chaque modèle, mais elles ne sont pas encore disponibles dans l'assistant ?
Ou peut-être y a-t-il une réponse pour cela quelque part ?
Quelque chose sera chargé à partir du site MetaQuotes et j'obtiens l'image suivante :
Top : Base de données 2049/12358 enregistrements.
L'avant-dernier date du 17.10.2014, le dernier du 14.07.1993.
Où sont ceux qui manquent ?