[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 40

 
Noterday:

He insertado un nuevo bloque en mi EA para calcular el tamaño del lote de la posición a abrir. La idea es la siguiente:

1. El stop se fija en el máximo del día actual en caso de una posición de venta, y en el mínimo del día en caso de una posición de compra.

2. Cuando la condición de apertura de la orden se dispara, este bloque para el cálculo del lote comienza a ejecutarse. Se calcula la distancia en puntos hasta el Máximo/Mínimo del día y se recorren los lotes a partir de 0,1 para encontrar el lote necesario (5% cuando se ha activado un stop)

Pero esas líneas aparecen en mi diario:

2011.01.30 16:59:47 TestGenerator: error de datos no coincidentes (se ha superado el límite de volumen de 1107 en 2011.01.13 14:45)

En cuanto desactivo este bloqueo, todo va bien. ¿En qué me equivoco? ¿Puede decírmelo, por favor?

Aquí está el código en sí:

Es poco probable que el mensaje del probador esté relacionado con su código.

Pruebe una y otra vez para recalcular todos los plazos en el Archivo de Cotizaciones.

El mensaje dice que el volumen de 1107 se alcanzó a las 14:45, lo cual es completamente imposible, ya que la negociación continuó hasta las 24:00.

Sin embargo, este error es bastante insignificante.

 
Saltan:

Al intentar compilar un archivo de inclusión (*.mqh) se produce un error '\end_of_program' - no hay función definida. ¿Qué es lo que falla y cómo solucionarlo?

extern double Lots = 0.0;
extern int Percent = 0;
extern int StopLoss = 100;
extern int TakeProfit = 40;
extern int TrailngStop = 100;

int Level_New;
int Level_Old;


Sucede y es normal. Por ejemplo, en mi Variables.mqh - se especifican las variables externas y globales del experto... al compilar se escribe '\end_of_program' - no hay función definida, algo así como no hay final en el programa, no hay función definida, pero al mismo tiempo, al compilar el propio experto, todo está bien - 0 errores, 0 advertencias. (*.mqh) - no se compilan por separado, cuando se compila el Asesor Experto en sí, el compilador pondrá todos sus inludios juntos y decidirá si hay errores, no hay errores, etc. :-))) Así que todo es normal. Intenta compilar por sí mismo...

P.D. Al compilar otros inludes, el compilador puede escribir que alguna variable global no está definida... Por supuesto, no es necesario definirlo si lo tienes en una línea interna completamente diferente. Fíjese en el orden en el que están colocados los inludios... Si una variable se define en un inlude y se utiliza en otro, el primer inlude debe colocarse antes que el segundo, de lo contrario se producirá un error durante la compilación - alguna variable no está definida, en general todas las variables globales se definen en el inlude exterior. O alternativamente pueden ser definidos en cualquier otro, si sólo éste utiliza estas variables. De alguna manera... Es bastante vago, pero debería ser comprensible. Pruébalo.

 
DhP:

Es poco probable que el mensaje del probador esté relacionado con su código.

Pruebe una y otra vez para recalcular todos los plazos en el Archivo de Cotizaciones.

El mensaje dice que el volumen 1107 se alcanzó a las 14:45, lo cual es completamente imposible, ya que la negociación continuó hasta las 24:00.

Sin embargo, este error es bastante insignificante.

Pues bien, cuando se comenta este bloque, todo va bien en el probador. Así que el error está en este bloque...
 
100yan:
No hay problema... Pero, ¿cómo se determina el valor actual del TF en el código?

Period() ayudaría
 
Sergey_Rogozin:

He mirado la portada del libro del ESTUDIO por todos los lados y sigo sin entender nada...)

Lo veo escrito así en todas partes:

¿Es justa la escritura de abajo si quiero obtener Price = OrderOpenPrice() para el procesamiento posterior y el establecimiento de Stops?

A mí me funciona, pero ¿es esto aceptable?

Su línea es tan válida como la primera.

De este modo, podrá obtener cualquier información sobre una orden abierta,

pero sólo una vez en el momento de la confirmación de la apertura.

Ver https://docs.mql4.com/ru/trading/OrderSend

 
Noterday:
Pues bien, cuando se comenta este bloque, todo va bien en el probador. Así que el error está en este bloque...
    double DistanceToHighDay = MathAbs(HighDay-Ask)*10000;
    double DistanceToLowDay  = MathAbs(Bid-LowDay)*10000;

Lo más probable es que se deba a su manejo de los datos del día, que no es coherente en volumen con las actas,

y el probador le advierte de ello.
 
Las variables HighDay y LowDay se utilizan no sólo en este bloque, sino también en otros lugares del programa, por lo que creo que no tienen nada que ver. ¿Cree que el algoritmo de ese bloque es correcto?
 

¿Puede alguien hacer un mejor trabajo?

1. Se coloca un stop en el máximo del día en una posición de venta.

2. A continuación, calculamos la distancia en pips entre el precio actual y el máximo del día.

3. Calcule cuánto será esta distancia en $ con 0,1 lote y calcule cuánto será en % del depósito. Si es inferior al 5%, entonces cuente con 0,2 lotes y así sucesivamente hasta que supere el 5%.

Y entonces este será el tamaño del lote que necesitas.

Mi código no funciona por alguna razón.... aunque todo parece estar escrito correctamente.

 

¿QUIÉN SABE?

¿Cómo puedo referirme programáticamente al Bollinger que dice "aplicar a los datos del indicador anterior"? ¿Qué debo poner en el campo applied_price?

gracias

 

Buenos días a todos. Pregunta: ¿Cómo puedo hacer que funcione CheckEvents? El archivo Events (de Komposter) está en el directorio include. Hay un ejemplo en EventsExpert.mq4:

CheckEvents( MagicNumber );

        if ( eventBuyClosed_SL > 0 )
                Alert( Symbol(), ": Buy-позиция закрыта по СтопЛоссу!" );

Pero no necesito la Alerta. Necesito que la orden pendiente se elimine cuando la orden de mercado se cierre en el Stop Loss.

CheckEvents( Magic==0 );
    
   if (eventBuyClosed_SL > 0)
   ??????????? 
        
   DELETE("Buy Stop");

¿Qué debo poner en lugar de la Alerta? Si esta función es adecuada para el propósito.

Razón de la queja: