[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 423
![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
entonces la función OrderLots.
No puedo entender esta función, por favor ayuda con un ejemplo :)
dice "La orden debe ser preseleccionada usando la función OrderSelect()" ¿cómo selecciono todas las órdenes abiertas de la misma dirección?
No puedo entender esta función, por favor ayúdeme con un ejemplo:)
dice "La orden debe ser preseleccionada con OrderSelect()" ¿cómo selecciono todas las órdenes abiertas de la misma dirección?
No hay manera. Sólo en un bucle recorriendo uno a uno con OrderSelect().
¿Puedes decirme si hay un script de stop loss que deba ser insertado en este EA?
¿Cómo puedo reducir el número de decimales sin redondear?
(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11 y 0.10
¿Cómo puedo reducir el número de decimales sin redondear?
(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11 y 0.10
Hay un millón de maneras, como utilizar funciones de cadena para encontrar la ubicación de un punto y truncar la cadena un carácter más allá. Pero si hay una solución lista para usar, para qué inventar problemas.
por favor, sugiera una solución ya hecha:)
por favor, dígame si esto es una solución ya hecha:)
Si no se redondea, sólo este :
Reshetov с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее
Por favor, ayúdenme a entender lo que está mal:
//+------------------------------------------------------------------+
//| AAAA.mq4 ||
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#enlace de la propiedad ""
extern string TimeStart = "00:00"; //hora de inicio del periodo de control
extern string TimeEnd = "00:00"; //fecha de finalización del periodo de control.
extern double LOT = 0.01; // lote
extern int Magia = 777; // magia
double marga,Lot,SL,TP; // variables de margen, lote, stop loss y take profit introducidas
int Total,Orders,tipOrders,TradeDey; // variables tipo, tipo de orden, día de negociación.
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| función del Asesor Experto |
//+---------------------------------------------------------------------------------------------------------------------------------------+
int start() // Función de inicialización start
{
datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // parámetros de inicio //
datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd, ":00")); // Parámetros finales//
Total=0; // Si no hay pedidos
for(int i=1; i<=TotalPedidos(); i++) // Bucle de pedidos
{
if (OrderSelect(i-1,SELECT_BY_POS)==false) // Si no hay órdenes de mercado
{
si //Si:
{
int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // busca la barra al principio del periodo de comprobación en m1
int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //busca el final de la barra del periodo de referencia en m1
double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //el valor más alto del precio dentro del periodo
double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //el valor más bajo del precio dentro del periodo
}
if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Ajustes de visualización de gráficos
{
ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0);
ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);
ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);
}
if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //condiciones para colocar una orden pendiente de COMPRA
NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);
si (Oferta>Precio_máximo)
Comentario("La orden pendiente no puede ser colocada en la oferta");
if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //condiciones para colocar la orden pendiente de VENTA
NormalizarDoble(Pedido + Precio_máximo-Precio_mínimo,Dígitos), "UPDD",Magia,Azul);
si (Oferta<Precio_máximo)
Comentario("La orden pendiente no puede ser colocada en VENTA");
}
volver;
}
No se puede compilar. De lo contrario, debería colocar dos órdenes pendientes hacia arriba y hacia abajo del rango.
Por favor, ayúdenme a entender lo que está mal:
//+------------------------------------------------------------------+
//| AAAA.mq4 ||
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#enlace de la propiedad ""
extern string TimeStart = "00:00"; //hora de inicio del periodo de control
extern string TimeEnd = "00:00"; //fecha de finalización del periodo de control.
extern double LOT = 0.01; // lote
extern int Magia = 777; // magia
double marga,Lot,SL,TP; // variables de margen, lote, stop loss y take profit introducidas
int Total,Orders,tipOrders,TradeDey; // variables tipo, tipo de orden, día de negociación.
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| función del Asesor Experto |
//+---------------------------------------------------------------------------------------------------------------------------------------+
int start() // Función de inicialización start
{
datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // parámetros de inicio //
datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year(),",TimeEnd, ":00")); // Parámetros finales//
Total=0; // Si no hay pedidos
for(int i=1; i<=TotalPedidos(); i++) // Bucle de pedidos
{
if (OrderSelect(i-1,SELECT_BY_POS)==false) // Si no hay órdenes de mercado
{
si //Si: - eliminar
{
int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // busca la barra al principio del periodo de comprobación en m1
int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //busca el final de barra del periodo de comprobación en m1
double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //el valor más alto del precio dentro del periodo
double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //el valor más bajo del precio dentro del periodo
}
if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Ajustes de visualización de gráficos
{
ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0);
ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);
ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);
}
if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //condiciones para colocar una orden pendiente de COMPRA - las órdenes pendientes no pueden ser colocadas por Ask o Bid
NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);
si (Oferta>Precio_máximo)
Comentario("La orden pendiente no puede ser colocada en la oferta");
if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //condiciones para colocar la orden pendiente de VENTA - igual
NormalizarDoble(Pedido + Precio_máximo-Precio_mínimo,Dígitos), "UPDD",Magia,Azul);
if (Bid<Max_Price) - aquí debe haber un error
Comentario("La orden pendiente no puede ser colocada en VENTA");
}
} - añadir
volver;
}
No puedo compilarlo. En realidad, debería colocar dos órdenes pendientes arriba y abajo del rango.