Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 489
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
Hola. Quiero escribir un EA para MT4, una de sus tareas es dibujar líneas de Fibo, en M1, en una hora. Es decir, a las 11.00 horas debería trazar líneas en el intervalo de 10.00 a 10.59, centrándose en los máximos y mínimos. Probado diferentes métodos, publicado lo que fue el último. Probablemente puedas acortar el código para dibujar los niveles.El problema es que no dibuja las líneas en el área dada.
int timemin=TimeMinute(Time[59]==0);
int timehour=TimeHour(Time[1] && TimeMinute(Time[0]));
int timemin1=TimeMinute(Time[0]==0);
int timehour1=TimeHour(Time[1] && TimeMinute(Time[59]))
int max=iHighest(Symbol(),1,MODE_HIGH,60,timehour);
int min=iLowest(Symbol(),1,MODE_LOW,60,timehour);
double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));
double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------Nuevo nivel
si (barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
}
if (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
}
double f1=ObjectGet("FiboLevels",OBJPROP_PRICE1); //Selecciona el primer precio
double f2=ObjectGet("FiboLevels",OBJPROP_PRICE2); //Selecciona el segundo precio y traza
double Diff=f2-f1;
string a11=DoubleToStr(f2-Diff*0.0,Digits);
string a12=DoubleToStr(f2-Diff*0.236,Digits);
string a13=DoubleToStr(f2-Diff*0.382,Digits);
string a14=DoubleToStr(f2-Diff*0.50,Digits);
string a15=DoubleToStr(f2-Diff*0.618,Digits);
string a16=DoubleToStr(f2-Diff*1.0,Digits);
bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6);
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0);
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236);
bool a4=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.382);
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50);
bool a6=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+4,0.618);
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+5,1.0);
bool a111=ObjectSetFiboDescription("FiboLevels",0, "0.0%");
bool a122=ObjectSetFiboDescription("FiboLevels",1, "23.6%");
bool a133=ObjectSetFiboDescription("FiboLevels",2, "38.2%";
bool a144=ObjectSetFiboDescription("FiboLevels",3, "50.0%");
bool a155=ObjectSetFiboDescription("FiboLevels",4, "61.8%");
bool a166=ObjectSetFiboDescription("FiboLevels",5, "100.0%");
Hola. Quiero escribir un EA para MT4, una de sus tareas es dibujar líneas de Fibo, en M1, en una hora. Es decir, a las 11.00 horas debería trazar líneas en el intervalo de 10.00 a 10.59, centrándose en los máximos y mínimos. Probado diferentes métodos, publicado lo que fue el último. Probablemente puedas acortar el código para dibujar los niveles.El problema es que no dibuja líneas en un área determinada.
double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------Nuevo nivel
si (barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max];
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
}
si (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
}
¿esto es más corto? bool barup=... WindowRedraw(); seguirá ejecutándose - sacado de if
también puede ser más corto ... ver mi archivo
Por favor, introduzca el código correctamente.
Es aún más claro:
Chicos, ¿por qué mis órdenes se abren con cada tick? ¿Puedes decirme cómo concentrarme en la barra?
Chicos, ¿por qué mis órdenes se abren con cada tick? ¿Puedes decirme cómo concentrarme en la barra?
De acuerdo con las condiciones descritas en el ATS, da el visto bueno a la apertura para que se abra.
Hay muchas soluciones en este caso. Todo depende de lo que sea más conveniente para usted.
Podemos determinar que la siguiente orden se abra sólo si el precio se ha alejado de la última en N puntos. Puede solicitar la apertura de no más de una orden en 1 barra. Tal, tal, tal y tal.
Anota las condiciones que necesitas y aplícalas a tus pruebas.
Según las condiciones descritas en el ATS, abre la orden.
Hay muchas soluciones en este caso. Todo depende de lo que sea más conveniente para usted.
Podemos determinar que la siguiente orden se abra sólo si el precio se ha alejado de la última en N puntos. Puede solicitar la apertura de no más de una orden en 1 barra. Tal, tal, tal y tal.
Anota las condiciones que necesitas y aplícalas a tus pruebas.
En cambiosi( iTime(Symbol(),PERIOD_M1,0)){ ¿Qué debo escribir para abrir una orden en una barra?
La pregunta se ha formulado muchas veces y, en consecuencia, se ha respondido muchas veces.Utilizando una búsqueda, por ejemplo, aquí
La pregunta se ha formulado muchas veces y, en consecuencia, se ha respondido muchas veces.Utilizando una búsqueda, por ejemplo, aquí
Gracias.
¡Buenas tardes!
Tengo un EA que hace ciertos cálculos. Utiliza diferentes operaciones matemáticas, matrices, bucles. Guarda el resultado en un archivo. Tiene que empezar todo desde el principio después de haber realizado todas las acciones. Ha hecho todos los cálculos una vez y luego se cuelga por segunda vez sin realizar ninguna acción. ¿Puede indicar si es necesario poner a cero las variables, borrar las matrices o alguna otra cosa antes de iniciar un nuevo cálculo?
¡Buenas tardes!
Tengo un EA que hace ciertos cálculos. Utiliza diferentes operaciones matemáticas, matrices, bucles. Guarda el resultado en un archivo. Tiene que empezar todo desde el principio después de haber realizado todas las acciones. Ha hecho todos los cálculos una vez y luego se cuelga por segunda vez sin ninguna otra acción. ¿Puede indicar si es necesario poner a cero las variables, borrar las matrices o alguna otra cosa antes de iniciar un nuevo cálculo?