Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Devuelve el número del ticket asignado a la orden por el servidor de comercio o -1 si falla. Para obtener información adicional sobre los errores, hay que llamar a la función GetLastError().
Notas:
En la apertura de una orden de mercado (OP_SELL u OP_BUY), sólo se pueden utilizar como precio de apertura los últimos precios de la Oferta (para vender) o de la Demanda (para comprar). Si la operación se realiza con un valor diferente al actual, se debe utilizar la función MarketInfo() con el parámetro MODE_BID o MODE_ASK para obtener las últimas cotizaciones de este valor. No se puede aplicar el precio calculado o no normalizado. Si no ha habido el precio abierto solicitado en el hilo de precios o no se ha normalizado según la cantidad de dígitos después del punto decimal, se generará el error 129 (ERR_INVALID_PRICE). Si el precio abierto solicitado está totalmente desfasado, se generará el error 138 (ERR_REQUOTE) independientemente del parámetro de deslizamiento. Si el precio solicitado está fuera de fecha, pero presente en el hilo, la posición se abrirá al precio actual y sólo si el precio actual se encuentra dentro del rango deprecio+deslizamiento.
Los niveles de StopLoss y TakeProfit no pueden estar demasiado cerca del mercado. La distancia mínima de los niveles de parada en puntos se puede obtener utilizando la función MarketInfo() con el parámetro MODE_STOPLEVEL. En el caso de niveles de parada erróneos o no normalizados, se generará el error 130 (ERR_INVALID_STOPS).
Al colocar una orden pendiente, el precio abierto no puede estar demasiado cerca del mercado. La distancia mínima del precio pendiente del mercado actual en puntos puede obtenerse utilizando la función MarketInfo() con el parámetro MODE_STOPLEVEL. En caso de que el precio de apertura de una orden pendiente sea falso, se generará el error 130 (ERR_INVALID_STOPS).
La aplicación del tiempo de expiración de la orden pendiente puede ser desactivada en algunos servidores comerciales. En este caso, cuando se especifica un valor distinto de cero en el parámetro decaducidad, se genera el error 147 (ERR_TRADE_EXPIRATION_DENIED).
En algunos servidores comerciales, la cantidad total de órdenes abiertas y pendientes puede estar limitada. Si se supera este límite, no se abrirá ninguna posición nueva (o no se colocará ninguna orden pendiente) y el servidor de operaciones devolverá el error 148 (ERR_TRADE_TOO_MANY_ORDERS).
//--- parámetros de entrada
extern int period=16;
extern int porog=50;
extern double lot=1;
extern inttern k=5000;
extern bool pl=true;
//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{
double bs=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,0,0),Digits);
double ss=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,1,0),Digits);
double tpb=NormalizarDoble(bs+(bs-ss),Dígitos);
double tps=NormalizarDoble(ss-(bs-ss),Dígitos);
if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5);
si(pl==false)lotes=lote;
if(PedidosTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//Abrir límite de compra.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//Abrir límite de venta.
}
if(OrdersTotal()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//selecciona la orden más cercana.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
}
if(PedidosTotal()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);}
if(OrderType()==OP_SELL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}
if(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);}
if(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}
}
return(0);
}
//+------------------------------------------------------------------+