Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 721

 
Comment faire une martingale correcte ?
Je comprends bien :
Avant d'ouvrir chaque transaction, vous devez vérifier toutes les transactions sur ce symbole avec ce magicien et si la dernière transaction à la date avec une perte, respectivement augmenter le lot ?
 
Roman Sharanov:
Quelle est la bonne façon de faire une martingale ?
Je comprends bien :
Avant d'ouvrir chaque transaction, vous devez vérifier toutes les transactions sur ce symbole avec ce magicien et si la dernière transaction à date est à perte, respectivement augmenter le lot ?

C'est comme ça

 
Sergey Gritsay:

C'est comme ça

Je ne comprends pas comment calculer la transaction la plus récente parmi toutes les transactions.

 
Quelqu'un a-t-il déjà eu besoin d'obtenir des données d'indicateur basées sur un autre indicateur, par exemple un RSI superposé à un RSI ?
 
Roman Sharanov:

Je ne comprends pas comment calculer la transaction la plus récente parmi toutes celles qui ont été effectuées.

Ça donne quelque chose comme ça.

double  ProfitLastDeals()
  {
   double m_profit=0;
   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=m_magic)continue;
      if(OrderSymbol()!=m_symbol)continue;
      if(OrderType()==m_type)
        {
         m_profit=OrderProfit();
        }
     }
   return(m_profit);
  }
 
Sergey Gritsay:
Les amis, est-ce que quelqu'un a rencontré, j'ai besoin d'obtenir des données d'indicateur basées sur un autre indicateur, par exemple RSI superposé sur RSI.

Tout est réglé, la question n'est plus pertinente.

 
Roman Sharanov:

Je ne comprends pas comment calculer le plus récent de tous les échanges.

Désolé, le dernier exemple sélectionne parmi les ouverts, parmi les fermés, cela devrait être comme ceci

double  ProfitLastDealsHistory()
  {
   double m_profit=0;
   int total=OrdersHistoryTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderMagicNumber()!=m_magic)continue;
      if(OrderSymbol()!=m_symbol)continue;
      if(OrderType()==m_type)
        {
         m_profit=OrderProfit();
        }
     }
   return(m_profit);
  }
 

Comportement étrangede iBarShift(). Renvoie l'index (-1) avec le drapeauexact =false explicitement vérifié.

L'erreur se produit de manière aléatoire à tout moment, il n'y a aucun moyen de la rattraper manuellement.

En cas d'obtention d'un indice négatif, le code écrit dans la console les paramètres de la requête exécutée et son résultat.

2019.01.04 10:40:24.047 CCC (GBPUSD,M1) Neg index: NZDUSD TimeCurrent: 2019.01.04 09:40:23 Request: 2019.01.04 09:40:23 TimeLastTick: 2019.01.04 09:40:23.44
2019.01.04 10:40:24.047 CCC (GBPUSD,M1) LastError: 0

Demande - le moment où l'indice de barre est demandé

TimeLastTick est l'heure du dernier tick pour le symbole demandé ;MqlTick[] est pris juste après l'erreur.

Quelles pourraient être les raisons d'un tel comportement, peut-être quelqu'un l'a-t-il rencontré ?

 
SemenTalonov:

Comportement étrangede iBarShift(). Renvoie l'index (-1) avec le drapeauexact =false explicitement vérifié.

L'erreur se produit de manière aléatoire à tout moment, il n'y a aucun moyen de la rattraper manuellement.

En cas d'obtention d'un indice négatif, le code écrit dans la console les paramètres de la requête exécutée et son résultat.

Demande - le moment où l'indice de barre est demandé

TimeLastTick est l'heure du dernier tick pour le symbole demandé ;MqlTick[] est pris juste après l'erreur.

Quelles peuvent être les raisons d'un tel comportement, que quelqu'un a peut-être rencontré ?

Que dit la documentation à propos de exact == false ?
 
Artyom Trishkin:
Que dit la documentation à propos de exact == false ?

Valeur renvoyée si aucune barre n'a été trouvée à l'heure spécifiée. Lorsqueexact=false iBarShift renvoie l'indice de la barre la plus proche dont le temps d'ouverture est inférieur à celui spécifié (time_open<time). Si une telle barre n'est pas trouvée (pas d'historique avant le temps spécifié), la fonction renvoie -1.

Mais nous avons une histoire, c'est un fait. Tout se passe à la barre la plus récente (0ème par série chronologique).

Raison: