Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 893

 
Andy:

En este caso, el penúltimo parámetro aparece cuando se selecciona el módulo de señales y se previsualizan los parámetros, pero el último no (no hay errores, ni tampoco advertencias de compilación).

Nada está claro. Intente resaltar el texto con la herramienta "Color".

De lo contrario, no sabrás cuál es el "penúltimo parámetro" y cuál es el "último".

 
Resaltar una línea que no funciona.
 
Andy:
Resaltar una línea que no se dispara.

La solución es la siguiente: en el módulo de señales

//+------------------------------------------------------------------+
//|                                                    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;           }


En el Asesor Experto que fue generado por el Asistente 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;


El resultado final:


 
¿No se puede especificar directamente un parámetro de entrada que utiliza un enum en la descripción del módulo de señal?
 
Andy:
¿No se puede especificar el parámetro de entrada mediante un enum en la descripción del módulo de señal?

¿Es difícil pulsar el botón "Responder"? ¿Para dejar claro a quién te diriges y qué pregunta haces?

 
Así que si los posts van uno detrás de otro ya está claro que son una respuesta al anterior, y usar una cita extra es sobrecitar.
 
Andy:
Así que si los posts son uno tras otro y ya está claro que es una respuesta al anterior y usar una cita extra ya es sobrecitar.

Salga del diálogo. Sigue preguntando en el aire, es decir, a nadie.

 
Vladimir Karputov:

Salga del diálogo. Sigue preguntando al aire, es decir, a nadie.

¿Entonces no hay respuesta? La pregunta es para todos.

 
Andy:
¿No se puede especificar un parámetro de entrada mediante enum directamente en la descripción del módulo de señal?
Puedes hacerlo.
 

¿Podría decirme dónde encontrar un ejemplo?

Donde en el módulo de señal parainsertar el código del parámetro de entrada como una enumeración, para que luego pueda ser especificado en el descriptor de ese módulo.

enum ENUM_AVAILABLE_POSITIONS
  {
   LONG_POSITION,
   SHORT_POSITION,
   BOTH_POSITION
  };
Razón de la queja: