Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 486

 

Pregunta: ¿el probador tiene en cuenta el intercambio?

Calculado en Excel (cuenta de céntimos) y obtenido un resultado extraño

P.P. Tipo de datos Precio del lote MaxHigh MaxEqDrd
1 2014.06.12 09:52 vender 0.1 1.6824 0.16824 1.7179 -3.55
2 2014.06.12 15:18 vender 0.2 1.6831 0.33662 1.7179 -6.96
3 2014.06.12 17:52 vender 0.3 1.6836 0.50508 1.7179 -10.29
4 2014.06.12 19:10 vender 0.5 1.6839 0.84195 1.7179 -17.00
5 2014.06.12 23:00 vender 0,8 1,6845 1,3476 1,7179 -26,72
6 2014.06.16 09:59 vender 1,3 1,6985 2,20805 1,7179 -25,22
7 2014.06.19 09:58 vender 2.1 1.7017 3.57357 1.7179 -34.02
8 2014.06.19 11:21 vender 3.4 1.7018 5.78612 1.7179 -54.74
9 2014.06.19 20:40 vender 5,5 1,7033 9,36815 1,7179 -80,30
10 2014.06.19 22:12 vender 8,9 1,7036 15,16204 1,7179 -127,27
11 2014.06.20 05:10 vender 14.4 1.7047 24.54768 1.7179 -190.08
12 2014.06.20 05:22 vender 23.3 1.7049 39.72417 1.7179 -302.90
13 2014.06.26 12:38 vender 37.7 1.7030 64.2031 1.7179 -561.73
14 2014.06.26 15:18 vender 61.0 1.7033 103.9013 1.7179 -890.60
15 2014.06.27 06:51 vender 98.7 1.7050 168.2835 1.7179 -1273.23
16 2014.06.30 17:37 vender 100.0 1.7079 170.79 1.7179 -1000.00
17 2014.06.06.30 17:37 vender 59,7 1,7079 101,96163 1,7179 -597,00
18 2014.07.01 09:03 vender 100,0 1,7100 171 1,7179 -790,00
19 2014.07.01 09:03 vender 100.0 1,7100 171 1,7179 -790.00
20 2014.07.01 09:03 vender 58.4 1,7100 99,864 1,7179 -461.36
21 2014.07.01 11:30 vender 100.0 1,7110 171.1 1,7179 -690.00
22 2014.07.01 11:30 vender 100.0 1,7110 171.1 1,7179 -690.00
23 2014.07.01 11:30 vender 100,0 1,7110 171,1 1,7179 -690,00
24 2014.07.01 11:30 vender 100,0 1,7110 171,1 1,7179 -690,00
25 2014.07.01 11:30 vender 18.1 1.7110 30.9691 1.7179 -124.89
26 2014.07.02 02:33 vender 100.0 1.7145 171.45 1.7179 -340.00
27 2014.07.02 02 02:33 vender 100.0 1.7145 171.45 1.7179 -340.00
28 2014.07.02 02:33 vender 100.0 1.7145 171.45 1.7179 -340.00
29 2014.07.02 02:33 vender 100.0 1.7145 171.45 1.7179 -340.00
30 2014.07.02.02:33 vender 100.0 1.7145 171.45 1.7179 -340.00
31 2014.07.02 02:33 vender 100.0 1.7145 171.45 1.7179 -340.00
32 2014.07.02 02:33 vender 76.5 1.7145 131.15925 1.7179 -260.10
33 2014.07.02.02 11:32 vender 100.0 1.7176 171.76 1.7179 -30.00
34 2014.07.02 11:32 vender 100.0 1.7176 171.76 1.7179 -30.00
35 2014.07.02 11:32 vender 100.0 1,7176 171.76 1,7179 -30.00
36 2014.07.02 11:32 vender 100,0 1,7176 171,76 1,7179 -30,00
37 2014.07.02 11:32 vender 100,0 1,7176 171,76 1,7179 -30,00
38 2014.07.02 11:32 vender 100,0 1,7176 171,76 1,7179 -30,00
39 2014.07.02 11:32 vender 100,0 1,7176 171,76 1,7179 -30,00
40 2014.07.0202 11:32 vender 100,0 1,7176 171,76 1,7179 -30,00
41 2014.07.02 11:32 vender 100,0 1,7176 171,76 1,7179 -30,00
42 2014.07.0202 11:32 vender 100,0 1,7176 171,76 1,7179 -30,00
43 2014.07.02 11:32 sell 94.6 1.7176 162.48496 1.7179 -28.38
Total:2865,5 4909,88611 -12756,34
Precio medio de apertura -> 1,7134

Máximo 04.07.2014 1.7179

Drawdown en pips -> 0.0045
Drawdown en moneda ->12756,34

Reducción según el código -> 13823,00
Reducción según el informe del probador ->23669,03

TP - > 1.7084
Beneficio en pips -> 0.0050
Beneficio según cálculo - > 14465,91

Beneficio según informe - > 13915,05


¿Cómo es que la reducción no tiene sentido, especialmente en el informe del probador? Antes no había posiciones cerradas.

 

Este es el aspecto de la situación en el gráfico



 
He adjuntado el cálculo en excel - ¡quizás he sido un estúpido ahí!
Archivos adjuntos:
Calculation.zip  104 kb
 

-Aleks-:

La variable global es relevante para el trabajo de mercado real - necesito información de prueba - por eso no me molesté con ella.

No me refería a GlobalVariable, sino al nivel de las variables globales.

-Aleks-:

Lo que es la equidad y el balance - por supuesto que lo sé, pero todavía no sé cómo se calcula el drawdown. Mis ejemplos de código muestran que traté de tomar tanto el balance como los fondos como máximos y de manera similar tomé el balance y los fondos como mínimos.

No he dominado la fórmula para calcular el drawdown en el probador, pero puede intentar calcular la diferencia entre su saldo antes de la apertura de la orden y el capital mínimo antes del cierre de la orden. O bien, calcule los fondos mínimos y máximos y la diferencia máxima será la detracción máxima.

-Aleks-:

¿Por qué crees que la desigualdadsi (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; nunca se cumple? Sólo no se cumple en la barra cuando se alcanza el nuevo máximo de saldo (o la equidad - todavía no es cierto), pero en ese momento fijo la reducción de beneficiosProfitMin=ProfitNew.

Esto es más relevante ya que el drawdown máximo no suele alcanzarse en el momento del cierre de la orden, y el objetivo es calcular la cantidad media de dinero necesaria para el trabajo del EA.

Estoy de acuerdo, no estuve lo suficientemente atento.

Pero la detracción no es por día, sino por la vida de la(s) orden(es) y después el patrimonio se convierte en saldo. Este es exactamente el lugar en el gráfico del probador donde las líneas de equidad y equilibrio están en un punto.

 
Alexey Viktorov:

No me refería a GlobalVariable, sino al nivel de la variable global.

Aparentemente te entendí mal - mis variables se inicializan antes del bloque de ejecución de código int start(), por lo que no debería haber ningún problema con el mashing o algo así... ¿O hay otra razón?


Alexey Viktorov:

No me he metido en la fórmula de cálculo del drawdown en el probador, pero podemos intentar calcular la diferencia entre el saldo antes de la apertura de la orden y el capital mínimo antes del cierre de la orden. O bien, puede intentar contar la diferencia entre los fondos máximos y mínimos y la diferencia máxima será la detracción máxima.

Y si hay muchos pedidos, ¿hay que contar para cada uno de ellos y elegir el mayor? En mi ejemplo, podemos ver que el drawdown calculado fue dos veces menor en comparación con el resultado del probador y según su algoritmo será aún menor.

Alexey Viktorov:

La frecuencia de las anotaciones en el fichero es una cuestión puramente personal, pero la detracción no se cuenta para el día, sino para toda la vida de la(s) orden(es), y entonces los fondos se convierten en saldo. Se trata exactamente de esos lugares en la carta del probador donde las líneas de equidad y equilibrio están en un punto.

No importa cuando el probador tenga en cuenta el drawdown, el hecho es que será máximo en un día determinado y el resultado debería coincidir, y no lo hace, y eso es sorprendente.

Necesito el drawdown por día para probar la cartera de operaciones - para entender cuántos fondos pueden ser necesarios en un momento dado y con qué frecuencia.

 

Desde el punto de vista matemático (la reducción resultó ser de 23497,1 frente a los 23669,03 del probador), la reducción se aproxima al tamaño del segmento que simboliza la variación del depósito, es decir, la diferencia entre el valor máximo del capital y el valor mínimo del capital.

 
-Aleks-:

Debo haberte entendido mal - mis variables se inicializan antes del bloque de ejecución de código int start(), por lo que no debería haber ningún problema de machaqueo o algo así... ¿O hay otra razón?


Y, si hay muchos pedidos, ¿debemos calcular para cada pedido y seleccionar el mayor? En mi ejemplo puedes ver que el drawdown calculado es casi la mitad del del probador y según tu algoritmo será incluso menor.

No importa cuando el probador tenga en cuenta el drawdown, el hecho es que será máximo en un día determinado y el resultado debería coincidir, y no lo hace, y eso es sorprendente.

Necesito el drawdown por día para probar la cartera de operaciones - para entender cuántos fondos podrían necesitarse en un momento dado y con qué frecuencia.

No exactamente. No para cada pedido, sino desde la apertura del primer pedido hasta el cierre del último. Es decir, desde OrdersTotal() == 0 hasta OrdersTotal() == 0.

Este es el punto que va desde la apertura de la primera orden hasta el cierre de la última; debemos determinar el drawdown, ya que el lanzamiento real tendrá lugar en cualquier momento, y en consecuencia, el drawdown puede ocurrir durante períodos de 24 horas.

Todo lo demás... No me gusta mirar en la investigación de otras personas, así como en el código largo, puedo discutir formas de resolver algunos problemas, pero no ejemplos de código. Pero es extraño que nadie haya corregido mis suposiciones sobre cómo se calcula la detracción...

De todos modos, no me gusta su método de cálculo de la reducción de la deuda. Me parece que se imprime tan a menudo, que hay que tener mucha paciencia para averiguarlo.

 

Karputov Vladimir:
Не кусок, а программу, которую можно скомпилировать и прогнать в режиме отладки.

Perdona que te moleste, mientras limpiaba el programa para encontrar el problema de la parada del probador, encontré en el texto del programa una violación de su algoritmo. La compilación iba bien, pero el probador se detuvo sin indicar el punto de fallo
 
Alexey Viktorov:

No exactamente. No para cada orden, sino desde la apertura de la primera orden hasta el cierre de la última. Es decir, desde OrdersTotal() == 0 hasta OrdersTotal() == 0.

Este es el punto desde el momento de la apertura de la primera orden hasta el cierre de la última; debemos determinar el drawdown ya que el lanzamiento real tendrá lugar en cualquier momento, no a las 0:00, por lo que el drawdown puede ocurrir durante un periodo de 24 horas.

Por lo tanto, en este ejemplo estas condiciones se observan exactamente - las órdenes se abren y se controlan para cerrar en cada tick.

Si efectivamente el cálculo va del máximo al mínimo de la equidad, entonces este enfrentamiento me ayudará a repensar las lecturas del probador...

Alexey Viktorov:

De todas formas, no me ha gustado tu método de cálculo de la reducción. Me parece que se imprime tan a menudo que hay que tener mucha paciencia para averiguarlo.

Lo que me interesa es cuánto dinero necesita realmente el EA, es decir, el drawdown real (pérdida actual) desde la apertura de la orden hasta su cierre, menos cualquier pérdida de beneficios.

Se imprime una vez al día, lo que no es nada frecuente, y es necesario para ciertos fines.

 
¡Hola!

A primera vista, la tarea parece tan sencilla como tres céntimos. PERO! ....
Hay una línea de cualquier oscilador en la ventana del indicador, que se menea con respecto a "0" con diferente amplitud.
El problema real es:
- En el cruce "0" de abajo a arriba, dibuje una flecha en el borde inferior de la ventana del indicador,
- En el "0" cruzando desde arriba hacia abajo, para dibujar una flecha cerca del borde superior de la ventana del indicador,
- en el autoescalado del gráfico del oscilador en la ventana del indicador, las flechas deberían permanecer automáticamente en sus bordes de la ventana del indicador.
Es decir, al desplazar el gráfico hacia adelante y hacia atrás por el historial, o al cambiar su escala horizontal, las flechas deberían permanecer siempre en los límites de la ventana del indicador de forma automática.

Por favor, no des consejos, "ayúdame con el dinero")). Necesito un ejemplo de un código que funcione, que implemente esta función, o un enlace a uno.

Gracias de antemano.
Razón de la queja: