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

 
alsu:

Démontez complètement la logique de l'indicateur.

Remplacez-le d'abord.

à l'adresse

Aussi,

Sans autre, le premier bloc est exécuté en premier, puis le second. Avec autre chose - soit le premier, soit le second.



ooo ! la logique manque aussi !) Je vais le changer bientôt ! oui, et à la volée : si j'écris partout dans le texte non pas avec la 4ème mais avec la 3ème, comme ceci :
iFractals(Symbol(),PERIOD_H1,MODE_UPPER,3);

Je n'ai aucun métier, bien que les barres au 3ème semblent être suffisantes pour que tout fonctionne, quel est le problème ?

Quant à la logique de l'indicateur, je suis un peu perdu. Je sais comment fonctionne l'indicateur, j'ai juste besoin de l'algorithme pour m'assurer que ifractals n'est pas égal à zéro, et vous me proposez de supprimer cette condition, elle est superflue... Pourquoi l'écrire deux fois ?

 
alsu:

Démontez complètement la logique de l'indicateur.

Remplacez-le d'abord.

à l'adresse

En outre,

Sans autre, le premier bloc est exécuté en premier, puis le second. Avec autre chose - soit le premier, soit le second.



J'ai tout remplacé, mais ça saute toujours de la même façon pour une raison quelconque...((((((
 
Vinin:

Il est possible de se battre, et le travail de l'EA peut être interrompu. Nous devons simplement changer d'approche.


Comment ?

Au début du code, il faut passer en revue tous les ordres ouverts, trouver et attribuer les valeurs des tickets aux ordres, ou y a-t-il un autre moyen ?

 
Cruc:


Au début du code, il faut passer en revue tous les ordres ouverts, trouver et attribuer les valeurs des tickets aux ordres, ou y a-t-il un autre moyen ?


Vous pouvez le faire si l'EA ouvre une ou deux positions.
 
Qui sait ce qui fait que l'EA ne fonctionne plus dans le testeur ?
 
Vinin:

Vous pouvez le faire, à condition que le conseiller ouvre un ou deux postes.

L'EA étant multi-devises, les opérations simples ne semblent pas toujours être résolues en une seule fois ((. Et il n'y a pas d'expérience.
 
Cruc:

Mon conseiller expert est multidevises, et les opérations simples ne semblent pas toujours être résolues en une seule fois ((. Et il n'y a pas d'expérience.


Il suffit de faire la comptabilité des commandes correctement. Il y a beaucoup d'exemples.

Et de l'expérience. L'expérience vient avec le territoire. Il n'ira nulle part.

 
Vinin:


Vous devez simplement vous assurer que les commandes sont enregistrées correctement. Les exemples ne manquent pas.

Et de l'expérience. L'expérience vient avec le territoire. Il ne va nulle part.


Merci pour les réponses, je vais fouiller dans les archives.
 
skyjet:

Bonsoir, je demande de l'aide pour un Expert Advisor MACD multidevises. L'EA suit correctement les critères d'ouverture de position, mais la fermeture "sur condition" ne fonctionne pas. J'ai certes commencé à utiliser un stop suiveur, mais la clôture correcte ne me permet pas de faire une pause.

Voici à quoi ressemble la partie principale

Et voici le bloc de fermeture. Veuillez m'aider à trouver l'erreur !


Désolé de me répéter, mais j'ai beau me démener, je n'arrive pas à trouver l'erreur !

//+------------------------------------------------------------------+
string lSymbol;
int init ()
{ 
 lSymbol = Symbol();
 return (0);
}
int deinit()
{return(0);}
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   double bid, ask, point, digits;
   int cnt, ticket, total;
   
  total = SymbolOrdersTotal (lSymbol);
  
  if (total<1);
  {
    bid   = MarketInfo(lSymbol,MODE_BID);
    ask   = MarketInfo(lSymbol,MODE_ASK);
    point = MarketInfo(lSymbol,MODE_POINT);
    digits= MarketInfo(lSymbol,MODE_DIGITS);



Так выглядит оснавная часть, а это злопалучный блок закрытия



 for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==lSymbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*point))
                {
                 OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(bid-OrderOpenPrice()>point*TrailingStop)
                 {
                  if(OrderStopLoss()<bid-point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
              {
               OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-ask)>(point*TrailingStop))
                 {
                  if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                }
              }
           }
        }
     }
   return(0);
  }
  
   
  int SymbolOrdersTotal(string lSymbol)
{
   int Res=0;
   int total=OrdersTotal();
   for (int i=0;i<total;i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderSymbol()==lSymbol)
         {
            Res++;
         }
      }
   }
   return(Res);
}
// the end.
 
Qwertee:
J'ai tout remplacé, mais ça saute toujours de la même façon pour une raison quelconque...((((((
écrivez ce que vous obtenez et les messages que vous envoyez dans le journal.
Raison: