Errores, fallos, preguntas - página 720

 

Hola a todos.

Me he encontrado con este error (o quizás estoy entendiendo mal algo)

Al mirar el historial de un mes, muestra datos adecuados, es decir, ganado 740, intercambio -250

Al mismo tiempo, cuando veo el período completo, 500 puntos ganados y el intercambio es casi lo mismo

Por eso no entiendo cómo puede ser así cuando los ingresos de todo el periodo son inferiores al total mensual.

Si lo necesita, puedo adjuntar los informes del historial

 
tol64:

Por eso, si usted coloca una quinta orden pendiente de Buy Stop con una posición abierta de 3 lotes y 4 órdenes existentes de Buy Stop de 3 lotes cada una (con un límite de 15 lotes), no debería tener éxito.

En general, sí - en términos de lo que se describe en la ayuda.

Pero, lógicamente, no necesariamente. En los mercados bursátiles, sólo hay órdenes limitadas en la pila, mientras que las órdenes stop se almacenan en el servidor del corredor y tienen dos parámetros: el precio de activación ("Precio" en MT) y el precio de la orden limitada que se coloca (el peor precio al que la operación está dispuesta a ejecutarse). Esto es similar a BuyStopLimit y SellStopLimit en MT5, sólo que el Límite puede ser igual al precio de parada o mayor (para BuyStopLimit) o menor (para SellStopLimit). En los mercados bursátiles, el establecimiento de un Límite más alto (para comprar) da lugar a una operación, mientras que esto no se puede hacer en la MT. Así, en los mercados bursátiles, especialmente los no desarrollados (por ejemplo, la Bolsa de Ucrania), con bastante frecuencia (y especialmente en el día de vencimiento de un índice trimestral de futuros entre las 16:30-16:35) los stops no tienen tiempo de actuar y la copa se llena de órdenes limitadas, que en condiciones normales, llevarían inmediatamente a la ejecución.

Así que - Límite en el mercado - compromiso firme de compra / venta (si el dinero de repente se convierten en escasos, el corredor puede eliminar la orden, pero antes de lo que vendrá a la ejecución), mientras que STOP - simplemente un registro en el corredor de servidor, por lo que en el momento de alcanzar el precio de activación el corredor puede estimar los fondos libres y decidir - exponer límite o no. Por eso digo que para los límites hay que cumplirlos, pero para los topes, en teoría, no hay que hacerlo.

 
Yedelkin:

¿Tienes a DoubleToString? :)

Ah, mira NormalizeDouble:

Hay que tener en cuenta que un número normalizado cuando se emite en el Diario utilizando Print() puede contener más decimales de los que cabría esperar.

   double pi=M_PI;
   Print("pi=",DoubleToString(pi,16));
      
   double pi_3=NormalizeDouble(M_PI,3);
   Print("NormalizeDouble(pi,3) = ",DoubleToString(pi_3,16))
   ;
   double pi_8=NormalizeDouble(M_PI,8);
   Print("NormalizeDouble(pi,8) = ",DoubleToString(pi_8,16));
   
   double pi_0=NormalizeDouble(M_PI,0);
   Print("NormalizeDouble(pi,0) = ",DoubleToString(pi_0,16));
/*
   Результат:
   pi= 3.1415926535897931
   NormalizeDouble(pi,3)= 3.1419999999999999                          <-----------
   NormalizeDouble(pi,8)= 3.1415926499999998                          <-----------
   NormalizeDouble(pi,0)= 3.0000000000000000
*/

¿No hay nada confuso?

 
victorg:

Ah, mira NormalizeDouble:

¿Algo confuso?

No, no hay nada confuso. En su ejemplo

void OnStart()
  {
  double a=2000000.0/3.0;
  Print(DoubleToString(a,30));
  }
no había ninguna referencia al uso de la función NormalizeDouble() y a los números normalizados. En consecuencia, mi comentario"¿Has llegado a DoubleToString?:)" fue acompañado por una cita de la funciónDoubleToString() sin una sombra de vergüenza.Y nadie ha refutado aún la relevancia de esta cita.
 
Yedelkin:

No, nada es confuso. En su ejemplo.

Nunca se hizo referencia al uso de la función NormalizeDouble() y a los números normalizados. En consecuencia, mi comentario"¿Has llegado a DoubleToString?:)" fue acompañado por una cita de la funciónDoubleToString() sin una sombra de vergüenza.Y nadie ha refutado aún la relevancia de esta cita.

En realidad, no me refiero a tu comentario, sino al muelle de NormalizeDouble().

 
notused:

En general, sí - en términos de lo que se describe en la ayuda.

Pero, lógicamente, no necesariamente. En los mercados bursátiles, sólo hay órdenes limitadas en la pila, mientras que las órdenes stop se almacenan en el servidor del corredor y tienen dos parámetros: el precio de activación ("Precio" en MT) y el precio de la orden limitada que se coloca (el peor precio al que la operación está dispuesta a ejecutarse). Esto es similar al BuyStopLimit y SellStopLimit en MT5, sólo que el Límite puede ser igual al precio de parada o mayor (para BuyStopLimit) o menor (para SellStopLimit). En los mercados bursátiles, el establecimiento de un Límite más alto (para comprar) da lugar a una operación, mientras que esto no se puede hacer en la MT. Así, en los mercados bursátiles, especialmente los no desarrollados (por ejemplo, la Bolsa de Ucrania), con bastante frecuencia (y especialmente en el día de vencimiento de un índice trimestral de futuros entre las 16:30-16:35) los stops no tienen tiempo de actuar y la copa se llena de órdenes limitadas, que en condiciones normales, llevarían inmediatamente a la ejecución.

Así que - Límite en el mercado - compromiso firme de compra / venta (si el dinero de repente se convierten en escasos, el corredor puede eliminar la orden, pero antes de lo que vendrá a la ejecución), mientras que STOP - simplemente un registro en el corredor de servidor, por lo que en el momento de alcanzar el precio de activación el corredor puede estimar los fondos libres y decidir - exponer límite o no. Por eso digo que para los límites hay que cumplirlos, mientras que para las paradas, en teoría, no hace falta.

Gracias por la explicación detallada.

Valery, ¿has intentado implementar una estrategia automática en MT5 Strategy Tumbler? Lo intenté hace un mes y no funcionó, nadie respondió en el foro. No entiendo si es un error o un malentendido por mi parte. Arroja algo de luz. :)

 

¡Buenas tardes!

Por favor, aconsejadme, tengo un indicador iCustom en un cuerpo de programa normal, funciona bien y recibe la manivela.

Si lo coloco en la librería EX5 obtengo indicator handle=-1 y el programa principal no llama al indicador:

"La carga de DZMACD EURGBP,M15 falló"
"No se puede cargar el indicador personalizado 'DZMACD' [4002]"

Al mismo tiempo, los indicadores estándar, como iMA o iMACD, funcionan normalmente en la misma biblioteca ex5, obtienen el mango.

No sé qué estoy haciendo mal o es un error?

Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
Технические индикаторы / iCustom - Документация по MQL5
 
En la estructuraMqlDateTime

intdía;// día

¿significa el día del mes?
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура даты - Документация по MQL5
 
victorg:

En realidad, no me refería a tu comentario, sino al documento NormalizeDouble().

En realidad, el mensaje estaba redactado así:

victorg:

Yedelkin:

¿Llegaste a DoubleToString? :)

Ah, mira NormalizeDouble:

¿No hay nada que te avergüence?

Es decir, había una cita directa de "mi comentario" con la sugerencia "busca otra cosa ahí arriba" y la pregunta "¿es confuso?".

Si quisieras presentar sólo los resultados de una nueva investigación en un formulario "...sobre un muelle por NormalizeDouble()" - lo escribirías así, sin citar información innecesaria. Supongo que sí :/

Sin embargo, dado que tu post utilizó una referencia con nombre y exactamente a mi réplica - tenía que aclarar que NormalizeDouble() no tenía nada que ver con mi réplica ni con tu post original, que me tomé la libertad de comentar.

 
Fia:

¡Buenas tardes!

Por favor, aconsejar, tengo iCustom indicador en el cuerpo habitual del programa funciona bien, se handel, todo funciona.

Si lo coloco en la biblioteca EX5 obtengo Handel= -1 y el programa principal no llama al indicador:

"La carga de DZMACD EURGBP,M15 falló"
"No se puede cargar el indicador personalizado 'DZMACD' [4002]"

Al mismo tiempo, los indicadores estándar, como iMA o iMACD funcionan bien en la misma biblioteca ex5, consiguen el mango.

No puedo entender qué estoy haciendo mal o es un error?

¿Están bien los ajustes de los indicadores personalizados en la biblioteca?

ERR_WRONG_INTERNAL_PARAMETER

4002

Parámetro erróneo en la llamada a una función interna del terminal del cliente