[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 650

 

J'ai besoin d'aide avec les ordres de fermeture)) il y a une transaction sur chaque barre. Le testeur ouvre beaucoup, beaucoup d'ordres, et la manière correcte est d'envoyer un ordre sur la barre actuelle et de le fermer sur la barre suivante.

Dites-moi ce qui ne va pas...

 if (OrdersTotal()!=0)
   {
     OrderSelect(OrderTicket(),SELECT_BY_TICKET);
     if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
     if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
   }
 

Ce n'est pas comme ça...

Qui vous a appris à faire ça ?

où est la boucle de commande ?

Que se passe-t-il si la commande n'est pas "select" ?

où se trouve la recherche de l'heure d'ouverture et de fermeture du dernier ordre ? ??? ?

où est l'interdiction de continuer à ouvrir des ordres sur la même barre si tous les ordres sont fermés selon les BONNES conditions (que vous n'avez pas) ...

 
FAQ:

Ce n'est pas comme ça...

Qui vous a appris à faire ça ?

où est la boucle de commande ?

Que se passe-t-il si la commande n'est pas "select" ?

où se trouve la recherche de l'heure d'ouverture et de fermeture du dernier ordre ? ??? ?

où est l'interdiction de continuer à ouvrir des ordres sur la même barre si tous les ordres sont fermés selon les BONNES conditions (que vous n'avez pas) ...

Pourquoi le cycle de chevauchement s'il y a toujours un ordre ouvert ?
 
orb:

J'ai besoin d'aide avec les ordres de fermeture)) il y a une transaction sur chaque barre. Le testeur ouvre beaucoup, beaucoup d'ordres, et la manière correcte est d'envoyer un ordre sur la barre actuelle et de le fermer sur la barre suivante.

Dites-moi ce qui ne va pas...

OrderSelect(OrderTicket(),SELECT_BY_TICKET);

"sélectionner la commande avec le ticket de la commande actuellement sélectionnée " comment cela se fait-il ?

 

Alors...

Allez sur le fil de discussion d'Igor Kim, tapez les fonctions dont vous avez besoin et utilisez-les, pour voir comment faire correctement.

 
(Mec, je suis stupide.)
 
7sintez:
Salut à tous, les gars..., un conseil pour un débutant... ! Je veux faire en sorte que sous certaines conditions, une seule transaction s'ouvre au-dessus de la bougie ! !! J'ai beaucoup de transactions qui s'ouvrent pour une raison quelconque... Pas immédiatement, mais progressivement... Par exemple, sur un chandelier de 5 minutes, pendant les 5 minutes où les transactions sont ouvertes ! Et je dois faire en sorte qu'une seule transaction soit ouverte ! Et de sorte que sur le chandelier suivant, sous certaines conditions, une seule transaction a également été ouverte, etc.


Merci !

Je l'ai fait de cette façon. Je regarde les ordres et s'il y a un ordre ouvert sur la paire de devises, je compare son heure d'ouverture avec l'heure d'ouverture de la barre actuelle. Si le délai de l'ordre est plus long, je sors. S'il y a une nouvelle barre, son temps d'ouverture devient plus long que le temps de l'ordre qui a bloqué la transaction sur la barre précédente, et vous pouvez négocier sur la nouvelle barre.
if (OrdersTotal()>0)
   {  for (i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  if (OrderSymbol()==Symbol() && OrderOpenTime()>iTime(NULL,0,0))
            {   Sleep(5*1000); return(0);
   }  }  }  }
 
Qwertee:

Techniquement, c'est simple : buysell !="buy" - donc la prochaine alerte(1) n'est pas exécutée.

Ce que contient la variable buysel à ce moment est découvert par print: Print (buysell) ; après la première alerte.

------------------------------------------------------------------------------------------------------------------------------------------------

C'est le problème, si je mets Print(buysell) au lieu de Alert(1) dans le code, alors buysell renvoie la valeur buy, donc quel est le problème ?

Pour être sûr de la méthode qui consiste à assourdir un cafard en lui arrachant les pattes, il faut lui arracher toutes les pattes une à une, en lui donnant à chaque fois l'ordre "Rampe" - c'est le sort de tous les expérimentateurs. Essayez de mettre quelque chose d'autre dans la deuxième commande Alert(), par exemple Alert ("1"), ou Alert ("Maman, ne t'afflige pas !") - regardez ce qui se passe. ;)))
 
paladin80:
Je l'ai fait de cette façon. S'il existe un ordre ouvert sur la paire de devises concernée, je compare son heure d'ouverture avec l'heure d'ouverture de la barre actuelle. Si le délai de l'ordre est plus long, nous sortons. S'il y a une nouvelle barre, son temps d'ouverture est plus long que le temps de l'ordre qui a bloqué la transaction sur la barre précédente et nous pouvons négocier sur la nouvelle barre.
Si vous dites à un petit enfant d'appeler sa mère "papa", il le fera jusqu'à ce que quelqu'un "se moque de lui"...

Si vous incitez un débutant, faites-le tout de suite ! Construction :

if (OrdersTotal()>0)

Cela fonctionne tant que le trader n'exécute pas plusieurs Expert Advisors sur le même compte, ce qui arrivera tôt ou tard ! Ce qui veut dire, Un conseiller sans MAGIC est "comme un oiseau sans aile, comme un homme sans pâte"....

Au fait et

iTime(NULL,0,0)

il est plus correct de l'écrire comme Time[0].
Et le sommeil (5*1000) = 5 secondes. Et qu'est-ce qu'on attend ?

 
7sintez:
Salut à tous, les gars..., un conseil pour un débutant... ! Je veux faire en sorte que dans certaines conditions, une seule transaction s'ouvre au-dessus de la bougie !!! J'ai beaucoup d'affaires en cours pour une raison quelconque... Pas immédiatement, mais progressivement... Par exemple, sur un chandelier de 5 minutes, pendant les 5 minutes où les transactions sont ouvertes ! Et je dois faire en sorte qu'une seule transaction soit ouverte ! Et de sorte que sur le chandelier suivant, sous certaines conditions, une seule transaction a également été ouverte, etc.


Merci !

Comparez l'heure d'ouverture de l'ordre avec le début de la bougie de 5 minutes, par exemple comme ceci :

if (iBarShift (NULL, 5, OrderOpenTime()) == iBarShift (NULL, 5, iTime (NULL, 5, 0))) return (0);
или
if (OrderOpenTime() >= iTime (NULL, 5, 0)) return (0);