[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 425

 
sss2019:

¿Hay alguna forma de hacer que no se abra más de una orden en la barra actual? Es decir, necesito que se abra una orden en el fractal actual, pero no más que eso, y en el siguiente, etc.

¿Se puede hacer de alguna manera?

Sí, es posible. Sólo hay una doble pregunta. Si abrimos en la barra actual, es la barra cero. Y el fractal se forma al menos en el segundo.

Guarde el tiempo de la barra del fractal en la variable y, si ya se ha abierto una posición para este fractal con dicho tiempo, no abra más posiciones con él. Tan pronto como se forme un nuevo fractal, su tiempo de barra cambiará y entonces abrirá una nueva posición y, después de su apertura exitosa, almacenará el nuevo tiempo del fractal en la variable.

 

No quiero ser intrusivo. Ayuda con mi pregunta. No se puede cerrar un pedido. Me da un error con la entrada equivocada. El problema está en el ticket, ¿cómo lo llamo y cierro el pedido? ¿Cómo puedo cerrar un ticket? Gracias.

Estoy escribiendo mi EA de manera que la venta se abra después de la compra y viceversa, pero por alguna razón sólo la primera orden se cierra y las otras no.


OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,NULL,12345,CLR_Blue);

Comete un error, se equivoca de billete. El problema está en el ticket, ¿cómo lo llamo y cierro el pedido? Gracias.

 

Hola! En la ventana en la que se adjunta el EA, ¿cómo puedo mostrar el marcador rojo del precio de apertura de esa orden, en la barra en la que se abrió?

Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);
 
kolaider:

No quiero ser intrusivo. Ayuda con mi pregunta. No se puede cerrar un pedido. Me da un error con la entrada equivocada. El problema está en el ticket, ¿cómo lo llamo y cierro el pedido? ¿Cómo puedo cerrar un ticket? Gracias.

Estoy escribiendo mi EA de manera que la venta se abra después de la compra y viceversa, pero por alguna razón sólo la primera orden se cierra y las otras no.


OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,NULL,12345,CLR_Blue);

Tengo un error con un billete equivocado. El problema está en el ticket, ¿cómo lo llamo y cierro el pedido? Gracias.

OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,NULL,12345,0,CLR_Blue);

Le falta una opción de caducidad (resaltada en rojo)

¿Quiere abrir una posición de venta cuando cierra una posición de compra y viceversa?

En la lista de órdenes cerradas, busque la última orden cerrada, vea su tipo y abra la contraria.

Para cerrar una orden, primero debe seleccionarla, tomar su ticket y cerrarla.

 
kolyango:

¿Cómo puedo mostrar el marcador rojo del precio de apertura de esa orden, en la ventana donde se adjunta el EA, como la orden de mercado de VENTA abierta?


bool ObjectCreate( string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0,double price3=0)

Crea un objeto con el nombre, el tipo y las coordenadas iniciales especificadas en la subventana especificada del gráfico. El número de coordenadas asociadas al objeto puede ser de 1 a 3 según el tipo. La función devuelve TRUE si el objeto se crea con éxito, en caso contrario FALSE. Para obtener más información sobre el error, llame a la función GetLastError().
Los objetos de tipo OBJ_LABEL ignoran las coordenadas. Utilice ObjectSet() para establecer las propiedades OBJPROP_XDISTANCE y OBJPROP_YDISTANCE.
Notas: La numeración de las subventanas del gráfico (si el gráfico tiene subventanas con indicadores) empieza por 1. La subventana del gráfico principal siempre está presente y tiene el índice 0.
Las coordenadas deben pasarse por pares: hora y precio. Por ejemplo, el objeto OBJ_VLINE sólo necesita el tiempo, pero también hay que pasar el precio (cualquier valor).
Parámetros:
nombre - Nombre único del objeto.
tipo - Tipo de objeto. Puede ser cualquier tipo de objeto.
ventana - Índice de la ventana a la que se añadirá el objeto. El índice de la ventana debe ser mayor o igual a 0 y menor que WindowsTotal().
tiempo1 - Hora de la primera coordenada.
precio1 - Precio de la primera coordenada.
tiempo2 - Hora segunda coordenada.
precio2 - Precio de la segunda coordenada.
tiempo3 - Hora de la tercera coordenada.
precio3 - Precio de la tercera coordenada.
Ejemplo:
 ¡// nuevo objeto Texto if(!ObjectCreate("objeto_texto", OBJ_TEXT, 0, D'2004.02.20 12:30', 1.0045)) { Print("error: ¡no se puede crear objeto_texto! ¡code #",GetLastError()); return(0); } // nuevo objeto TextLabel if(!ObjectCreate("label_object", OBJ_LABEL, 0, 0)) { Print("error: ¡no se puede crear label_object! code #",GetLastError()); return(0); } ObjectSet("label_object", OBJPROP_XDISTANCE, 200); ObjectSet("label_object", OBJPROP_YDISTANCE, 100);
 

artmedia70:


Puedes hacerlo. Sólo que la pregunta es doble. Si se abre en la barra actual, es barra cero. Y el fractal se forma al menos en la segunda barra.

Guarde el tiempo de barra del fractal en la variable y, si ese fractal ya tiene una posición abierta, no abra más posiciones con él. En cuanto se forme un nuevo fractal, su tiempo de barra cambiará y abrirá una nueva posición y, tras su apertura con éxito, almacenará el nuevo tiempo del fractal en la variable.


¿Cómo puedo guardarlo, en una variable global? He creado una variable simple, pero parece que no se guarda y las órdenes se siguen abriendo. Ver

int start()
  {
  double MyPoint = Point;
  if(Digits == 3 || Digits == 5)
    {
    MyPoint = Point * 10;
    }
  
   double upperfractal;
   int upperi;
//----
   for(upperi=1;upperi<Bars;upperi++)
     {
     upperfractal=iFractals(Symbol(), Period(), MODE_UPPER, upperi); if (upperfractal>0) break;
     }
     
   datetime opentime;
     
   if(upperfractal>0 && upperi > 2 && opentime != Time[upperi])
     {
     if(OrderSend(Symbol(),OP_BUYSTOP,Lot,upperfractal + 10 * Point,3,0,0,"comment",1354453,0,Green) == true)
       {
       opentime = Time[upperi];
       }else
       {
       Alert("",GetLastError());
       }
     }

//----
   return(0);
  }

Variable opentime

Me gustaría pedirle a alguien que me ayude por favor.

Incluso he intentado hacer la variable global, pero sigue abriendo muchas operaciones, como si la variable se reseteara cada vez.

datetime opentime = 0;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double MyPoint = Point;
  if(Digits == 3 || Digits == 5)
    {
    MyPoint = Point * 10;
    }
  
   double upperfractal;
   int upperi;
//----
   for(upperi=1;upperi<Bars;upperi++)
     {
     upperfractal=iFractals(Symbol(), Period(), MODE_UPPER, upperi); if (upperfractal>0) break;
     }
     

     
   if(upperfractal>0 && upperi > 2 && opentime != Time[upperi])
     {
     if(OrderSend(Symbol(),OP_BUYSTOP,Lot,upperfractal + 10 * Point,3,0,0,"comment",1354453,0,Green) == true)
       {
       opentime = Time[upperi];
       }else
       {
       Alert("",GetLastError());
       }
     }

//----
   return(0);
 
T-G:

Por favor, aconsejen cómo solucionar un problema trivial: tengo un agujero en el historial de euros de junio de 2011 y luego de septiembre y se ha perdido un poco de septiembre

en la carpeta \terminal\history\downloads\EURUSD hay estos archivos

EURUSD_2011_06_81625bcefc91bf488a04d5a1dae0c93f
EURUSD_2011_09_2557787db3eb2fe87073c783f21cdd66

EURUSD_2011_10_15793a4a4f9d001b78a82e248872bc3b

He probado varios terminales de diferentes brokers, incluyendo el MQ nativo. También lo he probado en diferentes máquinas con XP y Win7. Intenté borrar symbols.raw y symgroups.raw y descargarlos de nuevo - no ayudó.


Me pregunto si es crucial para usted tener una historia de este periodo en particular.
 
nadya:
Me pregunto si es crucial para usted tener una historia de este periodo en particular.
¿Qué te parece? Ya que lo pregunto, ¡sí!
 
T-G:
¿Qué te parece? Ya que lo pregunto, ¡sí!
Pues bien, pida una historia a la gente del almacén.
 
sss2019:


¿Cómo lo guardo en una variable global? Hice una variable regular, pero parece que no se guarda y los pedidos se siguen abriendo. Aquí está

Variable opentime

Estoy tratando de hacer que esta variable sea global.

Incluso he intentado hacer la variable global, pero sigue abriendo muchas operaciones, como si la variable se reseteara cada vez.

OrderSend devuelve un valor entero, no es una función booleana, tenga cuidado
Razón de la queja: