Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 25

 
Artyom Trishkin:
Construir una línea virtual, no un objeto gráfico, en lugar de una línea de tendencia. Respectivamente, y obtener el valor no a través de ObjectGetValueByShift("1",bar_seek), sino por la ecuación de la línea recta.
gracias! -Lo probaré)
 
Nikolay Gaylis:
¡Gracias! Lo intentaré).
De nada...
 
Nikolay Gaylis:
Gracias, lo probaré)

Hace tiempo escribí un artículo en mql4.com. Contiene una descripción detallada del trabajo con líneas de tendencia virtuales y la búsqueda del valor del precio correcto en la barra derecha de estas líneas virtuales.

Hay un indicador basado en este artículo en kodobase. En él ya he rehecho el código para el nuevo mql4.

 
Artyom Trishkin:
Esa debió ser la idea. Sin embargo, esta comprobación no sólo tendrá en cuenta las órdenes pendientes, sino también todas las operaciones de una cuenta de operaciones: depósitos, retiradas, bonificaciones, etc.
Nikolay Gaylis:

Esta condición permite que la junta sólo trabajecon órdenes apiladas, ¿era esa la intención?

    if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;
Propiedades de los pedidos

Tipo de operación para la función OrderSend(). Puede ser cualquiera de los siguientes valores:

Constante
Valor
Descripción
OP_BUY
0
Comprar
OP_VENDER
1
Vender
OP_BUYLIMIT
2
Orden pendiente de COMPRA LIMITADA
OP_SELLLIMIT
3
Orden pendiente de VENTA LIMITADA
OP_BUYSTOP
4
Orden pendiente de COMPRA STOP
OP_SELLSTOP
5
Orden pendiente de venta de STOP


El cálculo es que las órdenes pendientes no se tomarán en absoluto hasta que se conviertan en órdenes de mercado sólo para el símbolo actual. Después de procesar la última orden de mercado (si hay muchas) para el símbolo actual, el EA se elimina del gráfico (ahora se elimina inmediatamente después de la activación de la primera orden y tiene en cuenta el hecho de que si hay 1 orden para el símbolo actual y otra para otro).

Por qué sucede esto y dónde debo colocar una orden de retorno, para que cuando se cierre la siguiente orden envíe una función directamente a las condiciones después de count++ y comience a sonar sólo después de que se haya disparado la última orden. Finalmente, pongo Orderselect() para determinar la última (si la orden está cerrada y no podemos seleccionar la orden no hay nada que hacer en este gráfico)

 
trader781:
Propiedades de los pedidos

...


Las órdenes pendientes no se tendrán en cuenta en absoluto hasta que se conviertan en órdenes de mercado sólo para un símbolo actual. Después de procesar la última orden de mercado (si hay muchas) para el símbolo actual, el Asesor Experto se borra del gráfico (se borra inmediatamente después de la activación de la primera orden y presta atención al hecho de que si hay una orden para el símbolo actual y otra para otro, lo tiene en cuenta).

por qué ocurre esto y dónde poner un retorno, para que cuando se cierre la siguiente orden, envíe una función inmediatamente a las condiciones después de count++ y sólo después de que se haya disparado la última orden se ejecute playsound. Finalmente, pongo Orderselect() para determinar la última (si la orden está cerrada y no podemos seleccionar la orden no tenemos nada que hacer en este gráfico)

if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;

Este código omite todas las posiciones de mercado en el bucle.

Lo que sigue no lo sé, pero si pasamos a procesar otros tipos de órdenes - las 2 y superiores, dicho procesamiento tendrá en cuenta todos los tipos de órdenes pendientes y las órdenes de tipo 6 - acciones en la cuenta.

¿Dónde está el código con el ciclo completo?

 
Artyom Trishkin:
if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;


¿Dónde está el código con el ciclo completo?

Puesto 236

esta sección sólo debe pasar las de mercado para el instrumento actual

 
trader781:

Puesto 236

esta sección sólo debe pasar las de mercado en el instrumento actual

Este bucle que tienes está estúpidamente vacío en absoluto. No tiene ningún sentido, simplemente se ralentiza cuando tienes un gran número de pedidos en tu cuenta.

Y ordena tu código - es solo basura ilegible, no código.

¿Y por qué se necesitan dobles llaves en OnTick()? ¿Cuál es el significado sagrado de esto?

 
Artyom Trishkin:

Y pon en orden tu código: es una basura ilegible, no un código.

No me malinterpreten. Si pudiera hacerlo como tú quieres, no estaría sentado aquí. Por eso pido ayuda para resolver la tarea actual.

 
trader781:
Artyom Trishkin:

Y pon en orden tu código: es una basura ilegible, no un código.

No me malinterpreten. Si pudiera hacerlo como tú quieres, no estaría sentado aquí. Por eso te pido que me ayudes a resolver la tarea actual.

¿Quizás pueda eliminar las líneas vacías del código? ¿Requiere alguna habilidad especial?

En realidad, existe la combinación de teclas Ctrl+"," - un estilizador. Aunque malo, pero aún así. Y luego puedes eliminar las líneas vacías del código para no dejar que la gente mire las "tripas". Es la cultura de la comunicación más sencilla.

Pero después de limpiar tu código será más legible para ti, por no hablar de otras personas que también necesitarán entender tu lógica. Allí se verán todas las carencias.

 
Artyom Trishkin:

Seguro que sabes cómo eliminar las líneas vacías del código, ¿no? ¿Requiere esto alguna habilidad especial?

En realidad, hay un atajo de teclado Ctrl+"," - un estilizador. Aunque malo, pero aún así. Y luego puedes eliminar las líneas vacías del código para no dejar que la gente mire las "tripas". Es la cultura de la comunicación más sencilla.

Pero después de limpiar tu código será más legible para ti, por no hablar de otras personas que también necesitarán entender tu lógica. Y todos tus defectos se verán allí.

Después de limpiar tu código, será más legible para ti, por no hablar de otras personas que también necesitan entender tu lógica. Ahí es donde se verán todos los fallos.

Bien, ¿es mejor así?
Archivos adjuntos: