Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 70

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
Esto es lo que tengo. Por favor, dime qué pasa. Gracias de antemano.
¡Hola!
Escribo aquí ya que parece que no hay nadie en mq4.
¿Puede decirme qué estoy haciendo mal? La opción 2 no funciona.
Hola, Por favor, ayúdame con la escritura de una función en MT4. Conozco el saldo de mi cuenta, sé cuántas operaciones se abrirán (por ejemplo, 9), conozco el riesgo (por ejemplo, 3% del AccountBalance), necesito calcular un lote para la primera operación, si cada lote siguiente se duplicará y todas las operaciones se solaparán entre sí.
Esto es lo que tengo. Por favor, dime qué pasa. Gracias de antemano.
¡Hola!
Escribo aquí, porque parece que no hay nadie en mq4.
¿Puede decirme qué estoy haciendo mal? La opción 2 no funciona.
Resaltado: debería haber una asignación - "=" y tienes una comparación - "==".
Hola a todos.
Estoy aprendiendo a escribir robots en mt4, he decidido empezar con las opciones binarias . Estoy escribiendo un EA sencillo, pero el compilador genera muchas advertencias, no puedo entenderlo (
Ayuda: "Oh MQL4 Guru" =))))))
Gracias de antemano)
Aquí está el código para el EA.
//+------------------------------------------------------------------+
//|Bolinger_Bands_traider.mq4 |
//|Copyright 2017, Penrov Nikolay |
//|vk.com/buzamonolit |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Petrov Nikolay"
#enlace de propiedad "vk.com/buzamonolit"
#versión de la propiedad "1.00"
#propiedad estricta
//+------------------------------------------------------------------+
//| función de inicialización de expertos|
//+------------------------------------------------------------------+
extern int Bolinger_Bands = 20; // Periodo de la Banda Bollinger
extern double Delta = 0.0003; // A qué distancia abrir la orden
string Symb; // Nombre del instrumento financiero.
int Total; // Número de pedidos
//+------------------------------------------------------------------+
//| función de inicialización de expertos|
//+------------------------------------------------------------------+
int init()
{
//----
Initialize_Objects(0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto|
//+------------------------------------------------------------------+
int inicio()
{
//----
doble precio = Oferta;
double CurrBol_High = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_UPPER, 0);
double CurrBol_Low = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_LOWER, 0);
double PrecioBol_Alto = precio - CurrBol_Alto;
double PrecioBol_Bajo = precio - CurrBol_Bajo;
datetime NextClose = Time[0] + Period()*60*2;
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1;
int err;
// Recuento de pedidos
Symb=Símbolo();// Nombre de la aleta.símbolo(); // símbolo(); // símbolo(); // icono de pedido(); // símbolo().
Total=0;// Número de pedidos
for(int i=1; i<=TotalPedidos(); i++) // Bucle de pedidos
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Si hay un siguiente
{// Análisis de pedidos:
if (OrderSymbol()!=Symb)continue; // No es nuestro instrumento financiero
si (OrderType()>1)// Tenemos una orden pendiente
{
Alert("Orden pendiente detectada. El Asesor Experto no está funcionando;)
return(0);// Exit()
}
Total++;// Mercado de contadores. pedir
si (Total>1)// No más de un pedido
{
Alert("Varias órdenes de mercado. El Asesor Experto no funciona");
return(0);// Exit()
}
}
}
ObjectSetText("Obj_Label", "TF" + Period() + ", " + DoubleToStr(price, 5) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label2", "Órdenes:" + Total + ", delta " + DoubleToStr(Delta,5) + ", distancia a MA:" + DoubleToStr(PriceBol_High, 5), 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label3", "Pedidos: " + Total + ", Delta " + DoubleToStr(Delta,5) + ", distancia a MA:" + DoubleToStr(PriceBol_Low, 5), 10, "Arial", DarkGreen );
// análisis de precios y apertura de órdenes
if ((MathAbs(PriceBol_Low) < Delta) && (price > CurrBol_Low) && (Open[0] > CurrBol_Low+Delta) && (Total<1))
{
if (OrderSend(Symbol(), OP_BUY, 1.00,Bid , 3, 0, 0, "BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Green) >0) Print ("Opened OK");
si no
{
err=GetLastError();
Print("error(",err,"));
return(0);
}
Print ("CALL @ " + precio + " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp en " + MinutesToNextClose);
}
if ((MathAbs(PriceBol_High) < Delta) && (price < CurrBol_High) && (Open[0] < CurrBol_High-Delta) && (Total<1))
{
if (OrderSend(Symbol(), OP_SELL, 1.00,Bid , 3, 0, 0, "BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Red) > 0) Print ("Opened OK");
si no
{
err=GetLastError();
Print("error(",err,"));
return(0);
}
Print ("PUT @ " + precio + " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp en " + MinutesToNextClose);
}
//----
return(0);
}
//+------------------------------------------------------------------+
int Inicializar_Objetos(int Ganar) // Fie de usuario
{// .creación de objetos
ObjectCreate("Obj_Label",OBJ_LABEL, Win, 0,0); // creación del objeto
ObjectSet("Obj_Label", OBJPROP_CORNER, 0); // Vincular a una esquina
ObjectSet("Obj_Label", OBJPROP_XDISTANCE, 13); // Coordenada X
si (Win==0)
ObjectSet("Obj_Label",OBJPROP_YDISTANCE, 15);//Coordenada Y
si no
ObjectSet("Obj_Label",OBJPROP_YDISTANCE,15);//Coordenada Y
ObjectCreate("Obj_Label2",OBJ_LABEL,Win, 0,0); // Creación del objeto
ObjectSet("Obj_Label2",OBJPROP_CORNER, 0); // Vinculación a una esquina
ObjectSet("Obj_Label2", OBJPROP_XDISTANCE, 13); // Coordenada X
si (Win==0)
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);//Coordenada Y
si no
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);//Coordenada Y
ObjectCreate("Obj_Label3",OBJ_LABEL, Win, 0,0); // Crear objeto
ObjectSet("Obj_Label3",OBJPROP_CORNER, 0); // Vinculación a una esquina
ObjectSet("Obj_Label3", OBJPROP_XDISTANCE, 13); // Coordenada X
si (Win==0)
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);//Coordenada Y
si no
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);//Coordenada Y
return(0);// Salida del usuario.función
}
Aquí están las advertencias. No puedo entender qué es lo que no le gusta(
posible pérdida de datos debido a la conversión de tipo Bolinger_Bands_traider.mq4 51 24
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 76 35
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 76 227
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 77 43
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 78 43
conversión implícita de 'cadena' a 'número' Bolinger_Bands_traider.mq4 85 71
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 93 23
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 93 91
conversión implícita de 'cadena' a 'número' Bolinger_Bands_traider.mq4 99 72
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 107 23
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 107 91
0 error(es), 11 advertencia(s), tiempo de compilación: 204 mseg 1 12
Primaria. El error es la funciónGetLots(). Toda la función.
Tal vez puedas decirme cómo escribirlo correctamente. Quería calcular usando el bucle por fuerza bruta desde el lote máximo.
Tal vez puedas decirme cómo escribirlo correctamente. Quería calcular mediante un bucle probando desde el lote máximo.
¿Dónde está la lógica? Se fija el lote máximo permitido para la primera orden y se aumenta para cada orden sucesiva. ¿No te parece, por decirlo suavemente, poco sensato?
Además, disminuye el lote de la primera orden en el bucle utilizando algún método totalmente incomprensible, mientras que los lotes de las otras órdenes que se "calcularon" antes permanecen sin cambios, y estos valores no van más allá de los límites de esta función. ¿Qué hacen entonces?
Por no hablar de que el bucle de incremento no puede ser un número real, tiene que ser un contador, un entero. Pero se establece el valor del lote como un contador y se le resta uno en cada iteración. Esto es un error importante, muy grave.
Aclara primero la lógica en tu mente y luego intenta implementarla en tu código.
Pero aquí están las advertencias. No puedo entender lo que no le gusta(
posible pérdida de datos debido a la conversión de tipo Bolinger_Bands_traider.mq4 51 24
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 76 35
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 76 227
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 77 43
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 78 43
conversión implícita de 'cadena' a 'número' Bolinger_Bands_traider.mq4 85 71
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 93 23
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 93 91
conversión implícita de 'cadena' a 'número' Bolinger_Bands_traider.mq4 99 72
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 107 23
conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 107 91
0 error(es), 11 advertencia(s), tiempo de compilación: 204 mseg 1 12
Sale una línea con el número 51, ya que no hay cuenta aquí para entender el error"posible pérdida de datos debido a la conversión de tipo Bolinger_Bands_traider.mq4 51 24"
El resto: "conversión implícita de 'número' a 'cadena' Bolinger_Bands_traider.mq4 107 91
traducir los valores numéricos en una cadena de texto donde creamos el objeto - una cadena de texto, por ejemplo
período()
debe ser
DoubleToString(Period(),0)
traducir los valores numéricos a una cadena de texto donde creamos un objeto de cadena de texto, por ejemplo
período()
debe ser
DoubleToString(Period(),0)
¿Desde cuándo el punto es un tipo Doble?