Questions des débutants MQL5 MT5 MetaTrader 5 - page 930

 
ascerdfg:
C'est possible :

remplacer par :

Pourquoi pas ? Bien sûr que vous pouvez.

 
double Open[3];

int Ind_Handle;

int OnInit()
  {
      Ind_Handle=iCustom(_Symbol,_Period,"Pop"); // Pop.ex5
      if(Ind_Handle==INVALID_HANDLE)
        {
         Print(" Не удалось получить хендл индикатора");
         return(INIT_FAILED);
        }
   
   return(INIT_SUCCEEDED);
  }


void OnTick()
  {
 
      CopyBuffer(Ind_Handle,0,1,1,Open);
      Print("Open0 ",Open[0]);
  }

Imprime : "Open0 1.797693134862316e+308".

Bien que j'aie changé le numéro de la cellule tampon de l'indicateur et l'index.

Je suis sûr qu'il y a un nombre entier dans l'indicateur. Pourquoi est-ce que ça s'imprime comme ça ?

 
ascerdfg:

Imprime : "Open0 1.797693134862316e+308".

Bien que j'aie changé le numéro de la cellule tampon de l'indicateur et l'index.

Je suis sûr qu'il y a un nombre entier dans l'indicateur. Pourquoi est-ce que ça s'imprime comme ça ?

Soit faire en sorte que ArraySetAsSeries soit vrai après la déclaration du tableau, soit déclarer un tableau de taille 1.
 
void OnTick()
  {
     int i;
     double price=.5;
     double Open[];
      ArraySetAsSeries(Open,true);

      Print("Кол-во ",BarsCalculated(Ind_Handle));
      Print("хэндл ",Ind_Handle);
      CopyBuffer(Ind_Handle,0,0,100,Open);
                 
      
    for(i=0; i<100; i++)
    {
        if(Open[i]!=EMPTY_VALUE)
        {
            price=Open[i];
            break;
        }
    }
           
      Print(price);
  }
Ça ne marche pas, ça écrit 0,5 tout le temps. Il y a toujours un tampon avec le nombre maximum.
 
ascerdfg:
N'aide pas, écrit tout le temps 0,5. Il s'avère que le tampon est tout le temps avec le nombre maximum.

Si vous voulez une réponse précise, posez la question correctement : fournissez le code de l'indicateur et le code du conseiller expert. Maintenant, ce n'est pas clair : QUOI, QUI et OÙ :)

 

Rohr - indicateur

rrr - conseiller

Dossiers :
Pop.mq5  38 kb
ppp.mq5  4 kb
 
ascerdfg:

Ror - indicateur

rrr - EA

Réécrivez l'indicateur - premièrement, vérifiez les MOTS D'ARRÊT, deuxièmement, simplifiez-le autant que possible - par exemple, entrez le nombre égal au numéro de la barre actuelle dans le tampon de l'indicateur.

Ce que nous obtenons : array[0]=0.0, array[1]=1.0 et ainsi de suite. Cela simplifiera TRES, TRES le processus de compréhension de la réception des données de l'indicateur. Troisièmement, ne laissez qu'un seul tampon indicateur.

 

Pouvez-vous me dire comment spécifier explicitement le symbole mis à jour dans cette fonction ? Par exemple EURUSD.m

//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+
 

Bonjour !

Savez-vous comment construire un indicateur pour le marché ?

J'ai un fichier avec l'extension .mq5 et quelques fichiers d'inclusion avec l'extension .mqh.

D'après ce que j'ai compris, il est impossible de joindre un fichier .mqh à un fichier .mqh via les ressources. Dois-je vraiment tout convertir en un seul fichier manuellement ?

Et s'il y a une nouvelle version : ? C'est fou +))))

Merci.

 
EgorKim:

Pouvez-vous me dire comment spécifier explicitement le symbole mis à jour dans cette fonction ? Par exemple EURUSD.m

Une question complémentaire : "Pourquoi faut-il spécifier le symbole explicitement ici ?

Si vous utilisez cette fonction, vous devez affecter un symbole à m_symbol dans OnInit :

   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();

Dans ce cas, si vous exécutez le Conseiller Expert sur le symbole "EURUSD.m" pour m_symbol sera automatiquement défini à "EURUSD.m".