[¡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 918

 
¿Cómo puedo determinar qué tipo de orden es de venta o de compra, abierta y para qué lote?
 
Maniac:

Hola a todos. Mi Asesor Experto tiene el siguiente código (ver abajo). Entiendo que la señal para abrir una posición se toma de los valores de dos índices. ¿Cómo hacer que la orden se abra en base a un solo indicador, por ejemplo el CCI? Muchas gracias.

En lugar de llamar a getSignal() para determinar el criterio de apertura, llame a checkCCI() o a checkMomentum(). Ambas funciones devuelven las mismas señales que getSignal(), es decir, 0, 1 y -1.

La función getSignal() sólo compara dos valores devueltos por checkCCI() y checkMomentum() y si coinciden, devuelve 1 (para comprar) o -1 (para vender), o 0 si no se hace nada...

 
_SS_:
¿Cómo se averigua qué tipo de orden es de venta o de compra, y para qué lote?

Para enumerar las órdenes del terminal, compruebe el magik de la orden seleccionada, su tipo y su lote.

El magik se utiliza para identificar si la orden pertenece a su EA o no, y el tipo y el lote son los valores que se buscan.

Si busca la última orden abierta, compare su tiempo de apertura con el de otras órdenes y, si su tiempo es el más largo, entonces es ésta.

Si busca un billete, debe seleccionarlo mediante el billete, pero tenga en cuenta que la selección se realiza a partir de dos matrices: las órdenes de mercado y las cerradas.

Para saber si la orden es una orden de mercado, debe comprobar la hora de su cierre y si es superior a cero (y sólo entonces), entonces la orden ya está cerrada, de lo contrario - es una orden de mercado.

 
¿cómo se saca al mago?
 
forex-k:
Debería funcionar. ¿La cara sonriente está sonriendo?


extern double StopLoss=50.0;
extern double TakeProfit=50.0;
extern double Lots=1;
extern int total;

int start()
{
double Price_1, Price_2, min, max;
RefreshRates();
Price_1=Bid;
Price_2=Ask;

min=iLow(NULL,0,2);
max=iHigh(NULL,0,2);
total=OrdersTotal();
if(total<1)
{

if(Price_1>max)
OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Bid-StopLoss*Point,Ask+TakeProfit*Point, "My order#",16384,0,Green);

if(Price_2<min)
OrderSend(Symbol(),OP_SELL,Lots,Bid,5,Ask+StopLoss*Point,Bid-TakeProfit*Point, "My order#",16384,0,Green);
}
}
return(0);

Sí funciona, la carita sonriente está todo el tiempo, pero no funciona, las posiciones no se abren.

 
rustein:

Ayuda, el EA no cierra todas las órdenes al alcanzar un beneficio

Las órdenes abiertas y pendientes se cierran con diferentes funciones


void CloseAllOrders()
{
for (int i = 0; i < OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrdersTotal() > 1 && OrderSymbol() == Symbol() && AccountProfit() >= AccountBalance()*AllProfit/100)
{
if((OrderType()==OP_BUY)) OrderClose(OrderTicket(), OrderLots(),Bid,0);
if((OrderType()==OP_SELL)) OrderClose(OrderTicket(), OrderLots(),Ask,0);
if((OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT|| OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT))OrderDelete(OrderTicket());
if(UseSound == true)
{
PlaySound(SuccesSound);
}
}
}
}
}
 
forex-k:

las órdenes abiertas y pendientes se cierran con funciones diferentes


Gracias :)
 

¿Pueden decirme cómo eliminar los objetos creados por el indicador en la ventana cuando el propio indicador se elimina del gráfico?

 
Maniac:

Hola a todos. El EA tiene el siguiente código (ver abajo). Según tengo entendido, la señal para abrir una posición se toma de los indicadores de dos índices. ¿Cómo podemos hacer que las órdenes se abran en base a un solo indicador, por ejemplo el CCI? Muchas gracias.


int getSignal() { 
   int CCI = checkCCI();
   return (CCI);
}
int checkCCI() {
   double CCI = iCCI(NULL, 0, 60, PRICE_TYPICAL, 1);
   Print("CCI: ", CCI);
   if (CCI > 0.0) return (1);
   if (CCI < 0.0) return (-1);
   return (0);
} 
 

Buenas tardes a todos. Necesito una función para buscar máximos / mínimos en N número de barras. Digamos que hai/baja para 55 bares. Lo he visto en alguna parte, pero no lo encuentro.

Razón de la queja: