[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 214

 
alsu:

Et nous pouvons également attribuer un magicien en utilisant le CRC32 pour nous assurer qu'il est unique. Ou encore, nous pouvons vérifier rapidement l'intégrité de toute donnée précédemment enregistrée ou reçue d'un autre terminal, par exemple via Internet. Dans ce cas, darb toutes les fonctions))). Utilisez-la à bon escient).


Alexey, merci pour votre fonction intéressante et bien écrite. Je vais y jeter un coup d'œil. J'ai moi-même pensé à une idée similaire, et la voici.

Eh bien, voilà :


Victor, j'ai regardé dans le Dock pour toi aussi. J'ai donc vu ces codes dans les indicateurs de CodeBase, que j'utilisais pour le trading manuel. Il s'est avéré être loin d'être une panacée. J'ai donc jeté presque tous les indicateurs, et maintenant mon conseiller expert est son propre indicateur, et je n'ai besoin de presque rien d'autre !

Au fait, j'ai beaucoup appris en fouillant dans la base ! Il faut être soi-même un expert pour tout comprendre dans le Dock ! Il y a plus de détails dans le manuel, mais il manque beaucoup de choses !


Boris, je n'utilise pas vraiment d'indicateurs moi-même. A moins que ce ne soit un tiret... Et les fonctions de chaîne sont nécessaires à d'autres fins. J'en ai parlé plus haut. Ici :

hoz:

Pour ne pas lire toutes sortes de codes tordus, comme icihttps://www.mql5.com/ru/articles/1524.

(J'ai remarqué là, un tas de bugs. Et en général, je ne sais pas à quoi l'auteur pensait lorsqu'il a écrit ce code).

Veuillez me donner un indice sur l'algorithme de cette variante. Je veux que l'ordre en attente suive l'objet, par exemple une ligne de tendance. Ou l'ordre en attente était derrière la ligne.

Comment est-elle mise en œuvre ? Je ne le comprends pas vraiment.

Je comprends que nous devons créer un objet. Mais nous devrions d'une manière ou d'une autre spécifier que si le prix est "derrière" l'objet, nous devrions faire quelque chose, ou si le prix est sur la ligne, l'ordre en attente est dessus...

 

Mes amis, pouvez-vous me donner un indice ?

Existe-t-il un programme qui écrit tout ce que fait le terminal ?

Ou comment faire en sorte qu'un EA écrive des logs indépendamment du serveur ?

 
polycomp:
Merci pour cette précision ! On dirait que c'est mieux de ne pas utiliser les statiques dans les bibliothèques.


Et ne les utilisez pas non plus en dehors d'eux. Dans MT4, les variables de type Static ne sont JAMAIS réinitialisées.
 
herhuman:

Comment puis-je faire en sorte que l'EA écrive des journaux indépendamment du serveur ?

C'est le cas.
 
hoz:


Pour commencer, il suffit de formuler clairement ce que vous souhaitez. Les approches géométriques sont les bienvenues.
 
hoz:


Alexey, merci pour cet article intéressant et intelligemment rédigé. Je vais y jeter un coup d'oeil. J'ai pensé à une idée similaire moi-même, et la voici.


Boris, je n'utilise pas vraiment d'indicateurs moi-même. Sauf si c'est une machine à faire des signes... Et les fonctions de chaîne sont nécessaires à d'autres fins. J'en ai parlé plus haut. Ici :


Victor, je n'ai pas eu affaire à ça non plus, j'en ai vu beaucoup dans la base. D'après ce que j'ai compris, les croisements de prix avec les lignes sont similaires à ceux des balayages. Saisissez également les croisements de lignes avec vos paramètres d'ordre et de position, etc. Déterrez-le !
 

Chers Messieurs, Pourriez-vous répondre à la question suivante pour un débutant?

si (((((Bid>1.2153)&&(Bid<1.2160) || (Bid>1.2173)&&(Bid<1.2180)) || ( (Bid>1.2100)&&(Bid<1.2107) || (Bid>1.2094)&&(Bid<1.2101)) || (((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2098))||((Bid>1.2073)&&(Bid<1.2080)||(Bid>1.2005)&&(Bid<1.2012))))) // si le prix correspond à l'une des conditions énumérées dans l'en-tête if

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) // ouvrir un ordre.

J'ai environ 3000 données de conditions non répétitives, je les ai donc placées dans un tableau unidimensionnel.

double masiv [3000] ;

if ((Bid==masiv[5]) // si le prix correspond à la valeur de l'élément du tableau avec l'index 5

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) // ouvrir l'ordre.

QUESTION : Quel code peut être utilisé pour écrire la commande suivante

Si le prix correspond à la valeur de l'une des 3000 valeurs non répétitives du tableau double masiv [3000].

Ouvrez une commande.

L'option la plus simple consiste à placer 3000 conditions dans l'en-tête if(.....).

Mais il existe probablement des variantes plus compactes de ce code.

Merci pour votre aide.


 
solnce600:

Messieurs, pourriez-vous donner à un nouvel arrivant la réponse à cette question ?

si (((((Bid>1.2153)&&(Bid<1.2160 )|| (Bid>1.2173)&&(Bid<1.2180)) || ( (Bid>1.2100)&&(Bid<1.2107) || (Bid>1.2094)&&(Bid<1.2101)) || (((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2098))||((Bid>1.2073)&&(Bid<1.2080)||(Bid>1.2005)&&(Bid<1.2012))))) // si le prix correspond à l'une des conditions énumérées dans l'en-tête if

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) // ouvrir un ordre.

J'ai environ 3000 données de conditions non répétitives, je les ai donc placées dans un tableau unidimensionnel.

double masiv [3000] ;

if ((Bid==masiv[5]) // si le prix correspond à la valeur de l'élément du tableau avec l'index 5

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) // ouvrir l'ordre.

QUESTION : Quel code peut être utilisé pour écrire la commande suivante

Si le prix correspond à la valeur de l'une des 3000 valeurs non répétitives du tableau double masiv [3000].

Ouvrez une commande.

L'option la plus simple consiste à placer 3000 conditions dans l'en-tête if(.....).

Mais il doit exister des variantes plus compactes du code.

Merci pour votre aide.




Si nécessaire, une solution peut être trouvée. Par exemple, passez à un tableau ordonné de nombres entiers. Cherchez-y la valeur souhaitée.
 
solnce600:

Messieurs, pourriez-vous donner à un nouvel arrivant la réponse à cette question ?

si (((((Bid>1.2153)&&(Bid<1.2160) || (Bid>1.2173)&&(Bid<1.2180)) || ( (Bid>1.2100)&&(Bid<1.2107) || (Bid>1.2094)&&(Bid<1.2101)) || (((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2098))||((Bid>1.2073)&&(Bid<1.2080)||(Bid>1.2005)&&(Bid<1.2012))))) // si le prix correspond à l'une des conditions énumérées dans l'en-tête if

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) // ouvrir un ordre.

J'ai environ 3000 données de conditions non répétitives, je les ai donc placées dans un tableau unidimensionnel.

double masiv [3000] ;

if ((Bid==masiv[5]) // si le prix correspond à la valeur de l'élément du tableau avec l'index 5

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) // ouvrir l'ordre.

QUESTION : Quel code peut être utilisé pour écrire la commande suivante

Si le prix correspond à la valeur de l'une des 3000 valeurs non répétitives du tableau double masiv [3000].

Ouvrez une commande.

L'option la plus simple consiste à placer 3000 conditions dans l'en-tête if(.....).

Mais il existe probablement des variantes plus compactes de ce code.

Merci pour votre aide.



Boucle :

   double massiv[];  
//----------------------------------------------------------------------
   for (int i=0; i<ArrayRange(massiv,0); i++) {
      if (MathAbs(NormalizeDouble(Bid-massiv[i],Digits))<=0.5*Point) {
         // цена примерно совпадает со значением в massiv[i]
         // ... обрабатываем совпадение
         }
      }
//----------------------------------------------------------------------
 
artmedia70:

Cycle :




Grâce aux nombres entiers, la vitesse de calcul augmentera d'un ordre de grandeur. Et il sera possible d'utiliser des fonctions standard pour la recherche.