como hago para que un ea solo me abra una operacion

Espacio para compartir y debatir sobre Asesores Expertos de MetaTrader

como hago para que un ea solo me abra una operacion

Notapor pataboli » 12 May 2017, 02:14

buenas, soy relativamente nuevo en esto de programar EA, estoy en etapa de aprendizaje, y para eso estoy con un EA de prueba, no me interesa que sea rentable aun porque solo estoy aprendiendo las funciones y operadores, el tema es así arme un EA que tras unas condiciones opere en buy o sell, el problema es que cuando se cumple la condición me abre muchas operaciones una tras otra, y yo busco que solo me abra una operación y hasta que no se cierre esa operación ya sea por stoploss o takeprofit no abra otra.
pataboli
 
Mensajes: 2
Registrado: 12 May 2017, 02:08
Karma: 0

Re: como hago para que un ea solo me abra una operacion

Notapor Xakalin » 12 May 2017, 09:25

Pon esto antes de tu codigo para ver si abre etc..
Código: Seleccionar todo
  if(TotalOrdersCount()==0){

tochaco
}


y después de la funcion start, tick o la que tengas para que te vea todo
Código: Seleccionar todo

int TotalOrdersCount()
{
  int result=0;
  for(int i=0;i<OrdersTotal();i++)
  {
     OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
     if (OrderMagicNumber()==MagicNumber) result++;

   }
  return (result);
}

asi te mirará que sea este EA el que ha abierto alguna (y podrás abrir tu una manual, o otro ea podrá abrir otra siempre que el magic number sea distinto)
las abiertas manualmente su magic number es 0
Imagen
Avatar de Usuario
Xakalin
 
Mensajes: 291
Registrado: 05 Jul 2016, 17:57
Karma: 4

Re: como hago para que un ea solo me abra una operacion

Notapor pataboli » 12 May 2017, 14:14

hola, muchas gracias por responder! te dejo mi codigo para ver si entendi como colocar el totalorderscount

Código: Seleccionar todo
//+------------------------------------------------------------------+
//|                                                     stoploss.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

input int    P=3;
input int Magic=23;
input double Lots=0.01;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Print ("ha iniciado el experto");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if (TotalOrdersCount()==0){
   if (CondicionCompra())Compra();
   if (CondicionVenta())Venta();
  }
  }
//+------------------------------------------------------------------+
bool CondicionCompra()
{
 if (Close[3]>Open[3] && Close[2]>Open[2]&& Close[1]<Open[1])
 {
 return true;
 }
 return false;
}
bool CondicionVenta()
{
 if (Close[3]<Open[3] && Close[2]<Open[2]&& Close[1]>Open[1])
 {
 return true;
 }
 return false;
}
int TotalOrdersCount()
{
  int result=0;
  for(int i=0;i<OrdersTotal();i++)
  {
     OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
     if (OrderMagicNumber()==Magic) result++;

   }
  return (result);
}
void Compra()
{
 OrderSend (Symbol(),OP_SELL, Lots, Bid, 30,Ask+30*Point,Bid-60*Point,Magic,clrNONE);
}
void Venta()
{
 OrderSend (Symbol(),OP_BUY, Lots, Ask, 30,Bid-30*Point,Ask+60*Point,Magic,clrNONE);
}


podrias marcarme donde esta mi error, ya que me sigue abriendo muchas operaciones a la vez , desde ya muchas gracias!
pataboli
 
Mensajes: 2
Registrado: 12 May 2017, 02:08
Karma: 0

Re: como hago para que un ea solo me abra una operacion

Notapor Xakalin » 13 May 2017, 12:27

cambia

OrderSend (Symbol(),OP_BUY, Lots, Ask, 30,Bid-30*Point,Ask+60*Point,Magic,clrNONE);

por
OrderSend (Symbol(),OP_BUY, Lots, Ask, 30,Bid-30*Point,Ask+60*Point,'abrir orden',Magic,clrNONE);
Imagen
Avatar de Usuario
Xakalin
 
Mensajes: 291
Registrado: 05 Jul 2016, 17:57
Karma: 4


Volver a Expert Advisors

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado