Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 872

 
rapid_minus:

Bueno, estoy completamente confundido: OrdBuy_1( ) es la función que abre BAY en las condiciones #1 por encima de esta función. Sólo que probablemente el tipo correcto sea double y no int, porque devuelve el precio de apertura de la orden. Y por lo que tengo entendido, no lo he insertado en ninguna función; se coloca por separado, después de int start(), extrayendo los valores de todos los indicadores necesarios y analizando la situación actual del mercado (¿me equivoco?).

¿Y cómo normalizo la parada y la toma, o mejor aún, cómo no las pongo?

Y no entiendo lo del cheque. Debo haber entendido mal el tutorial - "bool OrderClose (int ticket, double lots, double price, int slippage, color Color=CLR_NONE)Función para cerrar una orden de mercado." ¿Qué es un cheque?

En fin, cuanto más avanzas, más tonto se vuelve :(.

¿Por qué crees que esto es correcto?

//Локальная переменная, открывающая ордер БАЙ
   int OrdBuy_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));

Usted ha escrito - variable. Pero dos paréntesis significan que fuiste tú quien declaró la función. Dentro de otra función. Y lo que sigue no es su descripción, sino su asignación.

Y si dices que debe devolver el precio de apertura, ¿por qué lo comparas con la verdad?

if (OrdBuy_1()==true)                              //Если был открыт ордер №1, то...

En realidad OrderSend() devuelve el número de ticket de la posición abierta en caso de éxito. En caso contrario, -1 en caso de error. Para saber cuál es el error, hay que mirar el contenido del último error GetLastError () y, si es posible, manejar el código de error devuelto por el servidor de comercio (a esto me refería).

Se comprueba que el número de billete es "verdadero". Y esto es 0 (falso) o cualquier valor distinto de cero (verdadero). En caso de error, OrderSend() devolverá -1, que es verdadero, y entonces ¿qué?

 
artmedia70:
Calcula la línea virtual en lugar de la línea real.

Ya ha empezado. El problema es cómo dar la vuelta a la indexación de las barras para que el mayor índice esté a la derecha (para calcular la geometría de la línea de tendencia)

Lo he hecho de esta manera, pero cómo compararlo con un ciclo de cálculo de indicadores. ¿Tal vez haya alguna otra forma más técnica de invertir la indexación?

for(i=limit;i>=0;i--)
   {
   Bar[i]=Bar[i+1]+1;
   }
 
Forexman77:

Ya ha empezado. El problema es cómo dar la vuelta a la indexación de las barras para que el mayor índice esté a la derecha (para calcular la geometría de la línea de tendencia)

Lo he hecho de esta manera, pero cómo compararlo con un ciclo de cálculo de indicadores. ¿Tal vez haya alguna otra forma más técnica de invertir la indexación?

¿Por qué? Utilice la barra y el precio de los dos puntos de la línea para obtener el precio de la barra que se está calculando:

double EquationDirect(double x1, double y1, double x2, double y2, double x) {return((x2==x1)?y1:(y2-y1)/(x2-x1)*(x-x1)+y1);}

x1 es la barra del primer punto de la línea, y1 es el precio del primer punto de la línea, x2 e y2 son la barra/precio del segundo punto de la línea, x es el número de la barra en la que quiere el precio.

 
artmedia70:

¿Por qué? Utiliza la barra y el precio de los dos puntos de la línea para obtener el precio de la barra a calcular:

x1 es la barra del primer punto de la línea, y1 es el precio del primer punto de la línea, x2 e y2 son la barra/precio del segundo punto de la línea, x es el número de la barra en la que quiere el precio.

Bien. Gracias.
 
Por favor, aconsejar cómo cerrar todas las posiciones para el día siguiente a las 23.00, no hay problemas durante el día (si (Hour_curr>= tiempo necesario), pero tengo un problema con el movimiento después de 00.00. Muchas gracias.
 
aleks_pavlenko:
Por favor, aconsejar cómo cerrar todas las posiciones para el día siguiente a las 23.00, no hay problemas durante el día (si (Hour_curr>= tiempo necesario), pero tengo un problema con el movimiento de las posiciones después de 00.00. Gracias de antemano.
Si el día en que se abre la posición no es igual al día en que debe cerrarse.
 
artmedia70:
Si el día de apertura de la posición no es igual al día de cierre de la misma.
Correcto, el día de apertura no es igual al día de cierre, cómo implementarlo en mq4.
 

Buenas tardes! No entiendo cómo se puede hacer una parte del código (por ejemplo, la descripción y el cálculo de las variables globales) en un archivo de inclusión?

¿Cómo se asigna la extensión mgh al archivo?

¿El archivo de inclusión reduce el tamaño del Asesor Experto?

Gracias.

 
rapid_minus:

Buenas tardes! No entiendo cómo se puede hacer una parte del código (por ejemplo, la descripción y el cálculo de las variables globales) en un archivo de inclusión?

¿Cómo se asigna la extensión mgh al archivo?

¿El archivo de inclusión reduce el tamaño del Asesor Experto?

Gracias.

Se puede incluir un .mq4 normal, no hace falta que sea .mqh, ni siquiera hace falta compilarlo. El archivo de inclusión difiere en la falta de funciones especiales OnInit(), OnDeinit(), OnTick, etc.

No hay ningún efecto sobre el tamaño del archivo, ya sea inline o todo el código en una sola pieza, el código inline se incluye en el código ejecutable final.

 
evillive:

Se puede incluir un archivo .mq4 normal, no tiene que ser .mqh, ni siquiera es necesario compilarlo. El archivo incluido difiere en la ausencia de funciones especiales OnInit(), OnDeinit(), OnTick, etc.

No tiene efecto en el tamaño del archivo de inclusión, si todo el código se incluye en una sola pieza, el código de la línea se incluye en el ejecutable final.

¿Lo he entendido bien: escribimos un trozo de código sin funciones init(), start() y demás, lo guardamos como archivo .mqh y ya está? Podemos ponerlo en el directorio terminal_experts\include y se llamará y ejecutará sin problemas?

Gracias.

Razón de la queja: