Comprobar: ¿qué he hecho mal? - página 6

 
Nikolai Semko #:

Sí, Natalia - eso era sólo un meme de "Cuando te pagan por una línea de código".

Ese es el tipo de humor que tienen los programadores.


En tu caso no necesitas una función.

Sólo tienes que formar las variables Volumen1 ... Volumen10 primero forma un array Volumen[10]
y luego utiliza el índice n para referirse a sus elementos volumen[n].
No te preocupes - casi todos los programadores han pasado por esto.
Lo principal es que te guste mucho la programación. Puedo sentirlo.
Así que llegarás lejos.

Dime cómo escribirlo bien. No quiero duplicar matrices de código.
El Asesor Experto utiliza 2 indicadores.
y las condiciones para la apertura de órdenes se ven así ahora:

if (Indicator1 > 0 && Indicator2 > 0)
{
OrderSend
}


Pero me gustaría añadir un filtro en los ajustes
Usar o no usar 1 o 2 indicadores
Sólo que no sé cómo implementarlo más correctamente.
Sería algo así:

if (Indicator1 && Indicator1 > 0)
{
if (Indicator2 && Indicator2 > 0) || (Indicator2 == false)
{
///
}
}



if (Indicator2 && Indicator2 > 0)
{
if (Indicator1 && Indicator1 > 0) || (Indicator1 == false)
{
///
}
}
para poder desactivar un indicador o el segundo indicador en la configuración.
No puedo averiguar cómo hacerlo sin copiar un montón de código.....
 
Natalya Smirnova #:

Por favor, aconseja cómo escribirlo bien. Para no duplicar las matrices de código.
El Asesor Experto utiliza 2 indicadores.
y las condiciones para la apertura de órdenes se ven así ahora:


Pero me gustaría añadir el filtro
Utilizar o no utilizar 1 o 2 indicadores
Sólo que no sé cómo implementarlo más correctamente.
Se vería así:

Que pueda desactivar un indicador u otro en los ajustes.
No puedo averiguar cómo hacerlo sin copiar un montón de código.....

He escrito un poco sobre ello aquí: https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

 
JRandomTrader #:

He escrito un poco sobre el tema aquí: https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

Gracias, me voy a investigar un poco.
 

Natalya Smirnova #:

para poder desactivar un indicador o el segundo indicador en la configuración.
No puedo averiguar cómo hacerlo sin copiar un montón de código.....


input bool indicator_1 = true;
input bool indicator_2 = true;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool F_1()
    {
     if(!indicator_1)
          return true;
// выполнение условий

//---
     return false;
    }
bool F_2()
    {
     if(!indicator_2)
          return true;
// выполнение условий

//---
     return false;
    }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart(void)
    {
     if(F_1 && F2) /* работаем */ ;
    }

Escriba la condición del indicador en la función y si no se debe comprobar, entonces se cumple la condición. Devuelve TRUE.

 
Natalya Smirnova #:

Por favor, aconseja cómo escribirlo bien. Para no duplicar las matrices de código.
El Asesor Experto utiliza 2 indicadores.
y las condiciones para la apertura de órdenes se ven así ahora:


Pero me gustaría añadir el filtro
Utilizar o no utilizar 1 o 2 indicadores
Sólo que no sé cómo implementarlo más correctamente.
Se vería así:

Que pueda desactivar 1 indicador o el segundo indicador en la configuración.
No puedo averiguar cómo hacerlo sin copiar un montón de código.....

Aún así, la variable para la condición de uso y la variable para el valor de salida del indicador deben ser variables diferentes.
Y si las variables para la condición de uso serán ind_1 e ind_2, entonces, por ejemplo, podrías hacer esto:

ind_1 = !(ind_1 && !(Indicator1>0));
ind_2 = !(ind_2 && !(Indicator2>0));
if (ind_1 && ind_2) { OrderSend... };
Por si acaso: el signo de exclamación significa la inversión del valor bool
 
Nikolai Semko #:

Aun así, la variable para la condición de uso y la variable para el valor de salida del indicador deben ser variables diferentes.
Y si las variables para la condición de uso serán ind_1 e ind_2, entonces, por ejemplo, podemos hacer esto:

ind_1 = !(ind_1 && !(Indicator1>0));

la abundancia de paréntesis e inversiones en la expresión lógica sugiere que se podría simplificar...

PS/ arquitectónicamente es una escoria en general. Si las lecturas del indicador se pueden agrupar sin ningún factor de negociación (independientemente de dónde se haya abierto qué), entonces es un indicador y no tiene nada que ver con la lógica de negociación del robot. Tiene que ser renderizado y estar disponible para su análisis.

 
Maxim Kuznetsov #:

La abundancia de paréntesis e inversiones en la expresión lógica sugiere en cierto modo que se puede simplificar...

Tal vez.
¿Cuáles son las opciones de la lógica ab
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
Excepto !(a && !b)
¿Alguien puede encontrar una lógica más corta...

 
Maxim Kuznetsov #:

PS/ Arquitectónicamente, es una escoria. Si las lecturas de los indicadores se pueden agrupar sin ningún factor de negociación (independientemente de dónde haya abierto qué), entonces es un indicador y no tiene nada que hacer en la lógica de negociación de un robot. Tiene que ser renderizado y estar disponible para su análisis.

No lo entendí.
Sólo respondo a una pregunta. No más.
 
Nikolai Semko #:
Tal vez.
¿Cuáles son las opciones de la lógica ab
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
Excepto !(a && !b)
¿Alguien puede encontrar una lógica más corta...

A... b...

:)

 
PapaYozh #:

A... b...

:)

Sí.
Gracias :))
Es divertido. Intenté adjuntar XOR y me olvidé de OR.

Así que una versión más corta:
ind_1 = !ind_1 || Indicator1>0;
ind_2 = !ind_2 || Indicator2>0;
if (ind_1 && ind_2) { OrderSend... };
o la versión de una sola línea con ind_1 e ind_2 originales conservados

if ((!ind_1 || Indicator1>0) && (!ind_2 || Indicator2>0)) { OrderSend... };


Razón de la queja: