Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 709

 

Hola a todos, ayúdenme a encontrar un error en el código. El punto es el siguiente: todos abiertos, digamos 6 de ellos 4 a beneficio, 2 a compra (según la captura de pantalla). El cierre es cuando el beneficio total alcanza 1,0 (según la captura de pantalla). 2 X 2 = 4 bloqueados (se cierran con OrderCloseBy), 2 ventas se cierran con OrderClose.

El error es el siguiente: las órdenes superpuestas se cierran con OrderCloseBy pero el resto de las órdenes no se cierran

No quiero hurgar en el código, creo que el error está aquí.

línea 565 del código - función para cerrar órdenes

Línea de código 92-100 - cerrar todas las demás órdenes

línea 550 del código - función para contar las órdenes abiertas

Agradecería cualquier ayuda.


Archivos adjuntos:
 

alexey1979621, на mql5 ответил ;)

 
Shurkin:

Hola.

Al teselar (terminal MT-4-670, Alt+R), las ventanas de los gráficos se colocan en lugares nuevos cada vez.

¿Podría sugerir si es posible fijarlos para que la posición en la pantalla de cada gráfico específico sea constante?


MT-4-670, todo está bien para mí

Los gráficos de pares se encuentran siempre (en mosaico) como en las pestañas inferiores

Por orden de prioridad:

| 1 | 3 | 5 |

| 2 | 4 | 6 |

 
GalaX:

MT-4-670, estoy bien

Los gráficos de pares siempre están dispuestos (en mosaico) como en la parte inferior de las pestañas

Por orden de prioridad:

| 1 | 3 | 5 |

| 2 | 4 | 6 |


Siempre tengo la ventana que estaba a pantalla completa primero, cambia la ventana activa - el orden del mosaico cambia también
 
GalaX:

MT-4-670, estoy bien

Los gráficos de pares siempre están dispuestos (en mosaico) como en la parte inferior de las fichas

Por orden de prioridad:

| 1 | 3 | 5 |

| 2 | 4 | 6 |


Esta propiedad aparece cuando se enciende el panel gráfico, cuando se apaga desaparece y la ventana activa se coloca en primer lugar.

No he podido encontrar nada sobre esto en la última versión de la ayuda.

 
alexey1979621:

Hola a todos, ayúdenme a encontrar un error en el código. La cuestión es la siguiente: total de aperturas, digamos 6 de ellas 4 a beneficio, 2 a compra (según la captura de pantalla). El cierre se produce cuando el beneficio total, con Cajem en 1,0 (según la captura de pantalla). 2 X 2 = 4 cerrados (se cierran usandoOrderCloseBy), 2 sellos se cierran usando OrderClose.

El error es el siguiente: las órdenes solapadas se cierran con OrderCloseBy, pero las restantes no se cierran en absoluto

Para no hurgar en el código, creo que el error está aquí.

línea 565 del código - función para cerrar órdenes

líneas 92-100 del código - cerrar todas las demás órdenes

línea 550 del código - función para contar las órdenes abiertas

Agradecería cualquier ayuda.


"Línea 92-100 del código - cerrar todas las demás órdenes" - el precio de cierre de la orden es erróneo.

En todos los ciclos con búsqueda de pedidos, es necesario cambiar la dirección de búsqueda de pedidos, por ejemplo, de la siguiente manera

 for(t = OrdersTotal() - 1; t >= 0; t--)

Y en ClosePos(), la cantidad de órdenes cambia considerablemente después del cruce. Debe haber muchos errores ahí.

 

Acceso programático a las alertas - las que se dibujan con una flecha roja a la derecha y envían un mensaje a la derecha cuando el precio cruza un nivel deseado, existe???????

Ayyyyyyy

 

¡¡¡Ayuda por favor!!! ¡¡¡¡Tercer día de rompecabezas!!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0); //devuelve el índice de la barra para n-períodos con el precio mínimo

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0); //devuelve el índice de la barra para n-períodos con el precio máximo

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z); //devuelve el valor del precio de la barra con el precio más bajo

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x); //devuelve el precio de la barra con el precio más alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //devuelve el precio de cierre de la última barra

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

doble Km1=(i/r);


return(Km1);

En tiempo real el script funciona!!! en el probador de estrategias ¡ERROR! ¡¡¡DIVIDIR POR CERO!!! La fórmula es la más sencilla, pero no se puede hacer sin división. (fórmula estocástica). Como se puede ver en el código y he multiplicado los valores por 10000 para excluir en general los ceros, sigue habiendo un error. ¡¡POR FAVOR!!

 
sponger:

¡¡¡Ayuda por favor!!! ¡¡¡¡Tercer día de rompecabezas!!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0); //devuelve el índice de la barra para n-períodos con el precio mínimo

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0); //devuelve el índice de la barra para n-períodos con el precio máximo

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z); //devuelve el valor del precio de la barra con el precio más bajo

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x); //devuelve el precio de la barra con el precio más alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //devuelve el precio de cierre de la última barra

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

doble Km1=(i/r);


return(Km1);

En tiempo real el script funciona!!! en el probador de estrategias ¡ERROR! ¡¡¡DIVIDIR POR CERO!!! La fórmula es la más sencilla, pero no hay manera de hacerlo sin división. (fórmula estocástica). Como se puede ver en el código y he multiplicado los valores por 10000 para excluir en general los ceros! todavía un error! ¡¡POR FAVOR!!

¿No es una división?doble Km1=(i/r);
 

borilunad:
А это не деление? double Km1=(i/r);   

¡¡¡lo es!!! Pero lo necesita!!! fórmula estocástica%K = 100%-((Close - Minp)/(Maxp- Minp))

  • Cierre - precio de cierre actual
  • Minp - mínimo para el periodo n
  • Maxp - máximo para el periodo n
  • ¿Cómo puedo hacerlo sin división?