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

 
barabashkakvn:

Bonjour.

1. je ne peux pas utiliser l'indicateur "Blau_Ergodic" car il n'y a pas d'archive à la fin de l'article. Maintenant j'ai besoin d'un fichier include " WilliamBlau.mqh ". Veuillez m'envoyer ce fichier (mieux via le message de profil).

2. Tous les indicateurs sont en...MQL5\Indicators\Examples\ - ce sont des indicateurs personnalisés, c'est-à-dire des indicateurs dont vous pouvez modifier le code.

Envoyé.
 
forexman77:

J'essaie de construire un générateur de signaux de trading basé sur un indicateur personnalisé.

Les questions suivantes ont été soulevées :

1. Je peux spécifier n'importe quel nom dans la ligne après CiCustom, par exemple le marquer comme "m_ind ;".

2. Cette ligne est-elle correcte ?

Je comprends bien, ici je récupère la valeur de l'indicateur lui-même ?

3. je ne comprends pas comment le programme obtient la valeur de l'indicateur. Par exemple, si nous utilisons MQL4, nous devons spécifier le nom de l'indicateur et le programme le trouvera par son nom. Alors où dois-je entrer son nom dans la classe ?

J'ai créé ce code) Je ne vais pas aller plus loin, car j'ai besoin de plus d'Expert Advisor sur ma création.

En général, tout est correct. Voici juste le code :

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

soulève une question. ParamDouble - obtient la valeur d'un paramètre à virgule flottante spécifié, qui a été utilisé dans la création de l'indicateur. Peut-être avons-nous besoin d'accéder à la valeur du tampon de l'indicateur :

   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:

Dans l'ensemble, tout est correct. Sauf le code :

soulève une question. ParamDouble - obtient la valeur du paramètre à virgule flottante spécifié, utilisé lors de la création de l'indicateur. Peut-être avons-nous besoin d'accéder à la valeur du tampon de l'indicateur :

?

En regardant l'aide, il me semble que " ParamDouble " est nécessaire. Nous devons en fait récupérer la valeur du tampon.

Je n'ai trouvé que "NumBuffers" dans la classe"CiCustom".

 
forexman77:
En regardant l'aide, il me semble qu'il faut " ParamDouble ". En général, bien sûr, vous devez récupérer la valeur dans le tampon.
Eh bien, je vois que tout va s'arranger pour vous.
 
barabashkakvn:
Eh bien, je vois que tout va s'arranger pour vous.
Si je comprends bien
double             Custom(int index)                   { return(m_ind.ParamDouble(index));}

la valeur de l'indicateur est-elle demandée avec cette ligne ?

Dans les indicateurs standards, les valeurs tampons sont obtenues par l'accès aux données, mais il n'y a rien sur l'accès aux données dans l'indicateur personnalisé.

Il existe des fonctions dans le groupe des classes de base et auxiliaires des indicateurs techniques et des séries chronologiques, mais comment les joindre ? Ou ce n'est pas ce dont j'ai besoin ?

 
forexman77:
Si je comprends bien

la valeur de l'indicateur est-elle demandée avec cette ligne ?

Dans les indicateurs standards, les valeurs tampons sont obtenues par l'accès aux données, mais il n'y a rien sur l'accès aux données dans l'indicateur personnalisé.

Il existe des fonctions dans le groupe des classes de base et auxiliaires des indicateurs techniques et des séries chronologiques, mais comment les joindre ? Ou ce n'est pas le bon ?

1. Oui la valeur du paramètre - par exemple le paramètre d'entrée sur lequel l'indicateur sera calculé.

2. Ne confondez pas - l'indicateur dans lequel vous pouvez changer le code est un indicateur personnalisé. Même si son nom est le même que celui de l'indicateur fourni dans la bibliothèque standard. Un exemple d'indicateur personnalisé - ...MQL5\Indicators\Examples\\ et tous les autres où vous pouvez modifier le code. Le tampon de l'indicateur dessine son contenu (données) sur le graphique. Il suffit de modifier les données dans le tampon de l'indicateur pour qu'elles soient dessinées sur le graphique. De quel accès s'agit-il ?

3. Je ne comprends pas.

 
barabashkakvn:

1. Oui valeur du paramètre - par exemple, le paramètre d'entrée sur lequel l'indicateur sera calculé.

2. Ne confondez pas - l'indicateur dans lequel vous pouvez changer le code est un indicateur personnalisé. Même si son nom est le même que celui de l'indicateur fourni dans la bibliothèque standard. Un exemple d'indicateur personnalisé - ...MQL5\Indicators\Examples\\ et tous les autres où vous pouvez modifier le code. Le tampon de l'indicateur dessine son contenu (données) sur le graphique. Il suffit de modifier les données dans le tampon de l'indicateur pour qu'elles soient dessinées sur le graphique. De quel accès s'agit-il ?

3. Je ne comprends pas.

Voici le paramètre d'entrée "période", qui est utilisé pour calculer l'indicateur "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; }

A la question 2. Maintenant, le code suivant

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

Si je comprends bien, nous spécifions ici que nous voulons recevoir des informations sur les prix d'ouverture et de fermeture, les valeurs des tampons des indicateurs ?

Je comprends ce que vous voulez dire avec les indicateurs standard. Les données du tampon sont obtenues par"Main". Par exemple, il est montré dans le code ci-dessous

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

A la 3ème question. Comment récupérer les données de l'indicateur personnalisé?

Pour une meilleure compréhension, quelles sont brièvement les étapes à franchir dans le processus de création du générateur du signal de trading ?

 
Si je comprends bien, nous spécifions ici que nous voulons obtenir des informations sur les prix d'ouverture et de fermeture, les valeurs des tampons des indicateurs ?

Oui.

Les indicateurs standard sont clairs. Les données du tampon sont récupérées via "Main". Par exemple, comme dans le code ci-dessous.

Oui, la classe CiMA possède la méthodeMain.

Comment récupérer les données de l'indicateur personnalisé?

.GetData(index))
où index est le numéro du tampon de l'indicateur.
 
barabashkakvn :

Oui.

Oui. La classe CiMA possède une méthodeMain

où index est le numéro du tampon de l'indicateur.
double             Main(int ind)                       { return(m_ind.GetData(0,ind));   }
N'est-ce pas) ?
 


Quand metatrader sortira-t-il sur Windows Phone 8 ?