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

 
Ça ne marche toujours pas... Pouvez-vous me donner plus de détails pour ceux qui sont muets ? Voyons voir... Que dois-je mettre devant mon code ? Quelles variables ? Je ne peux pas appeler la fonction... Avez-vous écrit plusieurs façons de résoudre ce problème ou s'agit-il d'une seule façon ? Je suis une suceuse pour ça...
 
r772ra:

Vous pouvez faire cela.....
Cette variante ne fonctionnera pas correctement, car NewBar ne donne vrai que sur le premier tick de la barre. Pour un travail correct, il est nécessaire de placer les lignes FunNewBar() ; if(!NewBar) return ; dans la condition d'ouverture de la transaction, et après une ouverture réussie.
 
alsu:
Cette variante ne fonctionnera pas correctement, car NewBar ne donne vrai que sur le premier tick de la barre. Pour fonctionner correctement, nous devons placer la ligne FunNewBar() ; if(!NewBar) return ; à l'intérieur de la condition d'ouverture de la transaction, et après une ouverture réussie.
Bien qu'il ne soit pas tout à fait correct dans ce sens également. En bref, la variante de r772ra doit être corrigée et, mieux, nous devrions utiliser une approche fondamentalement différente, par exemple, regarder l'heure du dernier ordre ouvert dans l'historique et la comparer avec l'heure de la barre actuelle - ce sera beaucoup plus fiable.
 
alsu:
Bien que ce ne soit pas tout à fait correct. En bref, la variante de r772ra doit être corrigée, et il vaut mieux utiliser une approche fondamentalement différente, par exemple, regarder l'heure d'ouverture de la dernière commande dans l'historique et la comparer avec l'heure de la barre actuelle - ce sera beaucoup plus fiable.

Ça donne quelque chose comme ça.

int BarOfLastOrder(int magic)
{
   int i,ot=OrdersTotal();
   
   for(i=ot-1; i>=0; i--);
   {
      OrderSelect(i,SELECT_BY_POS);
      if(OrderMagicNumber()==magic) return(iBarShift(0,0,OrderOpenTime()));
   }
   
   return(-1);
}

int start()
{

   ........

   int bar_of_last_order = BarOfLastOrder(magic); // указать магик, который использует советник

   switch(bar_of_last_order)
   {
      case 0:
         //последний ордер открыт на текущем баре
         ...
         break;
      case -1:
         //ордеров нет
         // здесь break не ставим, если ситуация "нет ордеров" и "последний ордер открыт не на текущем баре" нужно обрабатывать одинаково
         // в противном случае написать обработку и break;
      default:
         //последний ордер открыт не на текущем баре
         ...
         break;
   }

   .........

}
 
Merci ! Je vais essayer...
 
7sintez:
Merci ! Je vais essayer...
ajusté le code
 
alsu:
ajusté le code
Aha !!! Je vais essayer de faire quelque chose à ce sujet maintenant...
 

Yay !!! Je l'ai fait à travers

{
static datetime New_Time=0 ;
New_Bar=false ;
if(New_Time!=Time[0])
{
Nouvelle_Heure=Heure[0] ;
Nouvelle_Barre=vrai ;
}
}

 
7sintez:
Merci beaucoup ! !! Cela fonctionnera-t-il si je place le signal sur la moins première barre à partir de l'ouverture ?

 
Merci beaucoup à tous pour votre aide ! Les codes que je n'ai pas encore utilisés - je les ai copiés dans le bloc-notes ! Je les examinerai quand j'aurai le temps ! Merci encore et encore et encore, mes amis !