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

 
vovan-gogan:
Les gens, aidez-moi avec le code : Pourquoi cet EA ne met pas une pause sur un croisement MA.


C'est ce que vous avez en tête ?

if (OrdersTotal()<= 1)
   return;
Il n'ouvrira les ordres qu'à partir du deuxième. Pas même de la deuxième, mais de la troisième.
 
DhP, Roman, merci !!!!!!
 
Dimka-novitsek:
DhP, Roman, merci !!!!!!

Le nettoyage a-t-il réussi ?
 
Bonjour, pourriez-vous me donner un indice ? Dans le code suivant, j'obtiens l'heure de clôture du dernier ordre pour un titre particulier :

for(j=0 ; j<OrdersHistoryTotal() ; j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime() ;
break ;
}

Je voudrais que l'ordre suivant sur ce titre ne soit ouvert qu'après trois barres, c'est-à-dire sur la quatrième barre, mais pas avant. Comment puis-je faire un chèque ?
 
first_may:
Bonjour, pouvez-vous me donner un indice ? Dans le code suivant, j'obtiens l'heure de clôture du dernier ordre pour un titre particulier :

for(j=0 ; j<OrdersHistoryTotal() ; j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
si (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime() ;
pause ;
}

Je veux ouvrir l'ordre suivant sur ce titre après trois barres, c'est-à-dire sur la quatrième barre, mais pas avant. Comment puis-je faire un chèque ?

Vous êtes sûr que c'est le dernier fermé ? Et si c'est le premier que tu rencontres ? Vous n'êtes plus dans le coup.

 
artmedia70:

Vous êtes sûr que c'est le dernier fermé ? Et si c'est le premier que tu rencontres ? Vous n'êtes plus dans le coup, n'est-ce pas ?




Je parcours l'historique, tous les mandats ne sont-ils pas là ?
 
first_may:

Je parcours l'historique, toutes les commandes ne sont-elles pas là ?

vous parcourez l'historique jusqu'à la première commande sur le symbole, après quoi la rupture - vous sortez de la boucle.

Si vous avez eu 100 commandes, vous ne verrez qu'une seule
.

 
first_may:

Je parcours l'historique, toutes les commandes sont là ?

Ici. La fonction vous renvoie le numéro de la dernière barre fermée par cet EA :

int BarLastClosePose() {
datetime t;
for (int i=0; i<OrdersHistoryTotal(); i++) {
   if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
      if (OrderMagicNumber()!=Magic)   continue;
      if (OrderSymbol()!=Symbol())     continue;
      if (OrderType()>1)               continue;
      if (t<OrderCloseTime()) t=OrderCloseTime();
      }
   }
   return(iBarShift(Symbol(), Period(), t, True));
}

Vous appelez, par exemple, int BarClose=BarLastClosePose() ;

La variable BarClose stockera le numéro de la barre de la dernière position fermée, ou -1 (s'il n'y a pas de barre). Magie - EA magie - écrivez votre variable ici.
Ou bien, supprimez cette ligne si vous voulez vérifier tous les ordres (même ceux qui ont été placés par un autre EA ou qui ont été ouverts manuellement par vous-même)
. Et alors vous pouvez vérifier quand le prochain ordre peut être ouvert (après combien de barres).

 
En général, l'objectif est de n'ouvrir un ordre qu'après au moins trois barres, c'est-à-dire sur la quatrième barre, mais pas avant, après le dernier ordre fermé sur le titre. Pour ce faire, je parcours l'historique et si je vois un ordre sur ce titre dans l'historique, je le considère comme fermé et dernier. Ai-je tort de penser que les commandes seront sélectionnées par ordre chronologique ?
 
first_may:
En général, l'objectif est de n'ouvrir un ordre qu'après au moins trois barres, c'est-à-dire sur la quatrième barre, mais pas avant, après le dernier ordre fermé sur le titre. Pour ce faire, je parcours l'historique et si je vois une commande pour ce titre dans l'historique, je la considère comme fermée et dernière. Ai-je tort de penser que les commandes seront sélectionnées par ordre chronologique ?
Vous avez tort de ne pas vouloir étudier l'exemple ci-dessus.
Raison: