Errores, fallos, preguntas - página 1676

 

Señores, ¿cómo declarar una función en MKL que tome un puntero (referencia en µl) a cualquier cosa (análogo a void* en C/C++ )? No me refiero al reparto por árbol genealógico, sino al reparto por tipos no relacionados. Al menos toma un array de cualquier tipo.

void f(... &...) {}

void mql_main()
{
  int i[2];
  double d[2];
  f(i);
  f(d);
}
Entiendo todas las dificultades relacionadas con el "type aliasing" y las optimizaciones del compilador.
 
pavlick_:

Señores, ¿cómo declarar una función en MKL que tome un puntero (referencia en µl) a cualquier cosa (análogo a void* en C/C++ )? No me refiero al reparto por árbol genealógico, sino al reparto por tipos no relacionados. Al menos toma un array de cualquier tipo.

Entiendo todas las dificultades relacionadas con el "type aliasing" y las optimizaciones del compilador.
Creo que lo que quieres hacer, lo puedes hacer sólo a través de los métodos de clase en MQL5. Aunque, estoy esperando más respuestas, no tengo mucha experiencia en ello.
 
pavlick_:

Señores, ¿cómo declarar una función en MKL que tome un puntero (referencia en µl) a cualquier cosa (análogo a void* en C/C++ )? No me refiero al reparto por árbol genealógico, sino al reparto por tipos no relacionados. Al menos toma un array de cualquier tipo.

Todos los trapos relativos al "type aliasing" y a las optimizaciones del compilador los entiendo.

Bueno, ya han añadido punteros void *, ¿no? Además, puede utilizar plantillas, como

template<typename T>

void f(T &parameter)

{

 
Stanislav Korotky:

Es como si ya hubieran añadido punteros void *. Además, puede utilizar plantillas, como

template<typename T>

void f(T &parameter)

{

Los punteros MKL (descriptores) desaparecen inmediatamente. El problema estaba en la declaración de la función importada de la dll, las plantillas no se pueden picar ahí. He descubierto que se puede hacer de esta manera:

#import ...
  int send(..., char &buf[], ...);
  int send(..., short &buf[], ...);
#import
Y todo estará vinculado a una única función. Eso resuelve mi problema. Gracias a los que han respondido por la respuesta.
 
Itum:
Por favor, dígame cómo encontrar la reducción máxima en Excel... Dame la fórmula...
Si como en el probador de la equidad, es difícil en Excel, porque el probador tiene en cuenta no sólo la desviación negativa, sino también la desviación positiva - el beneficio potencial sub-recibido.
 
-Aleks-:
Si como en el probador de la equidad, es complicado en Excel, porque el probador tiene en cuenta no sólo la desviación negativa, sino también la desviación positiva - el beneficio potencial sub-recibido.
No hay nada complicado. La primera columna representa los valores de la renta variable, la segunda columna representa el valor máximo de la renta variable desde la primera hasta la fila actual y la tercera columna representa la reducción, la diferencia entre la segunda y la primera columna. Y luego toma el máximo de la tercera columna.
 
Sergei Vladimirov:
No hay nada complicado. La primera columna muestra los valores de la equidad, la segunda columna muestra la equidad máxima desde la primera hasta la fila actual, y la tercera columna muestra el drawdown, la diferencia entre la segunda y la primera columna. Bien, toma el máximo de la tercera columna.
Estos cálculos no se ajustan a los datos de los probadores. Tenemos que considerar el cambio en el patrimonio entre la apertura y el cierre de la posición, ya que el cambio máximo en el patrimonio tiene que ser introducido en una columna separada y el módulo tiene que ser considerado y luego el máximo tiene que ser elegido de esta columna. Se trata de una operación rentable, de lo contrario es necesario identificar el punto de máxima ganancia de la equidad y hacer cálculos sobre el mismo....
 
-Aleks-:
Dichos cálculos no se corresponderán con los datos del probador. Es necesario considerar el cambio en el patrimonio entre la apertura y el cierre de la posición - el cambio máximo en el patrimonio tiene que ser colocado en una columna separada e incluida en el módulo, y luego el máximo tiene que ser seleccionado de esta columna. Esto es relevante para el comercio rentable, mientras que en el caso opuesto tenemos que definir el punto de máxima ganancia por la equidad y hacer cálculos en él.....
¿Qué tiene que ver el probador con esto? La pregunta era sobre Excel. No entiendo por qué es importante tratarlo en este hilo. En esencia no se necesita ningún módulo, la reducción = último máximo menos el valor actual, el resultado siempre será no negativo. O viceversa, valor actual menos el último máximo, entonces el resultado será siempre negativo o cero. En el primer caso toma el máximo de la columna, en el segundo toma el mínimo.
 
Sergei Vladimirov:
¿Qué tiene que ver esto con el probador? La pregunta era sobre Excel. No está claro por qué está en este hilo. En esencia - no se necesita ningún módulo, reducción = último máximo menos valor actual, el resultado siempre será no negativo. O viceversa, valor actual menos el último máximo, entonces el resultado será siempre negativo o cero. En el primer caso toma el máximo de la columna, en el segundo toma el mínimo.
Drawdown en el probador = máximo - mínimo, no importa en qué momento se cerró la posición. En otras palabras, si la posición va en su dirección al principio, y luego se cierra en la dirección opuesta, la reducción de la equidad es la sección desde el máximo hasta el mínimo, y no desde el precio de apertura hasta el precio de cierre. Este es el caso de MT4.
 
-Aleks-:
Drawdown en el probador = máximo - mínimo, no importa en qué momento se cerró la posición. En otras palabras, si la posición comenzó yendo en su dirección, pero se cerró en la dirección opuesta, la reducción de la equidad es la sección desde el máximo hasta el mínimo, y no desde el precio de apertura hasta el cierre de la posición. Este es el caso de MT4.
No he escrito nada sobre los precios de apertura y cierre.