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

 

Alp:

Je m'excuse pour la question idiote, mais quand même.

Je ne peux pas le comprendre. Supposons que j'achète (c'est-à-dire que je réalise une transaction d'achat) pour 1 000 000 $ ou tout autre montant d'EURUSD, de sorte que le graphique saute sensiblement.

Et la question est de savoir où il ira après un tel accord - à la hausse ou à la baisse (un seul saut de mon accord) ? Je pense que ça va augmenter. Est-ce que je pense correctement ?

Dimka-novitsek:

Oui, je le vois comme ça. Parce que disons que vous avez acheté l'euro, et qu'il y en a moins sur le marché, parce qu'une partie reste dans votre casier. Cela signifie que leur prix sur le marché va augmenter !

Ensuite, cela devient encore plus flou. Disons que j'achète des EUR pour 1 000 000 (1k) dollars (le courtier multiplie cela par 100 et par conséquent la transaction est de 100k) le graphique saute 100 points vers le haut et immédiatement je les vends et je suis sur le côté positif pour 10 000 dollars bien il y a la commission du courtier et le spread et par conséquent 6000$ net dans ma poche. (Il est clair qu'après la vente, il chutera à nouveau de 100 points.) C'est absurde ! !!!. Peut-être qu'il va tomber au fond après tout ? Sinon, de très grands acteurs gagneraient des milliards en ne faisant pratiquement rien.

 
Roman.:

Les gars, pouvez-vous nous conseiller sur cette question ?

Voici un script pour trouver la taille maximale du contrecoup en zig-zag de crenfx - voir ici:

Je le lance sur le graphique de l'instrument sur M5 - cela fonctionne bien avec l'horizon temporel par défaut

c'est la profondeur maximale de l'historique du symbole dans le bureau Alpari lorsqu'on le charge avec F2 - je l'ai vérifié, c'est-à-dire qu'il ressemble au contenu de l'onglet "Experts" du terminal client - cela semble vrai :

Lorsque j'utilise la même conception de script dans mon EA sur le même intervalle de temps sur la même période de graphique M5, il ne compte pas correctement, c'est-à-dire que

il calcule des nombres très différents (plus petits que dans le script) ou 0. Quelle peut être l'erreur ou l'incohérence de l'histoire ? Merci.

Par exemple, je démarre dans le testeur avec le hibou après le temps estimé pour trouver un failsafe, en théorie tout est normal et les chiffres à la fin du script et du hibou devraient être les mêmes... Quelle pourrait être l'erreur ?


Vérifiez le nombre de barres dans le testeur. Au départ, il devrait être de 1000, s'il est présent bien sûr.
 
Vinin:

Vérifiez le nombre de barres dans le testeur. Au départ, il devrait être de 1000, s'il est présent bien sûr.

Comment le vérifier ?
 
Print("Bars=", Bars) ;
 
Vinin:
Print("Bars=", Bars) ;

Je l'ai. Merci. Je vais vérifier.
 
Messieurs, pourriez-vous me donner un exemple de la fonction qui déplace une position ouverte vers le breakeven (travail sur tick), mon Expert Advisor a un chalut, le début de ce chalut est seulement après la fonction de rollover à l'achat. Je voudrais utiliser cette fonction dans mon article à titre d'exemple et vérifier mes résultats.
 

Veuillez me dire pourquoi, dans ce morceau de code, la variable externe Lots111 continue d'augmenter sa valeur, la multiplie par un nombre inconnu et devient 435435466445000000000000.

La variable Lots111 n'est utilisée nulle part ailleurs que dans ce fragment de code. Lots111 est égal à 0,01, tandis que la variable dcou est égale à 2-3. Pour être plus exact, j'ai remarqué qu'elle augmente à chaque nouvelle barre; je ne comprends pas pourquoi. Comment est-il possible qu'une variable externe qui n'est utilisée nulle part ailleurs conserve sa valeur et augmente sur chaque barre, très probablement multipliée par 2.

double fGetLots(int a_cmd_0) {
   int dcou;
   dcou = AccountBalance()/2000;
   Lots111 = Lots111*dcou;
   int i11;
   int orders;
   
   for(i11=0;i11<OrdersTotal();i11++)
     {
     if(OrderSelect(i11,SELECT_BY_POS,MODE_TRADES) == true)
       {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
         orders++;
         }
       }
     }
   static double Lots2;
   
   if(orders == 0)
     {
     Lots2 = Lots111;
     }
   Comment(Lots111,"\n",Lots2,"\n",orders,"\n",dcou);
   double l_lots_4;
   int l_datetime_12;
   switch (gi_256) {
   case 0:
      l_lots_4 = Lots2;
      break;
   case 1:
      l_lots_4 = NormalizeDouble(Lots2 * MathPow(MultiLotsFactor, gi_360), gd_240);
      break;
   case 2:
      l_datetime_12 = 0;
      l_lots_4 = Lots2;
      for (int l_pos_20 = OrdersHistoryTotal() - 1; l_pos_20 >= 0; l_pos_20--) {
         if (OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
               if (l_datetime_12 < OrderCloseTime()) {
                  l_datetime_12 = OrderCloseTime();
                  if (OrderProfit() < 0.0) l_lots_4 = NormalizeDouble(OrderLots() * MultiLotsFactor, gd_240);
                  else l_lots_4 = Lots2;
               }
            }
         } else return (-3);
      }
   }
   if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
   if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
   return (l_lots_4);
}
 
sss2019:

Veuillez me dire pourquoi, dans ce morceau de code, la variable externe Lots111 continue d'augmenter sa valeur, la multiplie par un nombre inconnu et devient 435435466445000000000000.

La variable Lots111 n'est utilisée nulle part ailleurs que dans ce fragment de code. J'ai Lots111 égal à 0.01 et dcou variable égal à 2-3.

Essayez d'initialiser les variables parfois. Parfois, ça aide. Surtout lorsqu'ils sont utilisés par défaut. C'est-à-dire que la valeur n'est pas exactement définie, et qu'ils sont multipliés, divisés par eux. Vous pouvez également gagner la division par zéro de la même manière.
 
Vinin:
Essayez d'initialiser les variables parfois. Parfois, ça aide. Surtout lorsqu'ils sont utilisés par défaut. C'est-à-dire que la valeur n'est pas exactement définie, et qu'ils sont multipliés, divisés par eux. Vous pouvez également gagner la division par zéro de la même manière.


Pouvez-vous expliquer cela plus en détail ? Oh bien, je pense que j'ai compris, j'ai remis toutes les variables à leurs valeurs originales, mais le problème persiste.
 
sss2019:

Veuillez expliquer plus en détail ce qui doit être fait. Je pense que j'ai trouvé, j'ai remis toutes les variables à leurs valeurs d'origine mais le problème persiste.

Vous avez arraché le code d'un certain EA (vous l'avez piraté avant), mais ce n'est pas important (au moins vous avez essayé de le comprendre). Mais vous auriez dû créer la vôtre sur cette base, à laquelle vous auriez facilement accédé. Et alors vous n'auriez pas eu de problèmes. Travaillez avec votre tête.