Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 489

 

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%");

 
Georgy Sled:

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

   ObjectDelete("FiboLevels"); //------Новый уровень
   WindowRedraw();

   if (iOpen(Symbol(),60,1)>iClose(Symbol(),60,1))
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
   }
   else
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
   }

también puede ser más corto ... ver mi archivo

Archivos adjuntos:
Proba.mq4  3 kb
 
Artyom Trishkin:

Por favor, introduzca el código correctamente.


Es aún más claro:


¡Gracias por explicar cómo pegar el código correctamente)))) ayudó) Por favor, revise y ayúdeme a escribir el código correctamente, estaré muy agradecido! (Hoy tengo un televisor Samsung hervido que aprendí a desinstalar, pero no puedo con este código (((((
 
void fOrderOpen() {...
    if( iTime(Symbol(),PERIOD_M1,0)) {
     if((fMarketOrders(OP_BUY))) { ....{
int irvbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,NULL,12345,0,0); 

Chicos, ¿por qué mis órdenes se abren con cada tick? ¿Puedes decirme cómo concentrarme en la barra?

 
Rustam Bikbulatov:

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.

 
Konstantin Nikitin:

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?

 
Rustam Bikbulatov: Chicos, ¿por qué mis órdenes se abren con cada tick? ¿Algún consejo para concentrarse en la barra?

La pregunta se ha formulado muchas veces y, en consecuencia, se ha respondido muchas veces.Utilizando una búsqueda, por ejemplo, aquí

 
STARIJ:

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?

 
Kot:

¡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?

Definitivamente ayudarán. Y no hay tales especialistas en este hilo.