[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 74

 
Mathemat:

Un tableau de 8 points est M[8][2] plutôt que M[8][8].

Est-ce que "les trois" sont les présélectionnés, ou quoi ?


Eh bien, oui, le tableau est bien sûr M[8][2]. Trois quelconques sont des éléments du tableau qui doivent être définis dans le processus de calcul. Nous pouvons la formuler légèrement différemment : nous devons trouver les coordonnées du centre d'un cercle et les coordonnées de trois points aussi proches que possible de ce cercle.
 
 
atztek:


Et ensuite OrderOpenPrice() .


Il va donc le définir lui-même ?
 
Myth63:

pour qu'il l'identifie lui-même ?
Que voulez-vous dire par "il le trouvera" ?
Vous consultez les ordres ouverts, et pour chaque ordre, la commande OrderOpenPrice() donne la valeur du prix auquel l'ordre a été ouvert.
Attribuez sa valeur à une variable et utilisez-la.
 
Elenn: Eh bien, oui, le tableau est bien sûr M[8][2]. Les trois sont n'importe quel tableau, qui doit être défini dans le processus de calcul.

En résumé, le problème se résume à ceci : il y a trois points. Vous devez dessiner un cercle de rayon r tel que la somme des carrés des distances entre eux et le cercle soit minimale.

En fait, il s'agit d'une tâche importante, qui ne peut être résolue dans l'urgence. Un cercle n'est pas une ligne droite. Il n'est pas du tout évident de savoir laquelle des deux distances il faut prendre.

Eh bien, voici un exemple concret :

Montrez la disposition correcte.

 
atztek:
Que voulez-vous dire par "il le détectera" ?
Vous consultez les ordres ouverts, et pour chaque ordre, la commande OrderOpenPrice() donne la valeur du prix auquel l'ordre a été ouvert.
Assignez sa valeur à une variable et utilisez-la.


C'est ce que j'ai compris. Il le définira automatiquement et l'utilisera pour la vérification. ?

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

if(OrderType()== OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNum2)
{
if ( Ask>(OrderOpenPrice()+(AD1*Point) )
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Black) ;
return(0) ;

}

Cela semble correct ?

 
Myth63:


C'est ce que j'ai compris. Il va juste le définir automatiquement et l'utiliser pour vérifier. ?

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

if(OrderType()== OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNum2)
{
if ( Ask>(OrderOpenPrice()+(AD1*Point) )
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Black) ;
return(0) ;

}

Cela semble correct ?

Pas tout à fait. Et si aucune commande n'est sélectionnée ? Où se trouve la normalisation des prix lors de l'envoi d'un ordre de transaction?

Les commandes sont fermées dans une boucle, ce qui signifie que la recherche doit être effectuée non pas à partir de zéro, mais de OrdersTotal()-1 à >=0

 
Mathemat:

En résumé, le problème se résume à ceci : il y a trois points. Vous devez dessiner un cercle de rayon r tel que la somme des carrés des distances entre eux et le cercle soit minimale.

Il s'agit en fait d'une tâche importante, que l'on ne peut pas accomplir en un clin d'œil. Un cercle n'est pas une ligne droite. Il n'est pas du tout évident de savoir laquelle de ces deux distances il faut prendre.

Eh bien, un exemple concret :

Montrez la disposition correcte.


Je pense que oui :
 

Elenn: Думаю, что так:

Non, je n'accepterai pas une telle tâche. Au cours du calcul lui-même, vous devrez décider des distances à prendre (il existe deux distances entre un point et le cercle). Rien de joli.

Peut-être que GA peut aider à trouver le minimum local ici. Mais je ne suis pas bon à ça.

P.S. Vous n'avez pas précisé la fonction cible - somme des carrés des distances ou somme des distances elles-mêmes.

 
Mathemat:

Il s'agit en fait d'une tâche importante, que l'on ne peut pas accomplir en un clin d'œil. Un cercle n'est pas une ligne droite.

Je comprends que la tâche n'est pas facile. Je ne veux pas réduire le problème à une recherche stupide de toutes les variantes possibles de "trois". D'après ce que je comprends, la variante avec une ligne droite "participera" également à tous les points, mais pas à trois d'entre eux. À votre avis, à quoi pourrait ressembler la variante d'une ligne, de sorte que la somme des distances des trois "meilleurs" points à cette ligne soit minimale ?
Raison: