Funciones útiles de KimIV - página 108

 
Sinceramente, me alegra mucho ver a un legendario con características propias de nuevo en el foro activo, aunque personalmente no entiendo mucho de ellas debido a mi ignorancia de los fundamentos de la programación en este lenguaje. Pero el hecho en sí es sorprendente, ¡acogo a KimIV con todo mi ser!
 
 

Hola, estoy buscando una función, ¿tienen una lista?

Necesito que se cree un archivo al final de la prueba, que contenga los datos de la reducción de cada orden. Preferiblemente, este archivo no se crearía durante la prueba, sino al final del procesamiento único del historial de operaciones...

 
No tengo tal función, pero en un futuro próximo planeo publicar una función que calcule el máximo drawdown en pips de las posiciones actualmente abiertas. Esta función analiza el paso del orden por las barras. El plazo es uno de los parámetros. Cuanto más pequeño sea el plazo, más preciso será el cálculo de la reducción máxima. Creo que podrás hacer lo que necesitas basándote en esta función.
 
KimIV:
No tengo esa función, pero estoy planeando publicar la función que calcula la reducción máxima de puntos de las posiciones abiertas actuales en un futuro próximo. Esta función analiza el paso de órdenes por barras. El plazo es uno de los parámetros. Cuanto más pequeño sea el plazo, más preciso será el cálculo de la reducción máxima. Creo que podrás hacer lo que necesitas basándote en esta función.

Si la función también tiene un registro en el archivo - sería genial...

Pero no veo ninguna necesidad particular de calcular el drawdown para las posiciones actuales. Creo que esta función es más útil para un probador (análisis del trabajo del sistema) ....

 
renoshnik:

Si también se puede escribir en un archivo en la función, sería genial...

Pero no veo ninguna necesidad particular de calcular el drawdown para las posiciones actuales. Creo que esta función es más útil para un probador (análisis del sistema) ....

No hay diferencia entre "calcular la reducción de cada orden en tiempo real y enviar todos los datos a un archivo" y "calcular la reducción de cada orden y enviar los datos a un archivo al final de la prueba". Excepto por el hecho de que la primera opción es bastante fácil de ser extremadamente precisa, y la segunda opción sólo es precisa si se recuerda el historial de ticks de cada orden.
 
renoshnik:

Hola, estoy buscando una función, ¿tienen una lista?

Necesito que se cree un archivo al final de la prueba, que contenga los datos de la reducción de cada orden. Preferiblemente, este archivo no se crearía durante la prueba, sino al final del procesamiento único del historial de operaciones...

Yuri, acabo de arrancar el código de un viejo Asesor Experto...
Lo he comprobado y parece que funciona correctamente.
Añade el código de deinit() a tus búhos y copia tres funciones debajo de deinit, una de ellas es la de Igor ))
.......
El código es flojo... Pero mientras Igor lo haga bonito, creo que tendrás suficiente para experimentar.
Archivos adjuntos:
 
lasso:
Yuri, he sacado apresuradamente el código de un viejo EA...
Lo he comprobado, parece que funciona correctamente.
Añade el código de deinit() a tus búhos y copia tres funciones debajo de deinit, una de ellas es la de Igor ))
.......
El código es flojo... Pero mientras Igor lo haga bonito, creo que tendrás suficiente para experimentar.

¡¡¡¡¡¡¡¡¡¡Genial, gracias !!!!!!!!!! Lo investigaré....
 

Igor, ¡buenas tardes!

Puse su función CrossPointOfLines (calcula las coordenadas del punto de intersección de dos líneas) en mi Asesor Experto. Como resultado, sigue escribiendo en los comentarios: ¡No ha podido encontrar el punto de intersección! Y no puede encontrar el punto de intersección.

¿Tal vez sea porque tengo otros objetos en mi gráfico en forma de líneas de tendencia? O tal vez tú o alguno de los habituales de este hilo pueda decirme cuál es mi problema?

Gracias de antemano.

Código - en el archivo adjunto.

Archivos adjuntos:
 

¡HOORAY! Me lo imaginé yo mismo) Otras tendencias se interpusieron...

Como no se me da muy bien hacer amigos de los arrays, he hecho una función simplificada al máximo. De momento parece que funciona).

//+------------------------------------------------------------------+
double Middle(string nm1,string nm2)
  {
  double M;
  double x0, x1, y1, x2, y2, x3, y3, x4, y4;
  double k1, k3;
  
  if(ObjectFind(nm1)==0 && ObjectFind(nm2)==0)
    {
    x1=ObjectGet(nm1, OBJPROP_TIME1);
    x2=ObjectGet(nm1, OBJPROP_TIME2);
    y1=ObjectGet(nm1, OBJPROP_PRICE1);
    y2=ObjectGet(nm1, OBJPROP_PRICE2);
    
    x3=ObjectGet(nm2, OBJPROP_TIME1);
    x4=ObjectGet(nm2, OBJPROP_TIME2);
    y3=ObjectGet(nm2, OBJPROP_PRICE1);
    y4=ObjectGet(nm2, OBJPROP_PRICE2);
    
    k1=(y2-y1)/(x2-x1); 
    k3=(y4-y3)/(x4-x3);
    
    if(k1 != k3)
      {
      x0 = (y1 - y3 + k3*x3 - k1*x1)/(k3 - k1);
      M = y1 + k1*(x0 - x1);
      }
    }
  return(M);
  }
//+----------------------------------------------------------------------------+
Razón de la queja: