para continuar...
Se me ocurrió convertir las líneas de este ejemplo:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_método_lento!=MODE_SMA && m_método_lento!=MODE_EMA && m_método_lento!=MODE_SMMA && m_método_lento!=MODE_LWMA)
En el algoritmo
1) dos matrices:
el primero contiene m_method_fast y m_method_slow
el segundo contiene los valores de la enumeración ENUM_MA_METHOD.
2) En un bucle, tomando el valor del primer array, comprobar si se encuentra en el segundo.
¿Puedes decirme cómo implementar esto?
Entiendo que es necesario conectar CArray . Pero, ¿qué tipo?
Quién puede, por favor, escribir una parte del código, porque las cosas básicas elementales, y con la sintaxis no puedo coger todavía.
¡Gracias!
- www.mql5.com
para continuar...
Se me ocurrió convertir las líneas de este ejemplo:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_método_lento!=MODE_SMA && m_método_lento!=MODE_EMA && m_método_lento!=MODE_SMMA && m_método_lento!=MODE_LWMA)
En el algoritmo
1) dos matrices:
el primero contiene m_method_fast y m_method_slow
el segundo contiene los valores de la enumeración ENUM_MA_METHOD.
2) En un bucle, tomando el valor del primer array, comprobar si se encuentra en el segundo.
¿Puedes decirme cómo implementar esto?
Entiendo que es necesario conectar CArray . Pero, ¿qué tipo?
¿Quién puede, por favor, escribir una parte del código, porque las cosas básicas elementales, y con la sintaxis que aún no puedo captar.
¡Gracias!
Así:
func(int& array1[],int& array2[]) { int total1=ArraySize(array1); int total2=ArraySize(array2); //--- for(int i=0;i<total1;i++) { for(int j=0;j<total2;j++) { if(array1[i]==array2[j]) { // encontrado } } } }
Sí, ya he llegado a este punto en C++ para principiantes :-)
Excepto que allí no existe tal tipo de datos ENUM_MA_METHOD
¿Cómo puedo averiguar en qué tipo de datos consiste esta enumeración? ¿Es posible hacer un bucle a través de la propia enumeración ENUM_MA_METHOD?
Ahora veo dos maneras:
//primera forma de describir ambas matrices ENUM_MA_METHOD l_array_enum_ma_method[3]; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; print("array size %d", ArraySize(l_array_enum_ma_method)); print("ENUM_MA_METHOD size %d", ArraySize(ENUM_MA_METHOD)); ENUM_MA_METHOD l_array_select_method[1]; l_array_select_method[0]=m_MethodFast; l_array_select_method[1]=m_MethodSlow; //además según el esquema /segundo modo, conectar la biblioteca //#include <Arrays\ArrayInt.mqh> CArrayInt *l_array_enum_ma_method=new CArrayInt; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; l_array_enum_ma_method.Sort(); //--- elemento de búsqueda if(l_array_enum_ma_method.Search(m_MethodFast)!=-1) printf("Element found"); else printf("Element not found"); //--- borrar array delete l_array_enum_ma_method;
en la segunda forma necesitas conectar una librería de un tipo específico, ¿y qué tipo es ENUM_MA_METHOD?
hmm... extraño, hice clic en responder y resultó ser un nuevo post....
Sí, ya he llegado a este punto en C++ para principiantes :-)
Excepto que allí no existe tal tipo de datos ENUM_MA_METHOD
¿Cómo puedo averiguar en qué tipo de datos consiste esta enumeración? ¿Es posible hacer un bucle a través de la propia enumeración ENUM_MA_METHOD?
Ahora veo dos maneras:
en la segunda forma necesitas conectar una librería de un tipo específico, ¿y qué tipo es ENUM_MA_METHOD?
hmm... que raro, hice click en responder y resultó ser un nuevo post....
Primera manera:
ENUM_MA_METHOD l_array_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; //--- más adelante
Segunda manera:
#include <Arrays\ArrayInt.mqh> CArrayInt l_array_enum_ma_method; //--- l_array_enum_ma_method.Add(MODE_SMA); l_array_enum_ma_method.Add(MODE_EMA); l_array_enum_ma_method.Add(MODE_SMMA); l_array_enum_ma_method.Add(MODE_LWMA); //--- más adelante
No puedo entender por qué se requieren tantos pasos?
ups... muchas gracias, eso es lo que intento hacer... off.
En el primer caso, ya he visto esta forma de grabar, pero aún no me he dado cuenta de lo que necesito,
y en el segundo caso - Yo estaba confundido por ArrayInt. Pensé que desde Int, significa que sólo se almacena el valor numérico, pero ,
parece que el compilador convierte MODE_SMA en un número, y al obtener el valor de nuevo, será necesario realizar una conversión implícita (usando paréntesis) al tipo(ENUM_MA_METHOD), es decir, algo similar a lo siguiente.
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
P.D. En la tercera sección 3. Métodos para establecer parámetros, deberíamos borrar las líneas declaradas prematuramente, creo que
:
CiCustom m_fast_ma; // indicador como objeto CiCustom m_slow_ma; // indicador como objeto
Me estaba emocionando, pero no puedo evitarlo (comm - leí sobre la transferencia de direcciones de memoria, pero tampoco funcionó así):
El compilador devuelve el error 'm_MethodFast' - expresión constante requerida, ' m_MethodSlow' - expresión constante requerida
Por supuesto, estas son preguntas para un dummies. tal vez debería hacer este tipo de preguntas en otro hilo, a fin de no obstruir el artículo?
//primera forma de describir ambas matrices //int *Finger_m_MethodFast; //int *Finger_m_MethodSlow; //Finger_m_MethodFast=&m_MethodFast; //Finger_m_MethodFast=&m_MethodSlow; // int l_array1_select_method[]={Finger_m_MethodFast,Finger_m_MethodFast}; ENUM_MA_METHOD l_array1_select_method[]={m_MethodFast,m_MethodSlow}; ENUM_MA_METHOD l_array2_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; int total_array1=ArraySize(l_array1_select_method); int total_array2=ArraySize(l_array2_enum_ma_method); bool NoErrorsFlag=false; for(int i_array1=0;i_array1<total_array1;i_array1++) { for(int i_array2=0;i_array2<total_array2;i_array2++) { if(l_array1_select_method[i_array1]=l_array2_enum_ma_method[i_array2]) { NoErrorsFlag=true; } } if(!NoErrorsFlag) { PrintFormat("¡Tipo de suavizado %s media móvil no válido!".,EnumToString(l_array1_select_method[i_array1])); } } if(!NoErrorsFlag) { return(false); }
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado ¡Cree su propio robot de trading en 6 pasos!:
Si no sabe como se construyen las clases trade y le asustan las palabras "Programación Orientada a Objetos", este artículo es para usted. De hecho, no necesita conocer más detalles para escribir su propio módulo de señales de trading. Tan solo siga algunas reglas simples. Todo lo demás será realizado por el MQL5 Wizard y podrá disponer de un robot de trading ¡listo para ser usado!
Autor: MetaQuotes Software Corp.