[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 719

 
Infinity:


Pero por alguna razón termino con un error EURUSD,: zero divide - este error parece decir que hay un 0 en la variable en alguna parte, probablemente durante una operación de tipo división. ¿Estoy tratando de implementarlo correctamente?


¿En el probador o en la demo?

En el probador el punto en otros símbolos será 0

 
Hola, ¿podríais decirme si MQL4 permite seleccionar todos los tickets de una cuenta (abiertos, cerrados, pendientes) durante un periodo de tiempo determinado?
 

Estimados señores, por favor ayúdenme a resolver este problema, si es que se puede resolver en estas condiciones.

Existe, por ejemplo, un Asesor Experto de este tipo (su PATRÓN, para ser exactos), ya que el principio en sí mismo es interesante.

Así que, aquí está:

extern double Lot = 0.1;

extern int TP = 100;

extern int SL = 100;

extern int ХХХ = 100; //como diferentesvariables

extern int ХХХ = 100; //como diferentesvariables

extern int ХХХ = 100; //como variables diferentes

// ¿qué órdenes están permitidas? :

extern int LET = 3; // 1 - sólo vender, 2 - sólo comprar, 3 - ambos tipos de órdenes

int inicio()

//calcular los indicadores:

int KUDA;

EL INDICADOR Y SUS CONDICIONES DE FUNCIONAMIENTO SE INSERTAN

// Comprobar las condiciones para determinar la dirección de la orden según los datos del indicador:

if ( ХХХХХХХХХХХХХХХХХ ) // condición de indicador de sal

KUDA = 1; // significa que vamos a vender

if ( ХХХХХХХХХХХХХХХХХХХ) // condición del indicador para la compra

KUDA = 2; // significa que vamos a comprar

// hacer pedidos :

if(OrdersTotal()>0) return (0); // permite que el EA funcione con un solo pedido realizado

QUÉ CÓDIGO INSERTAR AQUÍ, PARA QUE CUANDO UN COMERCIANTE CIERRE UNA VENTA, PUEDA COLOCAR SÓLO UNA ORDEN DE COMPRA,

¿y cuando un perdedor cierra una compra sólo se le permite colocar una venta?

¡¡¡Y ASÍ SUCESIVAMENTE!!!

{

if (LET == 1 || LET == 3) // según la variable sólo funciona para la venta (ignora la compra) o para ambas

if (KUDA == 1 && ticketsell < 1) // set sell

{

ESTE ES EL CÓDIGO PARA COLOCAR ÓRDENES DE VENTA

}

if (LET == 2 || LET == 3) // según la variable sólo funciona para comprar (vender ignora) o para ambos tipos de órdenes

if (KUDA == 2 && ticketbuy < 1) // exponer comprar

{

ESTE ES EL CÓDIGO PARA COLOCAR ÓRDENES DE COMPRA

}

}

return(0);

}

Gracias.

 
ToLik_SRGV:

Así que, en orden.

Si sólo quieres los últimos datos, ¿para qué guardar los anteriores? (la "pre-escritura" ocurre con una combinación de los modos FILE_READ|FILE_WRITE).
Por lo tanto, es más lógico utilizar el modo FILE_CSV|FILE_WRITE, en el que se borran los registros anteriores antes de escribir los nuevos datos.

Comienza a escribir las 4 variables en el archivo.

Lo principal es recordar el orden en el que están escritas las variables, porque es el orden en el que las leeremos.

Comienza a leer los datos en las variables desde el archivo.

Utilizando la función FileReadNumber(), leemos en secuencia, número por número, en el orden en que lo hemos escrito.
Eso es todo, nada complicado :)

Lo he entendido y lo he aplicado: estoy muy contento con él.
 

Ayúdenme a resolver este problema de forma programada:

1. Primero, encontramos el primer fractal hacia arriba - esto es simple y claro;

2. Entonces tenemos que encontrar un fractal más alto que el primero - esto ya es un problema :(

Ok, si es el fractal anterior. Pero, ¿y si es el anterior? ¿O hace tres o cuatro fractales?

¿Cómo puedo hacer una función para buscar esos fractales?

Adjunto una foto por si acaso.

 
no se adjunta :(
inténtalo de nuevo
 
Shuba:

Ayúdenme a resolver este problema de forma programada:

1. Primero, encontramos el primer fractal hacia arriba - esto es simple y claro;

2. Entonces tenemos que encontrar un fractal más alto que el primero - esto ya es un problema :(

Ok, si es el fractal anterior. Pero, ¿y si es el anterior? ¿O hace tres o cuatro fractales?

¿Cómo puedo hacer una función para buscar esos fractales?

Adjunto una foto por si acaso.



Y si no hay tal fractal en absoluto
 
Vinin:

Y si no hay tal fractal en absoluto
Pues bien, si, por ejemplo, hace 300 compases no existe tal fractal, entonces esperamos a que aparezca un nuevo fractal y sólo entonces reanudamos la búsqueda
 
Shuba:

Ayúdenme a resolver este problema de forma programada:

1. Primero, encontramos el primer fractal hacia arriba - esto es simple y claro;

2. Entonces tenemos que encontrar un fractal más alto que el primero - esto ya es un problema :(

Ok, si es el fractal anterior. Pero, ¿y si es el anterior? ¿O tres o cuatro fractales antes?

¿Cómo formular la búsqueda de esos fractales como una función?

Por si acaso, adjunto una foto...

Recuerda el valor del primer fractal, luego busca un fractal en el bucle que tenga un valor mayor/menor que el valor memorizado. Si se encuentra un fractal de este tipo dentro del bucle, guárdalo en una variable. Ahora tienes dos fractales: el primero almacenado inicialmente y el segundo encontrado en el bucle. No tiene por qué ser anterior o preexistente, pero se corresponderá con el criterio de búsqueda.
Si no se puede encontrar en el bucle, hay que esperar a que aparezca un nuevo fractal (en lugar del primero recordado). En cuanto aparece el nuevo fractal, volvemos a buscar el segundo fractal necesario en el bucle (lo más probable es que sea el primero recordado al principio). Así encontramos dos fractales necesarios y evitamos la situación que acertadamente insinúa Víctor en el post anterior. Aunque teóricamente es posible que el segundo fractal nunca se forme... Un apocalipsis, por ejemplo... :)
 
Shuba:
Así, si, por ejemplo, no hay ningún fractal a 300 compases, se espera a que aparezca un nuevo fractal antes de reanudar la búsqueda
Ya veo, ya estás llegando a la decisión por ti mismo