Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1257
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
No es necesario escribir este código en OnInit, sino en OnTick().
No, no puedes.
No puedo explicar cómo funcionan las plantillas de .... es así - hasta que no se llama a dicha función, el compilador no sabe nada de su existencia (a menudo, incluso no hay errores de compilación si no hay llamada)
entonces se llama a dicha función de plantilla y el compilador rellena los tipos necesarios y sólo entonces comprueba que todo funcione correctamente
y luego haces otra llamada a la plantilla con diferentes tipos de parámetros - y el compilador crea una nueva función, es decir, otra, es decir, como si escribieras 2 funciones, que hacen lo mismo, pero con diferentes tipos de parámetros
uf, así es como funciona ))))
UPD:
puede, pero si los tipos en la plantilla coinciden, aquí hay un ejemplo, funciona correctamente:
Gracias, aún más claro que en los docs) Resulta que en la plantilla la predefinición de variables no permite no especificarlas. Lo necesito para imprimir en un archivo. El registro no me da la opción de dividir los registros. Ojalá hubiera 5 troncos). Como resultado, las plantillas dan una opción para no llevar el tipo de variable al deseado, se puede hacer dentro de una función de la plantilla, pero el número de variables debe ser especificado en su totalidad. Una función simple con variables predefinidas del tipo requerido da la oportunidad de especificar menos variables en una llamada, pero los tipos de variables deben ser llevados al correcto. Por supuesto, esto se puede hacer en la convocatoria, pero el registro será demasiado largo.
¡Buenas tardes a todos!
Hice una función para modificar el stoploss. Pero cuando funciona da EURUSD,H1: OrderModify error 130.
Y el precio está muy lejos del lugar donde se debe fijar el stoploss.
Esta es la función:
Inténtalo de esta manera:
Gracias, ha funcionado.
Pero dos matices más:
1 ¿qué condición añadir para no cerrar las órdenes que se abrieron el viernes de la semana actual, y los viernes de las semanas anteriores, respectivamente, se cerraron?
2. cómo corregir el código - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
¿para eliminar la advertencia de"posible pérdida de datos debido a la conversión de tipo"? Parece que se trata de "...MarketInfo(nameSym,MODE_DIGITS)...".
Por favor, avisa.
En el probador, el valor de retorno de la función de suma de lotes GetAmountLotFromOpenPos da un valor de -1717986918.
He encontrado la razón. Debería haber puesto OrderTakeProfit() en OrderModify en lugar de OrderProft(). Lo he revisado un poco.
Gracias por la ayuda de todos modos.
Gracias, ha funcionado.
Pero dos matices más:
1 ¿qué condición añadir para no cerrar las órdenes que se abrieron el viernes de la semana actual, y los viernes de las semanas anteriores, respectivamente, se cerraron?
2. cómo corregir el código - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
¿para eliminar la advertencia de"posible pérdida de datos debido a la conversión de tipo"? Debe tratarse de "...MarketInfo(nameSym,MODE_DIGITS)...".
Para la primera pregunta, tienes que hacer esta función:
{Print("Error al seleccionar el pedido ", GetLastError();}
Para la segunda pregunta, debería haber la siguiente entrada:
OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);
Buena suerte.