Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 884
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
Buenas tardes, señores. )) disculpas por el amateurismo...
No entiendo cómo funciona OrderClose :(
Necesito un máximo de 1 pedido, es decir, antes de abrir uno nuevo, quiero que se cierre el anterior...
¿Por qué no funciona así?
OrderClose(nom, 0.01, Bid,5, Red);
OrderSend(Symbol(), OP_SELL, 0.01 , NormalizeDouble(Bid,5), 3 , NormalizeDouble(Ask+0.0005,5), NormalizeDouble(Bid-0.0008,5), "", nom,0,Red);
el registro está básicamente jurando sobre un billete inválido .
en OrderClose en lugar de nom, ¿qué debo poner? o estoy pensando en la dirección equivocada en absoluto)
Pruebe minStopLoss = Precio actual +/- (MaxValue(2*Spread, StopLoss));
Lo he estudiado, pero nada nuevo, aparentemente es (nuevo para mí) por supuesto, obvio para todos los iniciados, autoexplicativo. No pude encontrar nada nuevo, excepto la característica descrita anteriormente de la disposición mutua de los búferes durante la indexación. Esta secuencia respetada, obtuvo una imagen aún más cursi.
Fotos abajo, archivo adjunto
Quizá tengas muy mala suerte, pero no me gusta hurgar en el código de los demás. Más aún cuando se trata de arreglarlo...
La siguiente pregunta: ¿con qué frecuencia crees que el valor del indicador será exactamente 50?
ColorHistogram_2Buffer1[i]=50;
Según he entendido el problema, debería ser un color >50 y otro <50, pero no he visto ==50. Por supuesto, para eliminar la pérdida en el caso ==50, debemos añadir a una de las comparaciones >=50 u otra <=50, según lo permita la religión. Puede parecer mejor.
Y la segunda pregunta: ¿cuántas veces crees que ha sido necesario cambiar toda la indexación de los buffers? Después de reindexar, ¿arreglaste todo en el código exactamente? Tal vez sería más fácil hacer el índice de la memoria intermedia de color 4, y las memorias intermedias auxiliares 5 y 6 en consecuencia. Habría menos necesidad de editar y menos posibilidades de cometer más errores.
Lo he probado. Dos spreads es 24, no funcionará así, empieza a funcionar a 19 del precio de cierre. A partir del precio abierto actual trabaja con tres spreads.
Comprobado. Obras
Todo esto es extraño, dice lo mismo minStopLoss = Current Price +/- (max value(2*Spread, StopLoss)), sólo que bajo Current Price entendemos no el precio abierto de la orden sino el precio espejo.
¿Por qué es adecuada la doble difusión?
Se plantean dos cuestiones más.
1. ¿Por qué se utiliza SymbolInfoInteger para obtener los valores de Digits() y Point()?
2. ¿Por qué se utiliza una entrada (int) antes de llamar a la función SymbolInfoInteger? Según tengo entendido, se trata de una conversión de tipo forzado.
Lo he comprobado. Funciona
Todo esto es raro, siguen escribiendo lo mismo minStopLoss = Current Price +/- (maxZen(2*Spread, StopLoss)) pero el Current Price no es el precio de apertura de la orden sino el precio espejo.
¿Por qué es adecuada la doble difusión?
Se plantean dos cuestiones más.
1. ¿Por qué se utiliza SymbolInfoInteger para obtener los valores de Digits() y Point()?
2. ¿Por qué se utiliza una entrada (int) antes de llamar a la función SymbolInfoInteger? Según tengo entendido, se trata de una conversión de tipo forzado.
Para obtener Point() SymbolInfoInteger no funcionará de ninguna manera).
En general, es necesario recordar que Point() o _Point es sólo para el símbolo actual. Para otros caracteres distintos a los que trabaja el EA, hay que utilizar esta misma función.
La función SymbolInfoInteger no sólo devuelve valores int, sino también long, bool y enumeraciones.
Sergey Voytsekhovsky, gracias por su ayuda. Y una pregunta más, si no te importa, por favor, sugiéreme la función inversa a la funciónCharToStr
(para obtener su código a partir de un símbolo), porque tengo funciones para ello en Beisic y Delphi, pero en C++, que yo sepa, hay dos métodos:
1 - FunciónAscii_cod, que no está en mql4
2. - Conversión directa del tipo. Pero mi código es
string st="A";
Imprimir ("Código de carácter A=",(int)st);
Salida de texto Código de caracteres A=0.
¿Qué hacer?
Sergey Voytsekhovsky, gracias por su ayuda. Y una pregunta más, si no te importa, ¿podrías sugerir la función inversa deCharToStr
(para obtener su código a partir de un símbolo), porque tengo funciones para ello en Beisic y Delphi, pero en C++, según tengo entendido, hay dos métodos:
1 - FunciónAscii_cod, que no está en mql4
2. - Conversión directa del tipo. Pero mi código es
string st="A";
Imprimir ("Código de carácter A=",(int)st);
Salida de texto Código de caracteres A=0.
¿Qué hacer?
StringToCharArray, a diferencia de la función wiki, no convierte sólo un carácter a la vez, sino que puede convertir una cadena en un array de tipo ucar con los códigos de todos los caracteres de la cadena.
mql4 también tiene esa función.
Para obtener Point() SymbolInfoInteger no funcionará de ninguna manera).
En general, es necesario recordar que Point() o _Point es sólo para el símbolo actual. Para otros caracteres distintos a los que trabaja el EA, debe utilizar esta función.
La función SymbolInfoInteger no sólo devuelve valores int, sino también long, bool y enumeraciones.
En realidad Point tiene valor doble. Esto significa que debemos llamarlo desde SymbolInfoDouble
Bueno, en realidad Point tiene un valor del doble. Significa que la solicitud debe ser realizada por SymbolInfoDouble
Se trata de estas funciones para MQL4 del post #65:
No he visto dónde se obtiene Point mediante SymbolInfoInteger()
Se trata de esas funciones MQL4 del post #65:
No he visto dónde se obtiene Point mediante SymbolInfoInteger()
Sí, lo mismo. Nos hemos deslizado a través de él. Lo principal es que entienda lo que es...