Errores, fallos, preguntas - página 2856

 

Hola. Tengo un malentendido:
¿Cómo puedo utilizar Trade\Trade.mqh para modificar una orden existente?
El comando OrderModify de Trade.mqh me exige establecer 7 parámetros, incluyendo el último: orden StopLimit, lo cual me confunde, porque no lo necesito para nada... Y no es necesario en la ejecución estándar...

OrderModify(const ulong ticket,const double price,const double sl,const double tp, const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit=0.0);

Tengo un Sell Stop, quiero moverlo hacia arriba después del mínimo y no puedo hacerlo con OrderModify, y no entiendo cómo modificar la orden SellStop existente usando Trade\Trade.mqh

Tengo que usar el dilettage y un nuevo orden.

¿Cuál es la forma correcta de mover el nivel de Sell Stop?

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

Igor, la pregunta no era sobre el error en el código en sí, sino sobre por qué escribe un error durante la optimización, pero no durante una sola ejecución.

No soy bueno en telepatía, sólo estoy aprendiendo.

pero lo intentaré.... Suponiendo que hayas escrito el código al nivel adecuado, es posible que durante la optimización llegues al valor de la variable de entrada, lo que provoca un error crítico

.... Otra forma de decirlo es suponer que no sabes que el optimizador recibe las tareas por lotes, y que quizás haya un error en una de las tareas

.... También se puede suponer que si se inicializa una variable en el ámbito global (puede ser una llamada a una función durante la inicialización o el constructor de la clase) y el optimizador la inicializa una vez para las constantes y la estática (aunque parece que sólo para la estática - se me olvidó) para cada agente, para todo el tiempo de optimización, pero en una sola pasada cada pase...

... hz

 
Yura Fomin:

Hola. Tengo un malentendido:
¿Cómo puedo utilizar Trade\Trade.mqh para modificar una orden existente?
El comando OrderModify de Trade.mqh me exige establecer 7 parámetros, incluyendo el último: orden StopLimit, lo cual me confunde, porque no lo necesito para nada... Y no es necesario en la ejecución estándar...

Tengo un Sell Stop, quiero moverlo hacia arriba, después del mínimo, y no puedo hacerlo con OrderModify, y no entiendo cómo modificar la orden SellStop existente usando Trade\Trade.mqh

Tengo que usar el dilettage y una nueva orden.

¿Cómo puedo mover correctamente el nivel de Sell Stop?

Hay un ejemplo enPending Trailing

Pending Trailing
Pending Trailing
  • www.mql5.com
Советник относится к классу утилит. Работает со всеми отложенными ордерами установленными в терминале. Подтягивает отложенный ордер вслед за ценой. Например отложенные ордера 'Buy stop' и 'Sell limit'...
 
TheXpert:
No es necesario un punto y coma en ningún lugar después de las llaves, probablemente no en ningún lenguaje
Gracias. La ambigüedad de la sintaxis cuando ambos son correctos no es buena.
 
Igor Makanu:

No soy bueno con la telepatía, sólo estoy aprendiendo.

pero lo intentaré.... Suponiendo que su código está escrito a un nivel adecuado, es posible que durante la optimización llegue al valor de la variable de entrada que provoca un error crítico

.... Otra forma de decirlo es suponer que no sabes que el optimizador recibe las tareas por lotes, y que quizás haya un error en una de las tareas

.... También se puede suponer que si se inicializa una variable en el ámbito global (puede ser una llamada a una función durante la inicialización o el constructor de la clase) y el optimizador la inicializa una vez para las constantes y la estática (aunque parece que sólo para la estática - se me olvidó) para cada agente, para todo el tiempo de optimización, pero en una sola pasada cada pase...

... hz

)))))

¿Qué tiene que ver la telepatía con esto?

Hay un array, se inicializa y se utiliza sin problemas. Todo funciona. Pero al salir, hay un lío...

void OnDeinit(const int reason)
{
   //Print(ArraySize(netMLP));
   //Print(ArraySize(indicators)+1);
   for(int i = ArraySize(indicators); i >= 0; i--) delete netMLP[i];

Todo fue revisado. Pero la diferencia entre el comportamiento del analizador en el modo de optimización y en el de ejecución única es evidente. La pregunta es ¿por qué? Si hay algo mal en alguna parte, de alguna manera, debe estar mal en ambos sentidos. ¿No es así?

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

)))))

¿Qué tiene que ver la telepatía con esto?

Hay un array, se inicializa y se utiliza sin problemas. Todo funciona. Pero por otro lado, en la salida, tal catástrofe ocurre...

Todo fue revisado. Pero la diferencia entre el comportamiento del analizador en el modo de optimización y en el de ejecución única es evidente. La pregunta es ¿por qué? Si hay algo mal en alguna parte, de alguna manera, debe estar mal en ambos sentidos. ¿No es así?

Escríbelo por decencia:

for(int i = ArraySize(netMLP); i >= 0; i--) delete netMLP[i];

Por lo tanto, no hay garantía de que las dimensiones sean las mismas. Lo que son las matrices, nadie lo sabe.

 
Stanislav Korotky:

Escríbalo por el bien del decoro:

Por lo tanto, no hay garantía de que las dimensiones sean las mismas. Nadie sabe qué son las matrices.

Lo sé)))

Lo he sustituido. El error que he especificado ha desaparecido )))) Pero el otro sigue apareciendo:

2020.09.24 22:48:38.470 Core 3  pass 11877 tested with error "OnInit returned non-zero code 1" in 0:00:00.000

Repito: no había nada de eso en la versión anterior.

Tengo varias comprobaciones con return(INIT_FAILED);

Pero todas ellas están precedidas de huellas. Pero no hay huellas. (((

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

sólo escribir en el archivo:

- optimización de signos on/off

- número de agente

- y todas las variables utilizadas en OnDeanit()

sin esto no encontraras un bug - el optimizador funciona sin problemas, lo uso todo el tiempo

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

Lo hago)))

Reemplazado. El error que mencioné desapareció )))) Pero sigue apareciendo otro:

Repito, no existía en la versión anterior.

Haga doble clic en el pase de optimización correspondiente y obtenga un registro de ejecución único con todos los detalles, por qué falló la inicialización - fila y columna en la fuente.

 
Igor Makanu:

sólo escribir en el archivo:

- optimización de signos on/off

- número de agente

- y todas las variables utilizadas en OnDeanit()

sin esto no encontrarás el error - el optimizador funciona sin problemas, lo estoy usando todo el tiempo.

Ok, me conectaré escribiendo todo en el archivo de nuevo. tal vez habrá una razón... que no estaba antes...

Razón de la queja: