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

 
tommy27:
Gracias, lo hice con Close y como aconsejaste:
pero el resultado se actualiza sólo cuando aparece una nueva barra y quiero ver y registrar los cambios en cada tick.

Si el EA no está en bucle, el resultado cambiará en cada tick
 

Gracias a todos, por separado todo funciona:

//+------------------------------------------------------------------+
//|                                                        Delta.mq4 |
//|                                                          tommy27 |
//|                                                  tommy27@mail.ru |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27@mail.ru"

double 
       StartPrice1,
       Delta1,
       Price00;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   Price00 = 5000;
StartPrice1 =  iClose(0,0,0);
//StartPrice1 = Close[0];
Delta1 = MathAbs (Price00 - StartPrice1);
//if (Delta1>1000) Delta1=0;
Comment (Delta1);
Print ("Raznica= ",Delta1);
//----
   return(0);
  }
//+------------------------------------------------------------------+

Pero el código principal sólo cuenta con el cierre de la barra, lo miraré.

 
PapaYozh:

Si el EA no está en bucle, el resultado cambiará en cada tick
Gracias.
 
Hay dos opciones en OrderSelect():
MODE_TRADES - la orden se selecciona entre las órdenes abiertas y pendientes,
MODE_HISTORY - la orden se selecciona entre las órdenes cerradas y eliminadas.

- ¿Estoy en lo cierto al entender que MODE_TRADES se utiliza sólo con OrdersTotal(), y MODE_HISTORY - sólo con OrdersHistoryTotal()?
- Si es así, ¿por qué son necesarios?
Gracias.
 
chief2000:
Hay dos opciones en OrderSelect():
MODE_TRADES - la orden se selecciona entre las órdenes abiertas y pendientes,
MODE_HISTORY - la orden se selecciona entre las órdenes cerradas y eliminadas.

- ¿Estoy en lo cierto al entender que MODE_TRADES se utiliza sólo con OrdersTotal(), y MODE_HISTORY - sólo con OrdersHistoryTotal()?
- Si es así, ¿por qué son necesarios?
Gracias.


Lo has entendido bien.

Su segunda pregunta no está clara. Si selecciona una orden por su posición, necesita saber el número total de órdenes

 
PapaYozh:


Lo has entendido bien.

Su segunda pregunta no está clara. Si selecciona una orden por su posición, necesita saber el número total de órdenes

Ambos parámetros (MODE_TRADES y MODE_HISTORY) sólo se utilizan en el caso de SELECT_BY_PO, pero podría eliminarlos por completo (utilizar el que viene por defecto en MT4 - para OrdersTotal() y OrdersHistoryTotal() respectivamente).
No es una cuestión de principios, lo principal para mí era la respuesta a la primera pregunta.
Gracias.
 

alsu, abre la compra si el precio ha subido más de 20 pips en los últimos 10 minutos; abre la venta si el precio ha caído más de 20 pips en los últimos 10 minutos.

Y si no es un problema: Abra la compra si el precio actual es algo más que el máximo de la barra anterior, abra la venta si el precio actual es algo menos que el mínimo de la barra anterior.

P.D. El código para abrir la compra y la venta ya está en el tablero, así que no necesito describirlos... Estoy más interesado en cómo escribir correctamente las condiciones de apertura descritas anteriormente...

 
oDin48:

alsu, abre la compra si el precio ha subido más de 20 pips en los últimos 10 minutos; abre la venta si el precio ha caído más de 20 pips en los últimos 10 minutos.

¿Abro exactamente en el momento en que se cruza el nivel o después de 10 minutos)?


Y si no es mucha molestia: abrir compra si el precio actual es un poco más alto que el alto de la barra anterior, abrir venta si el precio actual es un poco más bajo que el bajo de la barra anterior.

extern int level = 10; //в пунктах

....
int start()
{
...

   RefreshRates();

   if(Bid>High[1]+level*Point)
   {
      //BUY
   }

   if(Bid<Low[1]-level*Point)
   {
      //SELL
   }
...
}
 

alsu, exactamente al cruzar, comprueba la hora y si cae dentro del rango de tiempo haz una operación.

Gracias. Voy a probarlo ahora.

 
oDin48:

alsu, exactamente cuando se cruza, comprobar el tiempo y si cae en el rango de tiempo hacer un comercio.

En esta variante, hay que recordar el historial de ticks de los últimos 10 minutos... el código no es trivial