Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1258

 
VIX XIV:
Buenas noches. ¿Cómo debería ser el código que buscará la última orden cerrada? ¿Se ve así: "OrderSelect(OrdersHistoryTotal, SELECT_BY_POS, MODE_HISTORY"?

Este es el aspecto que debería tener su bloque:

int a=-1;

for(int is=Total de Pedidos(); is>=0; is--)

{

if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))

{

if(OrderType()==OP_BUY) {a=Tipo de orden(); break;}

if(OrderType()==OP_SELL){a=OrderType(); break;}

}

}

if(a==OP_BUY) Comment("Se ha encontrado la última orden de compra cerrada en la lista;)

if(a==OP_SELL) Comment("Se ha encontrado la última orden de venta cerrada de la lista;)


 

Hace tiempo leí que no hay garantía en la ordenación cronológica de los pedidos en OrdersHistoryTotal, y que hay que comprobar por la fecha de cierre.

 

@Valerius, ¿no puedes insertarlo como código? ¿O qué falta?

 
Сергей Таболин:

@Valerius, ¿no puedes insertarlo como código? ¿O qué falta?

¿Podríais hacer humanamente posible la inserción de código como código en el editor de MT?

Ninguno de sus botones funciona como necesito.

 
Valerius:

¿Podría hacer humanamente posible insertar el código como código en el editor de MT?

Ninguno de sus botones funciona como yo quiero.

Hay una forma difícil. Copia y pega lo que quieras de cualquier código. Y pega tu código ahí. Menos el resaltado no funciona así))))


if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))  Это чужой код и его можно править))))
 
Valerius:

Para la primera pregunta, tienes que hacer una función como esta:


for(int is=Total de Pedidos()-1; is>=0; is--)
{
if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))
{//Cierre las órdenes que se han abierto el viernes de la semana que no es la actual. En este caso, no cerramos los pedidos el viernes de la semana en curso.
if(OrderMagicNumber()==Magic && TimeDayOfWeek(TimeCurrent())==5 && TimeDayOfWeek(OrderOpenTime())==5 && TimeDayOfYear(OrderOpenTime())<TimeDayOfYear(TimeCurrent())
{
if (OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_BID),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if(!result) {error=GetLastError(); Print("LastError = ",error, ",Symbol()); }
si no {error=0;}
si no
{Print("NoMagic ",OrderMagicNumber();} // para Debug
si no

{Print("Error al seleccionar el pedido ", GetLastError();}


Para la segunda pregunta, debería haber la siguiente entrada:

OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);

Buena suerte.

Gracias. Ha funcionado como se esperaba en la primera pregunta.

En el segundo - número incorrecto de parámetros. Lo he arreglado así - OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);

Sólo que ahora no entendí bien la edición de mi primera variante (la copié de algún sitio) ...

 
Hola
¿Puede alguien explicar cómo funciona el trailing take profi? Hay alguna información sobre el Trailing Stop en la ayuda de MT5, pero no hay información sobre el Trailing Profit. Cuando establezco el "nivel de arrastre de Stop Loss (en puntos)" en mi Asesor Experto, por ejemplo, a 100, entiendo que el beneficio de arrastre se activará, cuando el precio pase de 100 puntos en la dirección requerida. Pero, ¿qué significa "Take Profit trailing level (in points)" = 10?
 
altec3:
Hola!
¿Puede alguien explicar el principio del trailing take profi? No encuentro ninguna información sobre el Trailing Stop en la Referencia de MT5. Cuando establezco el "nivel de arrastre de Stop Loss (en puntos)" en mi Asesor Experto, por ejemplo, a 100, entiendo que el beneficio de arrastre se activará, cuando el precio pase de 100 puntos en la dirección requerida. Pero, ¿qué significa "Take Profit trailing level (in points)" = 10?

El TakeProfit se calcula en pips y el Trailing TakeProfit se calcula en la moneda del depósito. El Trailing TakeProfit es el beneficio en la moneda del depósito de una o más órdenes, y pone los stops de las órdenes en la cantidad especificada en los ajustes, es decir, a una distancia calculada.

Por ejemplo, en la configuración se especifica el Trailing Take Profit en 100 dólares. Una vez que el precio alcanza el beneficio de 100$ y va más allá, el programa calcula la distancia de 100$ y coloca todos los stoploss de las órdenes en el punto calculado, si lo permite. En cuanto el precio vuelva a los topes, se cerrarán todas las órdenes. En principio, es lo mismo que el Trailing Stop, sólo que se calcula en moneda de depósito y sigue el beneficio. Puede que me haya equivocado en alguna parte, pero este es el principio. Espero haberlo explicado.

 
¿Cómo puedo utilizar python para solicitar todas las barras de la terminal de un marco de tiempo especificado?
 
¿He entendido bien que en mt5, en lugar de la hora de cierre, hay que mirar POSITION_TIME_UPDATE?
Razón de la queja: