Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 240

 
barabashkakvn:

Salve.

1. Non posso usare l'indicatore "Blau_Ergodic" perché non c'è un archivio alla fine dell'articolo. Ora ho bisogno di un file include " WilliamBlau.mqh". Per favore, inviatemi questo file (meglio tramite messaggio di profilo).

2. Tutti gli indicatori sono in...MQL5\Indicators\Examples\ - questi sono indicatori personalizzati, cioè quegli indicatori, il cui codice si può modificare.

Inviato.
 
forexman77:

Sto cercando di costruire un generatore di segnali di trading basato su un indicatore personalizzato.

Sono sorte le seguenti domande:

1. Posso specificare qualsiasi nome nella linea dopo CiCustom, per esempio segnarlo come "m_ind;".

2. Questa linea è corretta?

Ho capito bene, qui ottengo il valore dell'indicatore stesso?

3. Non riesco a capire come il programma ottiene il valore dell'indicatore. Cioè, se usiamo MQL4, dobbiamo specificare il nome dell'indicatore e il programma lo troverà per nome. Allora dove inserisco il suo nome nella classe?

Ho creato questo codice) Non andrò oltre, perché ho bisogno di più Expert Advisor sulla mia creazione.

In generale, tutto è corretto. Qui c'è solo il codice:

   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

solleva una domanda. ParamDouble - ottiene il valore di un parametro a virgola mobile specificato, che è stato utilizzato nella creazione dell'indicatore. Forse abbiamo bisogno di accedere al valore del buffer dell'indicatore:

   double             Custom(int index)                   { return(m_open.GetData(index));  }
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

?

 
barabashkakvn:

Tutto sommato, tutto è corretto. Tranne il codice:

solleva una domanda. ParamDouble - ottiene il valore del parametro in virgola mobile specificato, utilizzato durante la creazione dell'indicatore. Forse abbiamo bisogno di accedere al valore del buffer dell'indicatore:

?

Guardando l'aiuto, mi sembra che "ParamDouble" sia necessario. Abbiamo effettivamente bisogno di ottenere il valore dal buffer.

Ho trovato solo "NumBuffers" nella classe"CiCustom".

 
forexman77:
Guardando l'aiuto, mi sembra che abbia bisogno di "ParamDouble". In generale, ovviamente, è necessario ottenere il valore dal buffer.
Bene, vedo che tutto si risolverà per voi.
 
barabashkakvn:
Bene, vedo che tutto si risolverà per voi.
Se ho capito bene
double             Custom(int index)                   { return(m_ind.ParamDouble(index));}

il valore dell'indicatore è richiesto con questa linea?

Negli indicatori standard i valori del buffer si ottengono attraverso l'accesso ai dati, ma non c'è nulla sull'accesso ai dati nell'indicatore personalizzato.

Ci sono funzioni nel gruppo delle classi di base e ausiliarie degli indicatori tecnici e delle serie temporali, ma come si fa a collegarle? O non è quello giusto?

 
forexman77:
Se ho capito bene

il valore dell'indicatore è richiesto con questa linea?

Negli indicatori standard i valori del buffer si ottengono attraverso l'accesso ai dati, ma non c'è nulla sull'accesso ai dati nell'indicatore personalizzato.

Ci sono funzioni nel gruppo delle classi di base e ausiliarie degli indicatori tecnici e delle serie temporali, ma come si fa a collegarle? O non è quello giusto?

1. Sì il valore del parametro - per esempio il parametro di ingresso su cui verrà calcolato l'indicatore.

2. Non confondete - l'indicatore in cui potete cambiare il codice è un indicatore personalizzato. Anche se il suo nome è lo stesso dell'indicatore che si trova nella libreria standard. Un esempio di un indicatore personalizzato - ...MQL5\Indicatori\Esempi\e qualsiasi altro dove puoi cambiare il codice. Il buffer dell'indicatore disegna il suo contenuto (dati) sul grafico. Basta cambiare i dati nel buffer dell'indicatore e questo viene disegnato sul grafico. Di quale accesso stai chiedendo?

3. Non capisco.

 
barabashkakvn:

1. Sì valore del parametro - ad esempio il parametro di ingresso su cui l'indicatore sarà calcolato.

2. Non confondete - l'indicatore in cui potete cambiare il codice è un indicatore personalizzato. Anche se il suo nome è lo stesso dell'indicatore che si trova nella libreria standard. Un esempio di un indicatore personalizzato - ...MQL5\Indicatori\Esempi\e qualsiasi altro dove puoi cambiare il codice. Il buffer dell'indicatore disegna il suo contenuto (dati) sul grafico. È sufficiente cambiare i dati nel buffer dell'indicatore per disegnarli sul grafico. Di quale accesso stai chiedendo?

3. Non capisco.

Ecco il parametro di input periodo, che viene utilizzato per calcolare l'indicatore "q"

class CSampleSignal : public CExpertSignal
  {
protected:
   CiCustom           m_ind;              // объект для доступа к значениям ind
   CiOpen             m_open;            // объект для доступа к ценам открытия баров
   CiClose            m_close;           // объект для доступа к ценам закрытия баров
  //--- настраиваемые параметры
   int      q;  // q - период, по которому вычисляется индикатор
   double             m_stop_loss;       // уровень установки ордера "stop loss" относительно цены открытия
   double             m_take_profit;     // уровень установки ордера "take profit" относительно цены открытия
public:
              CSampleSignal();
   //--- методы установки параметров настройки
   void               Q(int value)                 { q=value;   }
   void               StopLoss(double value)       { m_stop_loss=value;   }
   void               TakeProfit(double value)     { m_take_profit=value; }

Alla domanda 2. Ora il seguente codice

protected:
   //--- метод инициализации объектов
   bool               Initind(CIndicators* indicators);
   bool               InitOpen(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
   //--- методы доступа к данным объектов
   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}//знаю, что не правильно
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }
  };

Se ho capito bene, qui specifichiamo che vogliamo ricevere informazioni sui prezzi di apertura e di chiusura, valori dai buffer degli indicatori?

Capisco cosa intendi con gli indicatori standard. I dati del buffer sono ottenuti attraverso"Main". Per esempio, è mostrato nel codice qui sotto

 double             MA(int index)                       { return(m_MA.Main(index));       }
 double             Open(int index)                     { return(m_open.GetData(index));  }
 double             Close(int index)                    { return(m_close.GetData(index)); }

Alla terza domanda. Come ottenere dati dall'indicatore personalizzato?

Per una migliore comprensione, brevemente quali passi devono essere superati nel processo di creazione del generatore del segnale di trading?

 
Se ho capito bene, qui specifichiamo che vogliamo ottenere informazioni sui prezzi di apertura e di chiusura, valori dai buffer degli indicatori?

Sì.

Gli indicatori standard sono chiari. I dati del buffer vengono recuperati tramite "Main". Per esempio, come nel codice qui sotto.

Sì. La classe CiMA ha il metodoMain

Come ottenere dati dall'indicatore personalizzato?

.GetData(index))
dove l'indice è il numero di buffer dell'indicatore.
 
barabashkakvn:

Sì.

Sì. La classe CiMA ha un metodoMain

dove l'indice è il numero del buffer dell'indicatore.
double             Main(int ind)                       { return(m_ind.GetData(0,ind));   }
Giusto)?
 


quando uscirà metatrader su windows phone 8