![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
Esto se está imprimiendo en el Diario durante mi bucle for, donde, en el caso de una orden pendiente de Buy Stop, si el 60 EMA es > que el OrderStopLoss, se cerrará la orden pendiente, abrirá una nueva con nuevo SL (que está detrás de la 60EMA), ajustar la toma de beneficios para entretener a la recompensa de 1:2, y cambiar los lotes en relación con la parada en puntos y mi perfil de riesgo (digamos 2%).
Así que cuando se hace todo esto, el "Lotes actuales" que es "LotSize" variable personalizada dentro de OrderSend funciona, es el envío de un tamaño de lote que no es correcto para el servidor para recibir? "0.18215"? ¿Podría ser un problema, a pesar de que las órdenes se envían de todos modos - esta pregunta es más en relación con "podría ser la razón por la que no puedo llamar "OrderType==OP_BUY"?
Deberías arreglar eso, validar el tamaño del lote de la misma manera que ya tienes... incluso podrías codificar una función separada para hacerlo basada en el código que ya tienes... por ejemplo:
En lugar de utilizar LotSize en su OrderSend() usaría ValidateLots(LotSize)
Aunque dudo que esto esté causando su problema. . .
¡Argh! Es tan frustrante lol - atascado en esto por mucho tiempo ahora :(
No puedo ver por qué esto es un problema y no puedo seleccionar un "OP_BUY"... Sé que probablemente he agotado este tema, pero cualquier última puñalada en la oscuridad sería muy apreciada - ¡gracias por ayudarme también!
Hmm - sí, acabo de jugar con él. Parece que la orden sólo se envía a través de como el servidor sólo permite 0,00 (2 decimales) de todos modos. Así que los dígitos restantes son casi irrelevantes.
¡Argh! Es tan frustrante lol - atascado en esto por mucho tiempo ya :(
No puedo ver por qué esto es un problema y no puedo seleccionar un "OP_BUY"... Sé que probablemente he agotado este tema, pero cualquier última puñalada en la oscuridad sería muy apreciada - ¡gracias por ayudarme también!
Creo que tienes que mostrar todo tu código . . .
Veo algunos problemas aquí:
-http://pastebin.com/eaY1wKbN
Lo siento por la sintaxis - un poco más difícil de ver todo, pero no tienen MQL4? Así que lo puso bajo C ++
¿Todo el código no cabe aquí? Lo he puesto en pastebin sin embargo?
-http://pastebin.com/eaY1wKbN
Lo siento por la sintaxis - un poco más difícil de ver todo, pero no tienen MQL4? Así que lo puso bajo C ++
No hay problema...
. . . ¿qué orden está ya seleccionada? ¿era la orden pendiente? su OrderSelect() fallará si su OrderTicket() falla a menos que ya tenga una orden seleccionada. ¿Realmente necesita este código? más adelante tiene un bucle donde selecciona las órdenes y comprueba su símbolo y número mágico y tipo...
Esto también necesita ser arreglado...
. . . añadir algunos corchetes . . .
Ok - He puesto más impresiones para tener un poco de claridad sobre lo que se está haciendo y qué punto. Lo he pegado abajo.
La línea donde dice "Orden Seleccionar para el cierre:-..." que es lo que se está seleccionando en el punto "Cerrar OP_BUY Medio Lotes @ 1:1 Función" que ha preguntado anteriormente. Parece que el número de entrada es diferente en este punto de la selección? Había eliminado la parte "...&& OrderType()==OP_BUY", ya que parece imprimir el resto cuando esta parte no está en la declaración "if"... ¿Esto da un poco más de claridad?
"Primera orden de compra colocada:-" es la primera función OrderSend que pasa al principio
"Checking Buy Order:-" Es la que está dentro del bucle for para eliminar y reabrir la orden pendiente si la MA es > el OrderStopLoss().
"NEW BUY ORDER:-" Es la nueva orden que se coloca dentro de ese bucle for.
"Order Select for closing:-..." - como ya se ha mencionado, es la parte que se está seleccionando para cerrar la mitad de los lotes.
Lo siento si eso fue confuso, ya que acabo de añadir estas partes en - usted no verá esto dentro de ese enlace pastebin arriba ... sólo simples funciones de impresión :)
Ok - He puesto más impresiones para tener un poco de claridad sobre lo que se está haciendo y qué punto. Lo he pegado abajo.
La línea donde dice "Orden Seleccionar para el cierre:-..." que es lo que se está seleccionando en el punto "Cerrar OP_BUY Medio Lotes @ 1:1 Función" que ha preguntado anteriormente. Parece que el número de entrada es diferente en este punto de la selección? Había eliminado la parte "...&& OrderType()==OP_BUY", ya que parece imprimir el resto cuando esta parte no está en la declaración "if"... ¿Esto da un poco más de claridad?
"Primera orden de compra colocada:-" es la primera función OrderSend que pasa al principio
"Checking Buy Order:-" Es la que está dentro del bucle for para eliminar y reabrir la orden pendiente si la MA es > el OrderStopLoss().
"NEW BUY ORDER:-" Es la nueva orden que se coloca dentro de ese bucle for.
"Order Select for closing:-..." - como ya se ha mencionado, es la parte que se está seleccionando para cerrar la mitad de los lotes.
Lo siento si eso fue confuso, ya que acabo de añadir estas partes en - usted no verá esto dentro de ese enlace pastebin arriba ... sólo simples funciones de impresión :)
Pruebe el adjunto ... es mi mejor suposición de lo que está tratando de hacer ...
Ah, impresionante, gracias. Es un gran paso en la dirección correcta. Creo que porque está dentro de un bucle for, quiere cerrar la mitad y la mitad @ el precio... ¿En lugar de hacerlo sólo una vez? No sólo eso, sino que parece no cerrar la mitad tan pronto como el precio >= al precio de salida que quiero, en su lugar va más allá, y luego cuando el precio oscila de nuevo más bajo en el precio de salida que quiero, se cierra entonces - extraño... ¡Aprecio su paciencia en ayudarme! ¡Muy agradecido por su tiempo!
ACTUALIZACIÓN: También, acabo de descubrir, que si cambio las propiedades del experto (extern int) antes de ejecutar el probador de la estrategia, entonces el cierre de la mitad no funciona en absoluto - las cosas que afectan al cierre de la mitad es "MA_PadAmount" esto es cuántos puntos quiero añadir como una almohadilla a la pérdida de la parada que se arrastra en pips, y "OrderPrice_PadAmount" que me permite especificar cuántos pips puedo poner como una almohadilla en el precio de entrada de las órdenes ...
Ah, impresionante, gracias. Es un gran paso en la dirección correcta. Creo que porque está dentro de un bucle for, quiere cerrar la mitad y la mitad @ el precio... ¿En lugar de hacerlo sólo una vez? No sólo eso, sino que parece no cerrar la mitad tan pronto como el precio >= al precio de salida que quiero, en su lugar va más allá, y luego cuando el precio oscila de nuevo más bajo en el precio de salida que quiero, se cierra entonces - extraño... ¡Aprecio su paciencia en ayudarme! ¡Muy agradecido por su tiempo!
No estoy del todo seguro de cómo escribir eso, pero ¿es más o menos en las líneas correctas?