[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1069

 
goldtrader:

Realicemos un sencillo experimento que demuestre que el drawdown de una operación (cada una) NO aparece en el gráfico de balance/patrimonio.

Vamos a escribir un Asesor Experto de dos líneas de código:

Vamos a ejecutarlo en el gráfico D1 del EURUSD desde el 1 de mayo de 2010 hasta el 1 de agosto de 2010. Tendrá que comprar EUR a 1,2200 sin stop y cerrar la posición en take profit a 1,3000 Veremos el drawdown en el gráfico de balance/equidad y en el de visualización:

Como puede ver, en el gráfico de visualización (superior en la captura de pantalla) la reducción es visible, y en el gráfico de balance/patrimonio no lo es. Sólo hay un comercio allí. Veamos el informe del probador:

En el informe del probador, la reducción de la presión es FIGURANTE.

Espero que la pregunta se haya aclarado.

.

Tal vez, hay una pregunta "¿Por qué se hace así?" Esta es una pregunta no para nosotros, los usuarios, sino para los desarrolladores de MT4. En mi opinión, esto es erróneo porque el gráfico de balance/capital no muestra el exceso de apuestas.

Alexander, ¡muchas gracias! Muy detallado y minucioso, muchas gracias por su trabajo. ¿No responden aquí los desarrolladores de MT4?
 

Colegas, quizás alguien se haya encontrado con esto.

¿Existe un límite en el número de archivos abiertos al mismo tiempo? La 4 está bien, la 5 está abierta, pero no escribe en ella. No puedo entender qué es lo que está mal.

 

Hay un problema. Una operación debe abrirse cuando pase por el límite superior (compra) o inferior (venta) del corredor del indicador.

double barier = 0.08; // límites del corredor.

R() - función indicadora

Función para comprobar la condición de cruce del límite superior o inferior:

int RFilter()

{

if ( R(2)> -barier && R(1) < -barier ) return (-1);

si ( R(2)< barier && R(1) > barier ) devuelve (1);

}

El Asesor Experto abre una posición inmediatamente cuando el indicador pasa un límite (independientemente de cuál). Si sube, compra; si baja, vende.

 
dzhini:

Hay un problema. La operación debe abrirse cuando pase por el límite superior (compra) o inferior (venta) del corredor del indicador.

...

En realidad sucede que el EA abre una posición inmediatamente cuando el indicador pasa el límite (no importa cuál). Si sube - compra, si baja - vende.

Aumenta ligeramente el valor de la variable barier
 
costy_:

Pregunta para los entendidos

¿Puedo crear mi propia herramienta de negociación para mi probador?

Sustituya EURUSD30_2.fxt por el mío o por otro.

metaquotes\testerhistoria\EURUSD30_2.fxt

He intentado crear simple_csv2fxt, pero tester ha sustituido el archivo por el suyo propio.

Tal vez alguien tenga alguna experiencia en la creación, gracias.

Lo hay, lo hay. Y hay un buen artículo sobre el tema.
 
Reshetov:
Aumenta ligeramente el valor de la variable barier
No ayudó. ¿Podría deberse a un error de asignación de signos?
 
dzhini:
No ayuda. ¿Podría deberse a un error de asignación de signos?

Puedes leer los posos del café o cualquier otra cosa, ya que obviamente no hay suficiente información.

1. un indicador u oscilador:

2. Si es un oscilador, ¿tiene límites o no? Si lo hace, ¿cuáles son sus puntos altos y bajos?

3. ¿Quizás el problema no esté en el código de la función anterior sino en el de su interpretación?

Dado que aquí no hay telépatas, y que toda la información necesaria que tienes está clasificada, la pregunta es la respuesta. Es decir, en base a la información que has proporcionado, el aumento de la variable debería haber resuelto el problema.

 
Reshetov:

Puede leer los posos del café u otra cosa, ya que la información es claramente insuficiente.

1. un indicador u oscilador:

2. Si es un oscilador, ¿está limitado o no? Si lo hace, ¿cuál es su máximo y su mínimo?

3. ¿Quizás el problema no esté en el código de la función anterior, sino en el de su interpretación?

Como aquí no hay telépatas y tienes toda la información necesaria clasificada como secreta, la pregunta es la respuesta. Es decir, a simple vista, a juzgar por la información que proporcionas, aumentar la variable debería haber solucionado el problema.

Se trata de un indicador con la siguiente fórmula:

double R(int shift)
{
double coef1 = 100.0 * (iMA(NULL, 0, perfast, 0,MODE_LWMA, PRICE_CLOSE, shift) - iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift)) * iATR(NULL, 0, perslow, shift);
double coef2 = coef1 / iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift) / iATR(NULL, 0, perslow, shift);
double main =( MathExp(2.0 * coef2) - 1.0) / (MathExp(2.0 * coef2) + 1.0);

retorno (principal);

}

Restricciones: (-1;1)

 
dzhini:

Este es un indicador con esta fórmula:

double R(int shift)
{
double coef1 = 100.0 * (iMA(NULL, 0, perfast, 0,MODE_LWMA, PRICE_CLOSE, shift) - iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift)) * iATR(NULL, 0, perslow, shift);
double coef2 = coef1 / iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift) / iATR(NULL, 0, perslow, shift);
double main = (MathExp(2.0 * coef2) - 1.0) / (MathExp(2.0 * coef2) + 1.0);

retorno (principal);

}

Restricciones: (-1;1)

Su función debe funcionar correctamente según las condiciones mencionadas en los comentarios:

int RFilter()

{

if ( R(2)> -barier && R(1) < -barier ) return (-1); // Postura corta si el valor del indicador en la barra anterior es mayor que la barra inferior y la actual es menor que esta barra

if ( R(2)< barier && R(1) > barier ) return (1); // Postura larga si el valor del indicador está por debajo de la barra superior en la barra anterior y está por encima de esta barra en la actual

return(0); // No hacer nada en los demás casos.

}

 
Reshetov:

Entonces su función debería funcionar correctamente para las condiciones de los comentarios:

int RFilter()

{

if ( R(2)> -barier && R(1) < -barier ) return (-1); // Postura corta, si el valor del indicador en la barra anterior es mayor que la barra inferior y la actual es menor que esta barra

if ( R(2)< barier && R(1) > barier ) return (1); // Postura larga si el valor del indicador está por debajo de la barrera superior en la barra anterior y está por encima en la barra actual

return(0); // Ninguna acción en los demás casos.

}

Pero no funciona :(