Ayuda Programando metatrader

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
theblade
Mensajes: 8
Registrado: 10 Feb 2008 17:46

Ayuda Programando metatrader

Mensaje por theblade »

Buenas,

Alguien me puede dar el codigo para poder insertar ordenes limitadas cada "x" pips??

lo he intentado y no tengo forma de que se pongan... solo consigo una pero no como yo quiero..

Amm y bueno esto ya seria perfecto, si alguien sabe de algun experto que mire cuales de las ordenes anteriores se han cerrado y las abra otra vez (pero solo las que se han cerrado...)

Muchas gracias por vuestra ayuda!!
theblade
Mensajes: 8
Registrado: 10 Feb 2008 17:46

Re: Ayuda Programando metatrader

Mensaje por theblade »

Al final lo conseguí!!

Mira que era sencillisimo....

Código: Seleccionar todo

double a;

int start()
  {
  

   for(int i=1;i<=5;i++)
   {  OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask + a+ 0.0020,3,0, Ask+ a +0.0030);
         
a = a + 0.0020;
}
}
Asi se crean 5 ordenes limites...

ahora solo me falta un EA que cada vez que se cierre alguna de las ordenes BUYSTOP me cree otra vez esa misma orden...

Si me podeis ayudar se agredeceria
theblade
Mensajes: 8
Registrado: 10 Feb 2008 17:46

Re: Ayuda Programando metatrader

Mensaje por theblade »

ya lo tengo solucionado!!

era tambien muy facil.... era con la funcion

Código: Seleccionar todo

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)
alguien sabe donde puedo encontrar en Castellano (si puede ser) para que sirve cada función predefinida?? es que voy tan lento porque me tengo que entretener en buscar por Internet cada cosa que quiero hacer...

Gracias, aunque me estoy respondiendo yo solito!! xD
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Re: Ayuda Programando metatrader

Mensaje por elcctrro »

lo que yo tengo es esto y por supuesto la web de metatrader: http://www.mql4.com/

Un saludo.
Adjuntos
mql4 manual.pdf
(840.64 KiB) Descargado 254 veces
Introduccion_a_MQL4.pdf
(1.98 MiB) Descargado 216 veces
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Re: Ayuda Programando metatrader

Mensaje por elcctrro »

este es el segundo libro, un saludo.
Adjuntos
021 - libro_2.rar
(1.31 MiB) Descargado 252 veces

theblade
Mensajes: 8
Registrado: 10 Feb 2008 17:46

Re: Ayuda Programando metatrader

Mensaje por theblade »

Muchas gracias, le echare un vistazo
theblade
Mensajes: 8
Registrado: 10 Feb 2008 17:46

Re: Ayuda Programando metatrader

Mensaje por theblade »

Buenas,

otra vez me he quedado atrancado en un problemita... yo creo k es sencillo pero no me sale, si alguien me puede decir donde me equivoco...

voy a explicar un poco el codigo antes de pegarlo...

lo que quiero hacer es abrir las ordenes cerradas y ponerlas en pendiente... es decir recorrer la lista de historico y compararla con la lista trades, el que no este pues se crea... ahora mismo lo hago buscando en la lista la ultima orden cerrada y creandola pero claro si hay un movimiento muy fuerte de repente se cierran 3 operaciones y solo se abriria la ultima... x eso ahora estoy intentando hacer que revise toda la lista...

aqui va el codigo para recorrer las dos listas...

Código: Seleccionar todo


int n, m, precioapertura, precioapertura2, dni, crearorden, comentario, comentario2, dia;
bool encontrado = false;

//----------------------------------------------------------+
int start()
{
dia = TimeDayOfYear(TimeCurrent())-(TimeDayOfWeek(TimeCurrent())+1);
   for(n=OrdersHistoryTotal(); n > 0; n--)
   {
   if ( OrderCloseTime() >= dia)
   {
     m = OrdersTotal();
	  while (( m > 0) && (!encontrado))
	  {
	     OrderSelect ( m, SELECT_BY_POS, MODE_TRADES);
	     precioapertura2 = OrderOpenPrice();
	     if ( OrderComment() == "compra")
	     {
	        comentario = 1;
	     }
	     else if (OrderComment() == "venta")
	     {
	        comentario = 2;
	     }
	     else
	     {
	        comentario = 0;
	     }
	     
	     OrderSelect ( n, SELECT_BY_POS, MODE_HISTORY);
	     precioapertura = OrderOpenPrice();
	     
	     dni = OrderTicket();
	     if ( OrderComment() == "compra[tp]")
	     {
	        comentario2 = 1;
	     }
	     else if (OrderComment() == "venta[tp]")
	     {
	        comentario2 = 2;
	     }
	     else
	     {
	        comentario2 = 0;
	     }
		  				  
				
		  if ((precioapertura == precioapertura2) && (comentario == comentario2) && (comentario == 0))
		  {
				crearorden = 1;
				encontrado = true;
		  }
		  else
		  {
		      crearorden = 0;
		      
		  }
				
		  m--;
	  }
	  if (crearorden == 0)
		  {
		      OrderSelect(dni,SELECT_BY_TICKET);
		      
				OrderSend(OrderSymbol(),OP_BUYLIMIT,0.01,OrderOpenPrice(),3,0,OrderTakeProfit(),"compra");
				OrderSend(OrderSymbol(),OP_SELLLIMIT,0.01,OrderOpenPrice(),3,0,OrderTakeProfit(),"venta");
				
   	  }		
	}
	}	
}
lo primero que no me cuadra es al seleccionar la orden con select ticket.... en la parte del experto no me aparece la orden... y no se por que ocurre...

las ordenes habria que cambiarlas dependiendo si estan encima o debajo del precio... xo es solo una prueba.

Perdonad por el tocho pero intento que el que me pueda ayudar le quede claro.

GRACIAS!!
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Re: Ayuda Programando metatrader

Mensaje por elcctrro »

if( crearorden==0 )
{
OrderSelect(dni,SELECT_BY_TICKET);
// Aqui a hay que determinar si OrderOpenPrice() de la orden pendiente es mayor o menor que el Bid o el Ask actual.
// porque de ello de pende que la orden "compra" deba ser lanzada como BUYLIMIT o BUYSTOP igual para la "venta"
OrderSend(OrderSymbol(),OP_BUYLIMIT,0.01,,3,0,OrderTakeProfit(),"compra");
OrderSend(OrderSymbol(),OP_SELLLIMIT,0.01,OrderOpenPrice(),3,0,OrderTakeProfit(),"venta");
}

Un saludo.
theblade
Mensajes: 8
Registrado: 10 Feb 2008 17:46

Re: Ayuda Programando metatrader

Mensaje por theblade »

elcctrro escribió:if( crearorden==0 )
{
OrderSelect(dni,SELECT_BY_TICKET);
// Aqui a hay que determinar si OrderOpenPrice() de la orden pendiente es mayor o menor que el Bid o el Ask actual.
// porque de ello de pende que la orden "compra" deba ser lanzada como BUYLIMIT o BUYSTOP igual para la "venta"
OrderSend(OrderSymbol(),OP_BUYLIMIT,0.01,,3,0,OrderTakeProfit(),"compra");
OrderSend(OrderSymbol(),OP_SELLLIMIT,0.01,OrderOpenPrice(),3,0,OrderTakeProfit(),"venta");
}

Un saludo.

Gracias por tu respuesta, eso lo se, por eso he puesto que es una prueba lo de lanzar las ordenes... lo que me ocurre esk el bucle no coge las ordenes cerradas... y no se xq, coge algunas y otras no...
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Re: Ayuda Programando metatrader

Mensaje por elcctrro »

Si estas probando con la Prueba de estrategia" es puede ser normal, ami con expertos que se que funcionan correctamente alguans veces me abre las ordenes y otras no, dicen que es porque simulan los fallos de la operativa normal... pruebalo corriendo en tiempo real sobre la demo.

Un saludo.
theblade
Mensajes: 8
Registrado: 10 Feb 2008 17:46

Re: Ayuda Programando metatrader

Mensaje por theblade »

elcctrro escribió:Si estas probando con la Prueba de estrategia" es puede ser normal, ami con expertos que se que funcionan correctamente alguans veces me abre las ordenes y otras no, dicen que es porque simulan los fallos de la operativa normal... pruebalo corriendo en tiempo real sobre la demo.

Un saludo.
Estoy utilizando el tiempo real con demo en el experto... creo k tiene k ser algun problema en el código, algo estoy haciendo mal pero no lo veo :(
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Re: Ayuda Programando metatrader

Mensaje por elcctrro »

Si me pasas el expert por email te lo miro.
Un saludo
Avatar de Usuario
morph3us
Mensajes: 6
Registrado: 06 Abr 2010 13:46

Re: Ayuda Programando metatrader

Mensaje por morph3us »

guau gracias por la información, muy útil.


Un saludo
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”