Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 256
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
En mi viejo portátil con procesador i3 todavía tengo WinXP 32 bit, no soportado por MT5. Recientemente he aumentado la memoria hasta 6 Gb, me gustaría instalar un sistema operativo de 64 bits que ejecute MT4 y MT5. Qué es preferible - Win7 o Win8.1
El 7 está más cerca de mí. La oficina tiene un 8, un 10 y un 7. Los terminales del 7 son más estables. Por razones desconocidas, los probadores del 7 son más rápidos en los ordenadores débiles. 8ka no es muy transitorio en absoluto. Es lo que más recursos consume. 10 requiere más recursos para sí mismo.
Mi antiguo portátil con procesador i3 aún tenía instalado WinXP 32 bits, no soportado por MT5. Recientemente he aumentado la memoria hasta 6 Gb, me gustaría instalar un sistema operativo de 64 bits que soporte MT4 y MT5. ¿Qué es preferible, Win7 o Win8.1?
Ve a la página web del fabricante de tu portátil y mira para qué sistema operativo máximo están los controladores oficiales y ese será tu sistema operativo preferido. Si los drivers son para Win 8.1 puedes probar con Win 10. Si los controladores terminan en Win 7 entonces no hay muchas opciones.
Buenas tardes, pueden ayudar por favor.
Necesito añadir un take profit a este EA y mostrar parámetros para cambiar cuando el EA se ejecuta.
hay dos advertencias valor de retorno de 'OrderClose' debe ser revisado también por favor corregir
extern double Lots = 0.1;
extern double RiesgoMáximo = 0,3;
extern double DecreaseFactor = 100;
doble st1,st2;
//+------------------------------------------------------------------+
//| Calcular las posiciones abiertas |
//+------------------------------------------------------------------+
int CalcularPedidosActualizados(símbolo de cadena)
{
int compras=0,ventas=0;
//----
for(int i=0;i<TotalPedidos();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) vende++;
}
}
//---- volumen de pedidos de devolución
if(compras>0) return(compras);
Si no es así, return(-sells);
}
//+------------------------------------------------------------------+
//| Calcular el tamaño óptimo del lote |
//+------------------------------------------------------------------+
double LotsOptimized()
{
doble lote=Lotes;
int orders=HistoryTotal(); // total de pedidos del historial
int losses=0; // número de órdenes de pérdidas sin pausa
//---- seleccione el tamaño del lote
lote=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3);
//---- calcule el número de órdenes de pérdidas sin interrupción
si(Factor de disminución>0)
{
for(int i=órdenes-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("¡Error en el historial!"); break; }
if(OrderSymbol()!=Symbol() | OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) pérdidas++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- devolver el tamaño del lote
if(lot<0.1) lot=0.1;
devolución(lote);
}
//+------------------------------------------------------------------+
//| Comprueba las condiciones de las órdenes abiertas |
//+------------------------------------------------------------------+
void CheckForOpen()
{
int res;
if(Volumen[0]>1) return;
//---- comprar -----------------------
si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]<Open[1])&&(Close[0]<Close[1])
//
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0,",0,0,Blue);
volver;
}
//---- vender ------------------------
si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if((Open[0]>Open[1])&&(Close[0]>Close[1]))
{
res=Enviar Orden(Símbolo(),OP_Venta,LotesOptimizados(),Oferta,3,15,0,",0,0,Rojo);
volver;
}
}
//------------Закрытие позиций----------------------------------------
void CheckForClose2()
{
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
If(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);
//CheckForOpen();
}
//
//+------------------------------------------------------------------+
//| Comprueba las condiciones de cierre de la orden |
//+------------------------------------------------------------------+
void CheckForClose1()
{
if(Volumen[0]>1) return;
//comprobar la pérdida
if ((AccountProfit()<0)&&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk)))
{
CheckForClose2();
Print("pérdida", AccountProfit());
}/**/
//---- comprobar el tipo de orden
if(OrderType()==OP_BUY)
{
si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]>Open[1])&&(Close[0]>Close[1]))
CheckForClose2();
}
if(OrderType()==OP_SELL)
{
si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]<Open[1])&&(Close[0]<Close[1]))
CheckForClose2();
}
}
//+------------------------------------------------------------------+
//| Función de inicio |
//+------------------------------------------------------------------+
void start()
{
//---- calcular las órdenes abiertas por el símbolo actual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose1();
//---
}
//+-----------------------------------------------+
He añadido el cálculo de SL y TP, pero sería bueno añadir su comprobación. Puede leer cómo hacerlo en el artículohttps://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position.
Su advertencia no es crítica. El resultado de OrderClose es simplemente ignorado, de ahí la advertencia. Puede, por ejemplo, hacer que la función CheckForClose2 devuelva el resultado de OrderClose. O puedes dejarlo como está.
Otra cosa que noté fue que los nombres de las funciones CheckForClose2,CheckForOpen, etc. eran extraños .Y los tienes realizando operaciones comerciales.
Hola a todos. Puede alguien ayudarme a editar el EA. Tengo que eliminar la función de apertura de órdenes para que el EA no abra órdenes por sí mismo, sino que sólo funcione con órdenes abiertas manualmente. Muchas gracias de antemano.
Elimine la función de apertura de pedidos y ponga la magia a 0. El robot recogerá los pedidos abiertos manualmente y los seguirá. Si queremos que el robot siga sólo órdenes individuales, y no todas seguidas, entonces haga la entrada en Compra y Venta, por ejemplo, pulsando el botón correspondiente que el robot deberá crear y procesar en el evento OnChartEvent CHARTEVENT_OBJECT_CLICK de cada una de ellas. La magia en este caso debe ser mayor que 0 para trabajar sólo con sus propias órdenes.
https://www.mql5.com/ru/forum/131859/page9#434297
isTradeTimeString()
isTradeTimeInt()
Hola.
Un fallo de este tipo... ¡Estoy probando uno! Experto en 3 ordenadores. En 2 de ellos funcionan con precisión, mientras que en uno de ellos siempre tengo algún tipo de error en los cálculos - en general no calcula correctamente el stop loss o el disparo falso.
El hardware no es nuevo, pero tampoco viejo.
¿Alguien se ha encontrado con algo así?
El hardware no es nuevo, pero tampoco viejo.
¿Alguien ha tenido problemas con esto?
¿Las tres están conectadas al mismo servidor de corredores/comerciantes? (Es decir, ¿es la misma historia?) Si no es así, ese es el primer lugar donde hay que buscar.