Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 255
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
¿Cómo se calcula el tp?
Especifico en la variable doble tp=50;
Especifico en la variable doble tp=50;
ahora escribe
2021.12.04 13:56:09.509 TestGenerator: error de datos no coincidentes (el valor alto 1.13110 en 2021.12.03 23:45 no se alcanza desde el marco temporal más bajo, el precio alto 1.13104 no coincide)
póngalo por un minuto... funciona...
pero el nivel de parada es diferente -
1 2021.09.16 05:59 vender 1 0.01 1.18190 51.18192 1.18140 0.00 10000.00
ahora escribe
2021.12.04 13:56:09.509 TestGenerator: error de datos no coincidentes (el valor alto 1.13110 en 2021.12.03 23:45 no se alcanza desde el marco temporal más bajo, el precio alto 1.13104 no coincide)
Todas las normas están en línea, así que compruébelo usted mismo.
Todas las normas están en línea, así que compruébelo usted mismo.
Gracias.
Buenas noches señores, ¿podrían indicar por qué el asesor da un error al abrir un segundo pedido?
El texto del propio consejero
//+----------------------Параметры-----------------------------------+
input int TakeProfit = 100; // Beneficio en pips
input int StopLoss = 50; // Pérdida en pips
input double Lote = 0.01; // Lote inicial
input double Multilot = 1.95; // multiplicador para el lote inicial
input int Deslizamiento =30; // Deslizamiento
input int MagicNumber = 333 ; // Número único
//+------------------------------------------------------------------+
//| Función de inicialización de expertos |
//+------------------------------------------------------------------+
doble tp=0;
doble sl=0;
int OnInit()
{
tp=NormalizeDouble(TakeProfit*Punto(),Dígitos());
sl=NormalizeDouble(StopLoss*Point(),Digits());
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Función de garrapata experta ||
//+------------------------------------------------------------------+
void OnTick()
{
//--el bucle comprueba si hay órdenes abiertas cuando se activa el Asesor Experto y las calcula.
int buy=0; //Número de órdenes de COMPRA
int sell=0; //Número de órdenes de VENTA
for(int i = OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
{
if(OrderType()==OP_BUY)
comprar++;
if(OrderType()==OP_SELL)
vender++;
}
//--el bucle recibe los datos de la última orden cerrada cuando se activa el EA
int type=-1; //el tipo de una orden cerrada
int history_close_orders=0; //número de pedidos cerrados
double lot=0; /Lote de la última orden cerrada
double profit=0; /Beneficio al que se cerró la última orden
datetime time=0; //Hora de cierre del último pedido
for(int i = OrdersHistoryTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
if(OrderCloseTime()>time)
{
history_close_orders++;
time = OrderCloseTime();//la última hora de cierre de la orden
lot= OrderLots();/Lote de la última orden cerrada
type=Tipo de orden();// Tipo de la última orden cerrada
profit=OrderProfit()*OrderSwap()*OrderCommission();/Beneficio de la última orden cerrada
}
//calcular el lote con el que trabajará el EA
double Lots_Work=0;// lote de trabajo
if(history_close_orders==0 || profit>0)// si no hay órdenes cerradas o la última orden cerró sobre el beneficio
Lots_Work=Lote;// el lote de trabajo es igual al lote inicial
if(history_close_orders>0 && profit<0) // si la última orden cerró en rojo
Lots_Work=1;// el lote de trabajo será igual al lote del último pedido multiplicado por el multiplicador
//abrir la primera orden de compra
if(buy==0 || profit>0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "Expert Advisor Test fair",MagicNumber,0,clrGreen);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
si no
Print("El envío del pedido se ha completado con éxito");
}
// Apertura de la segunda y siguientes órdenes de compra
if(buy==0 && type==OP_BUY && profit<0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "EA Test fair",MagicNumber,0,clrGreen);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
si no
Print("El envío del pedido se ha completado con éxito");
}
// Apertura de la primera orden de venta
if(vender==0 || beneficio>0)
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "EA Test fair",MagicNumber,0,clrRed);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
si no
Print("El envío del pedido se ha completado con éxito");
}
// Apertura de la segunda y siguientes órdenes de compra
if(sell==0 && (type==OP_SELL && profit<0))
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "Expert Advisor Test fair",MagicNumber,0,clrRed);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
si no
Print("El envío del pedido se ha completado con éxito");
}
//--Modificar la orden añadiendo Take Profit y Stop Loss
for(int i = OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits(),NormalizeDouble(OrderOpenPrice()+tp,Digits(),0,clrGreen))
Print("¡OrdenModificación OK!");
si no
Print("OrderModify BUY falló #", GetLastError());
}
if(OrderType()==OP_SELL)
{
if(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits(),NormalizeDouble(OrderOpenPrice()-tp,Digits(),0,clrRed))
Print("¡OrdenModificación OK!");
si no
Print("OrderModify SELL failed #", GetLastError());
}
}
}
//+------------------------------------------------------------------+
Mi viejo portátil con procesador i3 aún tenía instalado WinXP 32 bits, sin soporte para MT5. Recientemente he aumentado la memoria a 6GB, quiero instalar un sistema operativo de 64 bits que ejecute MT4 y MT5. ¿Qué es preferible, Win7 o Win8.1?
10
10