[¡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 669

 
Diger:

¿Le ha pasado a alguien?

No hay PÉRDIDAS en el registro del probador de estrategias y la curva del gráfico va constantemente hacia abajo.

¿Qué significa eso?

La fuerza de la gravedad... :)) ¿No estás en Júpiter? :)) Lo siento, es una broma...
 
Diger: ¿Le ha pasado a alguien? No hay PÉRDIDAS en el registro del probador de estrategias y la curva del gráfico va constantemente hacia abajo. ¿Qué significa eso?
El diferencial ha bajado. Demasiados intercambios. Abrir la carta del probador.
 
artmedia70:
El poder de la gravedad... :)) ¿No estás en Júpiter? :)) Lo siento, es una broma...

Yo también soy un poco friki. Quizá lo sea de verdad. ....
 
Richie:
Drenaje en la propagación. Demasiados intercambios. Abrir la carta del probador.


Tenías razón.

Frente a los 2p habituales ahora tenemos 26...

Gracias.

 
Diger:


Resultó tener razón.

Frente a los 2p habituales ahora tenemos 26...

Gracias.

Añade una condición para el spread máximo por encima del cual no se abren operaciones (pero las que ya están abiertas siguen siendo controladas por el EA).

 
chief2000:

Añade una condición para el spread máximo por encima del cual no se abren operaciones (pero las que ya están abiertas siguen siendo controladas por el EA).


Antes no creía que fuera necesario.

Pero el probador de hoy me mostró esta necesidad.

 

Por cierto, también me resulta interesante y poco claro. He añadido a mi Asesor Experto un lote de pérdidas por un principio: encontrar la mayor pérdida y abrir una posición opuesta con el lote de esa pérdida multiplicado por el coeficiente calculado a partir del estado actual del mercado en todos los TFs y la posición relativa a la pérdida abierta y el precio actual, así como el propio gráfico de precios (como - si realmente vale la pena abrir un lote, si el precio se movió en la dirección correcta...). Respectivamente, cuando el beneficio total de estas dos posiciones es de unos 50-60 puntos - cerramos las dos, la rentable al principio.

Así, me di cuenta de que el sistema de comercio rentable, que da beneficios estables durante dos años en el probador, pero tiene en su arsenal de drawdowns salvajes, que no puede ser aceptado, si uso bucles, falla dentro de dos meses ... ¿Cuál podría ser la razón? Sólo una suposición rápida. No guardé las estadísticas de drenaje porque "¿por qué debería hacerlo?"

 

Pregunta:

Tengo que referirme a la misma secuencia de códigos muchas veces, en cada tick en casi todas las estrategias implementadas en el EA, para obtener datos sobre el estado actual del mercado.

   CurAsk   =MarketInfo(Symbol(),MODE_ASK);
   CurBid   =MarketInfo(Symbol(),MODE_BID);
   OpnPrice =iOpen(NULL,PERIOD_M5,0);
   OpnPrice1=iOpen(NULL,PERIOD_M5,1);
   ClsPrice1=iClose(NULL,PERIOD_M5,1);
¿Puedo dirigirme a ellas sólo una vez al principio de la función de inicio, y luego dirigirme sólo a las variables globales, que almacenarán los datos? Es un poco molesto...
 
artmedia70:

Pregunta:

Tengo que referirme a la misma secuencia de códigos muchas veces, en cada tick en casi todas las estrategias implementadas en el EA, para obtener datos sobre el estado actual del mercado.

¿Puedo dirigirme a ellas sólo una vez al principio de la función de inicio, y luego dirigirme sólo a las variables globales que almacenarán estos datos? Me estoy poniendo un poco grasiento aquí...


OpnPrice =iOpen(NULL,PERIOD_M5,0);

Entiendo que el cálculo se hace sobre la barra cero, es decir, cada tick cambiará los datos

Si lo desea, puede escribir una secuencia de comandos y hacer un bucle que le permita introducir este cálculo en las variables globales, pero en este caso es necesario sincronizar los nuevos datos con cada tic. Creo que es mejor dejarlo como está, pero entregarlo en una función separada y llamar a esta función sólo en los casos necesarios, es decir, si el cálculo es importante para la apertura de órdenes, entonces justo antes de abrirlas y respectivamente cerrarlas

 
IgorM:


OpnPrice =iOpen(NULL,PERIOD_M5,0);

Aquí entiendo que el cálculo se hace sobre una barra cero, es decir, cada tick cambiará los datos

Lógicamente - deberías escribir un script y hacer un bucle con él y te alimentará con este cálculo en las variables globales, pero en este caso tendrás que sincronizar los nuevos datos con cada tick. Creo que es mejor dejarlo como está, pero entregarlo en una función separada y llamar a esta función sólo cuando sea necesario, es decir, si el cálculo es importante para la apertura de órdenes, entonces justo antes de abrirlas y respectivamente cerrarlas

Igor, de momento lo estoy haciendo, pero me temo que ralentiza el ya de por sí lento sistema compuesto por todas estas estrategias mezcladas y conectadas por condiciones, y a veces funcionan todas simultáneamente. Imagina que cada uno de ellos llama al mismo código en una función separada.

Pienso, que qué pasa si algunos datos se toman de la barra cero, como ya abro en la barra cero... Sólo obtengo datos de la primera, segunda o tercera barra...
OpnPrice =iOpen(NULL,PERIOD_M5,0); Obtengo el precio de apertura de la barra actual y no cambia - esto es un hecho consumado . Al comparar el precio de cierre anterior y el precio de apertura de la barra actual, algunas funciones dan o se niegan a abrir una posición...

Así que todos estos datos se leen una vez con la llegada del tick, y luego serán utilizados por el Asesor Experto. Serán inalterables y actuales hasta el siguiente tick, cuando el Asesor Experto los actualizará para el siguiente ciclo de cálculo.

¿Cuál es la probabilidad de que se produzca un nuevo tick antes de que finalicen todos los cálculos actuales? Me parece que sólo en este caso los datos serán viejos e irrelevantes.

Razón de la queja: