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

 
nemo811:
Merci. Est-ce que c'est la bonne chose à faire ?

Oui. Je pense que oui.
 
Non. Sum=0 doit être placé avant l'instruction For.
 
6166961669:

Je ne sais pas combien cela coûterait de commander une EA, mais je suis sûr que je peux la faire fonctionner dans les deux graphiques.

Ah, et en général il est possible de le faire fonctionner une fois pour 2 devises différentes (simultanément sur deux graphiques) et ouvert sur chacune des différentes transactions.

Par exemple, j'ai acheté sur le premier et vendu sur le second ?

Et à la clôture de l'une des transactions ouverte en sens inverse de la transaction déjà ouverte.....

Et peut-être que quelqu'un sait, peut-être qu'il existe un tel conseiller expert, juste une bonne idée m'est venue à l'esprit......


Tout peut être fait. Veuillez m'écrire en personne. On va faire un marché.
 
FOReignEXchange:
Oh non. Sum=0 doit être placé avant l'opérateur For.

Tout fonctionne. Merci. J'ai trouvé une autre erreur dans le processus.

Je vais faire un peu plus de travail pour voir si quelque chose d'autre apparaît, et je posterai le résultat dans la base de données générale.

Merci encore pour votre aide.

 
nemo811:

Tout fonctionne. Merci. J'ai trouvé une autre erreur dans le processus.

Je vais faire un peu plus de travail pour voir si quelque chose d'autre apparaît, et je posterai le résultat dans la base de données générale.

Merci encore pour toute votre aide.


Vous êtes les bienvenus. Vous êtes les bienvenus.
 

À : FOReignEXchange

Si, à ce stade de l'exécution du programme, j'ai l'intention

extern bool Buy = true ;

extern double PriceBuy = 0 ;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point) ;
PriceBuy = ??????????????????;}

retour ;
}

Je précise l'affectation " PriceBuy = ?????????????????? ; " - " PriceBuy = Ask ; ".

Puis-je être sûr qu'au fur et à mesure que le programme progresse (c'est-à-dire en ouvrant une nouvelle commande avec les conditions spécifiées)

" PriceBuy " aura la même valeur ?

 
OTPOK:

À : FOReignEXchange

Si, à ce stade de l'exécution du programme, j'ai l'intention

extern bool Buy = true ;

extern double PriceBuy = 0 ;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point) ;
PriceBuy = ??????????????????;}

retour ;
}

Je précise l'affectation " PriceBuy = ?????????????????? ; " - " PriceBuy = Ask ; ".

Puis-je être sûr qu'au fur et à mesure que le programme progresse (c'est-à-dire en ouvrant une nouvelle commande avec les conditions spécifiées)

" PriceBuy " aura la même valeur ?


Comment peut-on externaliser le double PriceBuy = 0 ? Seules les constantes sont spécifiées dans les variables globales. S'il en est totalement retiré, la réponse est la suivante :

Si aucune autre valeur n'est attribuée à la variable PriceBuy ailleurs, la valeur de PriceBuy = Ask ; restera valide jusqu'à ce que les calculs atteignent à nouveau la nouvelle ouverture de l'ordre. En arrivant à nouveau à ce niveau, la variable se verra attribuer la nouvelle valeur PriceBuy = Ask ; cela correspondra au prix Ask au moment de l'ouverture du nouvel ordre.

Quel est le problème ? C'est clair.

 
FOReignEXchange:


Comment se passe l'externalisation du double PriceBuy = 0 ? Seuls les nombres constants sont spécifiés dans les variables globales.

Veuillez ne pas confondre nos débutants.

Premièrement : la variable PriceBuy est dans ce cas une variable externe. Et une variable externe est globale par définition !

Deuxièmement : vous pouvez attribuer n'importe quelle valeur à une variable externe dans le code de l'EA, mais elle perdra alors sa signification (être une variable externe). Et les variables globales sont précisément utilisées pour stocker et modifier leurs valeurs dans l'ensemble du code (la portée - le programme entier). Lire la suite.

Troisièmement, s'il y a un glissement dans la fonction commerciale OrderSend et que nous voulons ouvrir un ordre d'achat, l'ordre ne sera pas nécessairement ouvert au prix Ask car l'exécution d'un ordre commercial émis par la fonction OrderSend prend un certain temps et le prix peut s'éloigner de cette valeur.

Le code présenté à la page précédente sera plus correct :

abolk:
extern bool Buy = true;
extern double PriceBuy = 0; 
int start() 
{
   if(Buy) 
   {
     int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
        PriceBuy=OrderOpenPrice();
   }
   return(0); 
}
 
MaxZ:

Par conséquent, le code le plus correct est celui déjà cité à la page précédente, et je cite :


"C'est comme vous l'aimez. L'écriture de chacun est différente. Peut-être que votre écriture est correcte, mais elle me semble désordonnée.

Je ne le ferais pas de cette façon.

Tout d'abord, je ne sais pas vraiment pourquoi je devrais déclarer une variable à cet endroit et je ne comprends pas non plus à quoi cela sert.

Deuxièmement, la ligne PriceBuy = Ask ; est située juste après la fonction OrderSend. Et d'après ce que je comprends, les calculs sont immédiatement transmis à la ligne suivante dès que cette fonction termine son exécution. Je ne pense pas que le prix de l'Ask puisse changer. J'essaie d'écrire tout aussi simplement que possible, en réduisant le nombre de caractères, si cela n'interfère pas avec le fonctionnement normal du programme. Je peux attribuer une valeur de la même manière que vous, je ne vois pas de problème ici. J'ai écrit la première et la plus simple chose qui me venait à l'esprit.

 
C'est vrai. C'est vrai. J'ai mal nommé la variable. Je vous l'accorde. Votre théorie est bonne. Mais votre logique ne l'est pas.