[¡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 220
![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
Has acertado. Además, cuando sacamos un valor de la caja, es de tipo double, pero si se da la orden de escribir el resultado en una variable de tipo int, el compilador tomará automáticamente todos los pasos necesarios para poner el valor en una nueva caja.
Para asegurarme finalmente de que lo he entendido bien, por favor, compruebe mis pensamientos sobre su último párrafo... Por lo tanto, tengamos el mencionado experto:
Luego en la cadena:
Ponemos una variable de tipo entero Expertos en la casilla "GV-variable" para su almacenamiento (convirtiéndola a tipo doble). Entonces si (suposición hipotética) habría una cadena en el Asesor Experto
int New_Experts=Experts;
significaría que hay un comando para escribir el resultado en una variable de tipo int. En este caso el compilador:
* tomaría el valor de la variable de tipo double fuera de la caja,
* realizar los cambios necesarios en el valor de la variable Experts,
* asignar este valor a la variable Nuevos_Expertos y...
* poner el valor de la variable Nuevos_Expertos en una casilla "int".
Así que el tipo de variable no es más que un envoltorio/paquete externo de algún valor... y por tanto las variables GV no pueden ser de tipo cadena, ya que la degradación sólo se permite para valores numéricos, y las cadenas no se convierten en números.
¿Verdad?
Gracias de antemano por su respuesta.
lo que no es así for (f=1;f<Bars;f++)
{
Precio1 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT)
Precio2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT);
Spread = Precio1 - Precio2;
Print ("Price1="+Price1, " Price2="+Price2);
if (Spread==0){t=f; break;}
}
Precio12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT);
Precio22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT);
Spread2 = Precio12 - Precio22;
if (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { abre la operación }
quiere fijar la barra en la que el spread era igual a cero y controlar el spread a partir de ella
if(MathAbs(Spread)<eps) { ........ } y todavía hay que controlar el resultado: si se encuentra el punto que satisface la condición o no. En mi opinión, es mejor crear una función separada, por ejemplo, así:
Hola.
¿Sabes si existe una #propiedad en los indicadores que permita que el indicador muestre siempre el mismo periodo, por ejemplo, d1?
¿y no cambiará aunque cambie de marco temporal en MetaTrader?
gracias
------------------------------------------
oh... cuántos pros.....
¡¡¡¡ayuda!!!!
cómo llamar al indicador desde el script, realmente necesito que se muestre en una ventana
Buenas noches, por favor ayúdenme a hacer cambios en el código del EA:
1. En las pruebas todo va bien - pero en el comercio la primera operación tiene que ser abierta manualmente, stop y take también. Me gustaría que el EA comenzara a operar automáticamente cuando el precio llegue a un nuevo tick.
2. Como en el caso de un stop loss activado, la siguiente posición se abre con el doble del lote anterior, el lote puede aumentar teóricamente hasta el infinito (en mi caso, hasta 51,2), me gustaría limitarlo (por ejemplo, 0,8) con la posibilidad de cambiar el umbral. Cuando se alcanza el umbral y se activa un stop, el EA no se desconectaría, sino que volvería a empezar desde 0,1.
Ayuda, por favor. He estado luchando todo el día sin ninguna ayuda.
La orden está en la recogida (Main BAY, pendiente de sellsstop como seguridad).
En el cierre sellsstop en la no-perdida, pospuesto de nuevo en el mismo lugar.
Para asegurarme finalmente de que lo he entendido bien, por favor, compruebe mis pensamientos sobre su último párrafo... Por lo tanto, tengamos el mencionado experto:
Luego en la cadena:
Ponemos una variable de tipo entero Expertos en la casilla "GV-variable" para su almacenamiento (convirtiéndola a tipo doble). Entonces si (suposición hipotética) habría una cadena en el Asesor Experto
significaría que hay un comando para escribir el resultado en una variable de tipo int. En este caso el compilador:
* tomaría el valor de la variable de tipo double fuera de la caja,
* realizar los cambios necesarios en el valor de la variable Experts,
* asignar este valor a la variable Nuevos_Expertos y...
* poner el valor de la variable Nuevos_Expertos en una casilla "int".
Así que el tipo de variable no es más que un envoltorio/paquete externo de algún valor... y por tanto las variables GV no pueden ser de tipo cadena, ya que la degradación sólo se permite para valores numéricos, y las cadenas no se convierten en números.
¿Verdad?
Gracias de antemano por la respuesta.
No exactamente. La cuestión es que la variable Experts ya tiene el tipo int, por lo que la conversión de tipo debe realizarse ANTES de asignarle un valor, es decir, el compilador
* sacó de la caja un valor de tipo double (no tiene nombre en su programa, y se escribe simplemente en alguna dirección conocida por el compilador en la memoria principal o en el registro de la CPU)
* realizó todos los cambios necesarios en el valor de la variable anterior y escribió un nuevo valor (¡de tipo int!) en la variable Experts,
* asignó este valor (de tipo int!) a la variable Nuevos_Expertos. Tienen el mismo tipo, por lo que sólo se trata de copiar un valor de una ubicación de memoria a otra.
P.D. Es estupendo ver que hay personas que comprenden sus actos con tanto detalle. De hecho, no es una broma. Manténgase en contacto.
Buenas noches, por favor ayúdenme a hacer cambios en el código del EA:
1. En las pruebas todo va bien - pero en el comercio la primera operación tiene que ser abierta manualmente, stop y take también. Me gustaría que el EA comenzara a operar automáticamente cuando el precio alcance un nuevo tick.
Como en el caso de un stop loss activado, la siguiente posición se abre con el doble del lote anterior, el lote puede aumentar teóricamente hasta el infinito (en mi caso, hasta 51,2), me gustaría limitarlo (por ejemplo, 0,8) con la posibilidad de cambiar el umbral. Cuando se alcanza el umbral y se activa un stop, el Asesor Experto no se desconectaría y volvería a empezar desde 0,1.
Pruébalo:
Hola a todos.
Tengo un script que cierra todas las órdenes disponibles.
No entiendo tres líneas en él:
Si no es difícil, por favor, tradúzcalo al ruso para un principiante.
He estudiado el tutorial, pero no me he encontrado con expresiones lógicas tan largas.
El script que adjunto. Gracias.