Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 176
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Lectura, pero nunca habría adivinado abrir el archivo antes del bucle )
Tal vez no lo haya leído con atención.)Hay un Asesor Experto, que se guía por la Pinbar al operar. El robot funciona correctamente en las divisas y es completamente imprevisible en los CFD.
¿Pueden decirme cómo puede ocurrir esto?
He escrito un robot que se basa en Pinbar cuando el comercio. El robot funciona correctamente en las divisas y es completamente imprevisible en los CFD.
¿Pueden decirme cómo puede ocurrir esto?
Esta es la función de definición de Pinbar
Cuando la introduzco en el Asesor Experto, la función funciona bien (es decir, el Asesor Experto establece acuerdos en la siguiente barra después de la barra correspondiente a las condiciones de la función) para los pares de divisas. Sin embargo, las operaciones con CFD se abren en todas partes.
¿Cuál es la diferencia entre los CFD y los pares de divisas para esta función?
Esta es la función de definición de Pinbar
Cuando la introduzco en el Asesor Experto, la función funciona bien (es decir, el Asesor Experto establece acuerdos en la siguiente barra después de la barra correspondiente a las condiciones de la función) para los pares de divisas. Sin embargo, las operaciones con CFD se abren en todas partes.
¿Cuál es la diferencia entre los CFD y los pares de divisas para esta función?
En primer lugar, sustituya todos los && por {} para que cada una de las condiciones esté en su propio bloque - entonces puede en cada bloque desenrollar el resultado de la prueba - ver en el registro qué valores obtiene.
Gracias, he seguido los consejos y he entendido en qué me estaba equivocando. Porque mi EA se movía en 5 dígitos y el CFD es de sólo 2 dígitos y esperaba que el EA reaccionara a 50 pips como mínimo y obtuve la reacción de 5 pips. Lo he estropeado.
Por favor, ayúdenme con este aspecto.
Existe esa parte en el código:
MathAbs(Close1-Open1)/(High1-Low1)
A veces ocurre que High1=Low1. El comprobador genera entonces el error crítico diciendo que no puede dividir por cero.
¿Cómo se puede evitar?
Gracias, he seguido los consejos y he entendido en qué me estaba equivocando. Porque mi EA se movía en 5 dígitos y el CFD es de sólo 2 dígitos y esperaba que el EA reaccionara a 50 pips como mínimo y obtuve la reacción de 5 pips. Lo he estropeado.
Por favor, ayúdenme con este aspecto.
Existe esa parte en el código:
A veces sucede que High1=Low1. El comprobador genera entonces el error crítico diciendo que no puede dividir por cero.
¿Cómo se puede evitar?
Puedes hacerlo sin pensar:
Hola, he encontrado un problema durante la compilación:
void OnTick()
{
double minprice=999999, mp, maxprice=-999999;
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
si (mp < precio mínimo)
precio mínimo = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
si (mp > maxprice)
maxprice = mp;
}
Comment("Precio mínimo: " + DoubleToString(minprice, 5) + "\n "+
"Precio máximo: " + DoubleToString(maxprice, 5));
}
El código fuente contiene funciones que el compilador jura por iLow y iHigh y la variable Simbol() allí en el modo de cadena, pero resuelve otro problema en el ejemplo. ¿Qué tengo que arreglar en el código anterior? Estoy atascado y no puedo compilar el bucle para comprobarlo.
DEL LIBRO DE TEXTO
Si desea obtener el valor correspondiente a la barra incompleta actual, entonces
puede utilizar la primera forma de la llamada, especificando start_pos=0 y count=1.
Ejemplo:
#property copyright "2009, MetaQuotes Software Corp."
#enlace de propiedad "https://www.mql5.com"
#versión de la propiedad "1.00"
#property description "Ejemplo de salida de los valores High[i] y Low[i]"
#descripción de la propiedad "para barras elegidas al azar"
doble Alto[],Bajo[];
//+------------------------------------------------------------------+
//| Obtenga el mínimo para un número de barra dado |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
doble bajo=0;
ArraySetAsSeries(low,true);
int copied=CopyLow(símbolo,timeframe,0,Bars(símbolo,timeframe),Low);
if(copiado>0 && índice<copiado) low=Low[índice];
retorno(bajo);
}
//+------------------------------------------------------------------+
//| Obtener el máximo para el número de barra dado |
//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
doble alto=0;
ArraySetAsSeries(high,true);
int copied=CopyHigh(símbolo,timeframe,0,Bars(símbolo,timeframe),High);
if(copied>0 && index<copied) high=High[index];
retorno(alto);
}
//+------------------------------------------------------------------+
Hola, he encontrado un problema durante la compilación:
void OnTick()
{
double minprice=999999, mp, maxprice=-999999;
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
si (mp < precio mínimo)
precio mínimo = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
si (mp > maxprice)
maxprice = mp;
}
Comment("Precio mínimo: " + DoubleToString(minprice, 5) + "\n "+
"Precio máximo: " + DoubleToString(maxprice, 5))
}
El código fuente contiene funciones que el compilador jura por iLow y iHigh b variable Simbol() está en modo de cadena allí, pero resuelve otro problema en el ejemplo. ¿Qué tengo que arreglar en el código anterior? Estoy atascado y no puedo compilar el bucle para comprobarlo.
DEL LIBRO DE TEXTO
Si desea obtener el valor correspondiente a la barra incompleta actual, entonces
puede utilizar la primera forma de la llamada especificando start_pos=0 y count=1.
Ejemplo:
#property copyright "2009, MetaQuotes Software Corp."
#enlace de propiedad "https://www.mql5.com"
#versión de la propiedad "1.00"
#property description "Ejemplo de salida de los valores High[i] y Low[i]"
#descripción de la propiedad "para barras elegidas al azar"
doble Alto[],Bajo[];
//+------------------------------------------------------------------+
//| Obtenga el mínimo para un número de barra dado |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
doble bajo=0;
ArraySetAsSeries(low,true);
int copied=CopyLow(símbolo,timeframe,0,Bars(símbolo,timeframe),Low);
if(copiado>0 && índice<copiado) low=Low[índice];
retorno(bajo);
}
//+------------------------------------------------------------------+
//| Obtener el máximo para el número de barra dado |
//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
doble alto=0;
ArraySetAsSeries(high,true);
int copied=CopyHigh(símbolo,timeframe,0,Bars(símbolo,timeframe),High);
if(copied>0 && index<copied) high=High[index];
retorno(alto);
}
//+------------------------------------------------------------------+
hay un error en esta palabraSimbol() deberías escribir Symbol() o _Symbol
Tiene un error en esta palabraSimbol() - Debería escribirse Symbol() o _Symbol
Gracias, el error en Simbol está corregido al escribir correctamente Símbolo. Tengo algo mal con las funciones iLow y iHigh.
¿Ladiferencia en % entre MQL4 y MQL5? De lo contrario, tendré que rascarme la cabeza cada vez que repase los videotutoriales de MQL4.