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

 
Andy:

Ici, l'avant-dernier paramètre apparaît lorsque le module de signal est sélectionné et que les paramètres sont prévisualisés, mais pas le dernier (pas d'erreur, pas d'avertissement de compilation non plus).

Rien n'est clair. Essayez de surligner le texte avec l'outil "Couleur".

Sinon, vous ne saurez pas quel est l'"avant-dernier paramètre" et quel est le "dernier".

 
J'ai surligné une ligne qui ne fonctionne pas.
 
Andy:
J'ai surligné une ligne qui ne se déclenche pas.

La solution est la suivante : dans le module des signaux

//+------------------------------------------------------------------+
//|                                                    SignalRSI.mqh |
//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#include <Expert\ExpertSignal.mqh>
// wizard description start
//+------------------------------------------------------------------+
//| Description of the class                                         |
//| Title=Signals of oscillator 'Relative Strength Index'            |
//| Type=SignalAdvanced                                              |
//| Name=Relative Strength Index                                     |
//| ShortName=RSI                                                    |
//| Class=CSignalRSI                                                 |
//| Page=signal_rsi                                                  |
//| Parameter=PeriodRSI,int,8,Period of calculation                  |
//| Parameter=Applied,ENUM_APPLIED_PRICE,PRICE_CLOSE,Prices series   |
//| Parameter=Intervals,int,1,Type of intervals                      |
//+------------------------------------------------------------------+
// wizard description end
//+------------------------------------------------------------------+
//| Class CSignalRSI.                                                |
//| Purpose: Class of generator of trade signals based on            |
//|          the 'Relative Strength Index' oscillator.               |
//| Is derived from the CExpertSignal class.                         |
//+------------------------------------------------------------------+
class CSignalRSI : public CExpertSignal
  {
protected:
   CiRSI             m_rsi;            // object-oscillator
   //--- adjusted parameters
   int               m_periodRSI;      // the "period of calculation" parameter of the oscillator
   ENUM_APPLIED_PRICE m_applied;       // the "prices series" parameter of the oscillator
   int               m_intervals;      //
   //--- "weights" of market models (0-100)
   int               m_pattern_0;      // model 0 "the oscillator has required direction"
   int               m_pattern_1;      // model 1 "reverse behind the level of overbuying/overselling"
   int               m_pattern_2;      // model 2 "failed swing"
   int               m_pattern_3;      // model 3 "divergence of the oscillator and price"
   int               m_pattern_4;      // model 4 "double divergence of the oscillator and price"
   int               m_pattern_5;      // model 5 "head/shoulders"
   //--- variables
   double            m_extr_osc[10];   // array of values of extremums of the oscillator
   double            m_extr_pr[10];    // array of values of the corresponding extremums of price
   int               m_extr_pos[10];   // array of shifts of extremums (in bars)
   uint              m_extr_map;       // resulting bit-map of ratio of extremums of the oscillator and the price

public:
                     CSignalRSI(void);
                    ~CSignalRSI(void);
   //--- methods of setting adjustable parameters
   void              PeriodRSI(int value)              { m_periodRSI=value;           }
   void              Applied(ENUM_APPLIED_PRICE value) { m_applied=value;             }
   void              Intervals(int value)              { m_intervals=value;           }
   //--- methods of adjusting "weights" of market models
   void              Pattern_0(int value)              { m_pattern_0=value;           }


Dans l'Expert Advisor qui a été généré par l'Assistant MQL5:

//+------------------------------------------------------------------+
//|                                                          RSI.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalRSI.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedLot.mqh>
//---
enum ENUM_intervals  // Enumeration of named constants 
  {
   month=1,     // Interval of one month 
   two_months,  // Two months 
   quarter,     // Three months - quarter 
   halfyear=6,  // Half a year 
   year=12,     // Year - 12 months 
  };
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title         ="RSI";       // Document name
ulong                    Expert_MagicNumber   =13111;       // 
bool                     Expert_EveryTick     =false;       // 
//--- inputs for main signal
input int                Signal_ThresholdOpen =10;          // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose=10;          // Signal threshold value to close [0...100]
input double             Signal_PriceLevel    =0.0;         // Price level to execute a deal
input double             Signal_StopLevel     =50.0;        // Stop Loss level (in points)
input double             Signal_TakeLevel     =50.0;        // Take Profit level (in points)
input int                Signal_Expiration    =4;           // Expiration of pending orders (in bars)
input int                Signal_RSI_PeriodRSI =8;           // Relative Strength Index(8,...) Period of calculation
input ENUM_APPLIED_PRICE Signal_RSI_Applied   =PRICE_CLOSE; // Relative Strength Index(8,...) Prices series
input ENUM_intervals     Signal_RSI_Intervals =month;       // Relative Strength Index(8,...) Type of intervals
input double             Signal_RSI_Weight    =1.0;         // Relative Strength Index(8,...) Weight [0...1.0]
//--- inputs for money
input double             Money_FixLot_Percent =10.0;        // Percent
input double             Money_FixLot_Lots    =0.1;         // Fixed volume
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;


Conclusion :


 
Un paramètre d'entrée qui utilise un enum dans la description du module de signal ne peut-il pas être spécifié directement ?
 
Andy:
Ne pouvez-vous pas simplement spécifier le paramètre d'entrée en utilisant l'enum dans la description du module de signal ?

Est-il difficile d'appuyer sur le bouton "Répondre" ? Pour qu'il soit clair à qui vous vous adressez et quelle question vous posez ?

 
Donc, si les messages se suivent, il est déjà clair qu'ils sont en réponse au précédent, et utiliser une citation supplémentaire est une surcitation.
 
Andy:
Donc, si les messages se suivent et qu'il est déjà clair qu'il s'agit d'une réponse au message précédent, l'utilisation d'une citation supplémentaire est déjà une citation excessive.

Sortez du dialogue. Continuez à demander en l'air, c'est-à-dire à personne.

 
Vladimir Karputov:

Sortez du dialogue. Continuez à demander en l'air, c'est-à-dire à personne.

Il n'y a donc pas de réponse ? La question s'adresse à tous.

 
Andy:
Un paramètre d'entrée utilisant un enum ne peut-il pas être spécifié directement dans la description du module de signal ?
Vous pouvez.
 

Pourriez-vous me dire où trouver un exemple ?

Où, dans le module de signal,insérer le code du paramètre d'entrée sous forme d'énumération, afin qu'il puisse ensuite être spécifié dans le descripteur de ce module.

enum ENUM_AVAILABLE_POSITIONS
  {
   LONG_POSITION,
   SHORT_POSITION,
   BOTH_POSITION
  };