Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 930

 
ascerdfg:
È possibile:

sostituire con:

Perché no? Certo che si può.

 
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]);
  }

Stampa: "Open0 1.797693134862316e+308".

Anche se ho cambiato sia il numero di cella del buffer dell'indicatore che l'indice.

So per certo che c'è un intero nell'indicatore. Perché si stampa così?

 
ascerdfg:

Stampa: "Open0 1.797693134862316e+308".

Anche se ho cambiato sia il numero di cella del buffer dell'indicatore che l'indice.

So per certo che c'è un intero nell'indicatore. Perché si stampa così?

O rendere ArraySetAsSeries vero dopo la dichiarazione dell'array o dichiarare l'array con dimensione 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);
  }
Non funziona, scrive sempre 0,5. Sembra che il buffer sia sempre con il numero massimo.
 
ascerdfg:
Non aiuta, scrive sempre 0,5. Si scopre il buffer tutto il tempo con il numero massimo.

Se vuoi una risposta precisa, fai la domanda correttamente: fornisci il codice dell'indicatore e il codice dell'Expert Advisor. Ora non è chiaro COSA, CHI e DOVE :)

 

Rohr - indicatore

rrr - consulente

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

Ror - indicatore

rrr - EA

Riscrivete l'indicatore - in primo luogo, verificate la presenza di STOP WORDS, in secondo luogo, semplificatelo il più possibile - per esempio, inserite il numero uguale al numero della barra corrente nel buffer dell'indicatore.

Cosa otteniamo: array[0]=0,0, array[1]=1,0 e così via. Questo semplificherà MOLTO, MOLTO, il processo di comprensione della ricezione dei dati dell'indicatore. Terzo - lasciate solo un buffer di indicatori.

 

Potete dirmi come specificare esplicitamente il simbolo aggiornato in questa funzione? Per esempio 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);
  }
//+------------------------------------------------------------------+
 

Buon pomeriggio!

Sai come costruire un indicatore per il mercato?

Ho un file con estensione .mq5 e alcuni file include con estensione .mqh.

Per quanto ho capito, non è possibile allegare .mqh al file .mqh tramite risorse, dovrei davvero convertire tutto in un unico file manualmente?

E se ci fosse una nuova versione:? È pazzesco +)))

Grazie.

 
EgorKim:

Potete dirmi come specificare esplicitamente il simbolo aggiornato in questa funzione? Per esempio EURUSD.m

Una domanda successiva: "Perché avete bisogno di specificare esplicitamente il simbolo qui?

Se usate questa funzione, dovete assegnare un simbolo a m_symbol in OnInit:

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

In questo caso, se si esegue l'Expert Advisor sul simbolo "EURUSD.m" per m_symbol sarà automaticamente impostato su "EURUSD.m".