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

 
clubsmi:

Por favor, indique cómo calcular los porcentajes en MQL4

por ejemplo x=10+3% ¿cómo escribirlo programáticamente?

No lo encuentro en el libro de referencia.



x=10*1.03
 
r772ra:


x=10*1.03



ok! pero no voy a recalcularlos cada vez, necesito una función que calcule los porcentajes por sí misma

y=3; //el número va cambiando con cada tick

x=10+yP; // en lugar de P necesitas un porcentaje. no puedo escribirlo en mql

 
if(Line_7 > Lines_1 && Lines_1 > Line_6)
{
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,0,0);
}
if(AccountProfit() > 50)
{ 
OrderClose(Symbol(),5,Ask,0);
}
Cadena de códigos lógicos:

1 Si la línea 7 está por encima de la línea 1, con la línea 1 por encima de la línea 6,
2 entonces
3 se abre una orden de compra con volumen Lots_Typ, posible deslizamiento de 5 pips, sin SL y TP, al precio de cierre.

1 Si el beneficio potencial de esta cuenta es superior a 50 dólares,
2 entonces
3 se cierran todas las órdenes, sin importar las propiedades que tengan (volumen, compra/venta, ...).

La cadena lógica está alineada correctamente, pero el código de la cadena lógica no lo está.

OrderClose(Symbol(),5,Ask,0);
El error está aquí.
Si construimos una cadena lógica, relativa al código anterior, obtenemos:
Cierre de 5 lotes de una orden con un precio de cierre y un posible deslizamiento de 0 pips.

¿Cómo corregirlo? Por favor, avisa.
 
clubsmi:



ok! no puedo recalcularlos cada vez, necesito una función que calcule el porcentaje por sí misma

y=3; // el número cambia constantemente con cada tick

x=10+yP; // necesitamos porcentaje en lugar de P. No puedo escribirlo en mql.

¿en relación con qué?
 
clubsmi:



ok! no puedo recalcularlos cada vez, necesito una función que calcule el porcentaje por sí misma

y=3; // el número cambia constantemente con cada tick

x=10+yP; // en lugar de P necesitamos porcentaje.

//+----------------------------------------------------------------------------+
double Percent(double x, double y) {return(x*0.01*y);}
//+----------------------------------------------------------------------------+

x - número, y - porcentaje necesario

pasar el número x y el porcentaje deseado del mismo a y, la salida es el porcentaje y del número x

 
Link_x:
Cadena de códigos lógicos:

1 Si la línea 7 está por encima de la línea 1, con la línea 1 por encima de la línea 6,
2. Entonces
3 se abre una orden de compra con volumen Lots_Typ, posible deslizamiento de 5 puntos, sin SL y TP, al precio de cierre.

1 Si el beneficio potencial de esta cuenta es superior a 50 dólares,
2. Entonces
3 todas las órdenes serán cerradas, sin importar sus propiedades (volumen, compra/venta, ...).

La cadena lógica es correcta, pero el código por cadena lógica no lo es.

El error está aquí.
Si se construye una cadena lógica, relativa al código anterior, obtenemos:
Cierre de 5 lotes de una orden con un precio de cierre y un posible deslizamiento de 0 pips.

¿Cómo corregirlo? Por favor, avisa.

Estimado señor, lea atentamente la documentación,

En concreto

El bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Cierre de la posición. Devuelve TRUE si la función se ha completado con éxito. Devuelve FALSE si la función falla. Para obtener información sobre el error, llame a la función GetLastError().
Parámetros:
billete - Número de serie único del pedido.
lotes - Número de lotes a cerrar.
precio - El precio de cierre.
deslizamiento - El valor del deslizamiento máximo en pips.
Color - Color de la flecha de cierre en el gráfico. Si falta el parámetro o su valor es CLR_NONE, la flecha no se muestra en el gráfico.
Ejemplo:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderClose(order_id,1,Ask,3,Red); return(0); }

 
r772ra:

Estimado señor, lea atentamente la documentación,

específicamente

El bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Cierre de la posición. Devuelve TRUE si la función se ha completado con éxito. Devuelve FALSE si la función falla. Para obtener información sobre el error, llame a la función GetLastError().
Parámetros:
billete - Número de serie único del pedido.
lotes - Número de lotes a cerrar.
precio - El precio de cierre.
deslizamiento - El valor del deslizamiento máximo en pips.
Color - Color de la flecha de cierre en el gráfico. Si falta el parámetro o su valor es CLR_NONE, la flecha no se muestra en el gráfico.
Ejemplo:

Yo sé todo esto.
¿Cómo puedo hacer que se cierren todos los pedidos, independientemente de sus características?
 
Link_x:
Todo eso lo sé.
¿Cómo hago para que se cierren todos los pedidos, independientemente de sus características?

Ya sabes, bien por ti,

OrderClose(Symbol(),5,Ask,0) //зто твое

OrderClose(order_id,1,Ask,3,Red); // А зто пример из документации

// Найди отличие
 
artmedia70:

x - número, y - porcentaje requerido

pasar el número x y el porcentaje deseado y, la salida es el porcentaje y del número x



Justo lo que necesitaba, muchas gracias... ¡Es tan fácil, que he estado pensando durante medio día! ¡Gracias de nuevo!

 
r772ra:

Ya sabes, bien por ti,


En mi ejemplo: número de orden aleatorio, volumen 5, a precio de cierre, con deslizamiento 0, sin flecha.
En el ejemplo del documento: cálculo del número de orden por order_id, el volumen es 1, por precio de cierre, con deslizamiento 3, la flecha es roja.

1 hay cálculo de order_id - no hay cálculo de order_number
2 volumen (1) - volumen (5)
3 deslizamiento (3) - deslizamiento (0)
4 flecha roja - no hay flecha

Diferencias encontradas.
Ahora volvamos a la tarea.

Tarea 1
Escriba un código que cierre todas las órdenes abiertas sin excepciones.

Mi razonamiento.
Es posible escribir este código, pero surge la pregunta: "¿Cómo?
1 - crear un código que lleve la cuenta de todas las órdenes abiertas (volumen total, número de grupo de órdenes, compra/venta, deslizamiento permitido).
2 - Crear un código que abra las órdenes y envíe los datos al código que controla todas estas órdenes (se crea una especie de base de datos).
3 - Se crea el código que cierra todas las órdenes bajo ciertas condiciones y toma sólo los datos no utilizados de la "base de datos peculiar".
Los datos no se reutilizan.

Podríamos hacerlo así, pero creo que hay otra variante menos engorrosa.
Por eso pregunto "¿cómo?".