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

 
ToLik_SRGV:

La función OrderSend tiene los precios de apertura/fijación erróneos. Este error imposibilita la colocación de órdenes correctamente, lo que significa que el EA quiere colocar más órdenes por alguna razón, y no puede hacerlo debido a este error. Por favor, compruebe si los precios de las órdenes pendientes están normalizados y si todas las órdenes están en marcha.

Si no te importa mirarlo con tu ojo profesional, no hay nada más allí

Archivos adjuntos:
test_21_3.mq4  16 kb
 
FoxUA:

Si no te importa mirarlo con tu ojo profesional, no hay nada más.

El desempaquetado muestra que el error se produce en el bloque de las órdenes pendientes, está intentando ponerlas a un precio negativo.

 
ToLik_SRGV:

El desempaquetado mostró que el error se produce en el bloque de configuración de órdenes pendientes, está tratando de ponerlas a un precio negativo.


como se arregla, excepto golpeando la cabeza contra la pared ;) ¿a donde fui?

 
ToLik_SRGV:

No según la idea. He aquí un extracto de un libro de texto:

P.S.
A propósito de Petyka, centenario, y todavía divertido :)))


"... así como los precios declarados de las órdenes de mercado que se encuentran en la zona de congelación...".

Sin embargo, resulta que esto tiene un efecto... y hay que tenerlo en cuenta - sólo tengo que eliminar el nivel de orden de stop anunciado en una posición abierta... Y si ya has entrado en la zona de congelación, sólo tienes que esperar al cierre... o un retroceso...

¡Gracias, amigo!

ZS. Y sobre Petya - aquí la situación es la misma... - Digo que pongo 1,6 - funciona, pongo 1,8 - no funciona... ¡¡¡Y ni siquiera el 1,9 ayuda!!! ¡¡¡Qué lío!!! Es horrible. ¡Ooh!
¿Cuáles son las cifras? Litros o algo así.

 
FoxUA:

Um, ¿cómo se arregla, aparte de golpear la cabeza contra la pared ;) ¿dónde me he perdido?

Reconozco las huellas de las funciones de Kim... Ve a su hilo - tiene un script después de cada función para comprobarlo. No hay nada más claro que eso...
 
artmedia70:
Reconozco las huellas de las funciones de Kim... Ve a su rama - tiene un script después de cada función para comprobarlo. No hay nada más claro que eso...


sí es de su biblioteca que me dieron aquí, por lo que son los mismos guiones que están en el buzón de correo. y lo agregué para que no haya reacción

{SetOrder(sy, OP_BUYLIMIT, Lot*3, NormalizeDouble(PrAskLim, Digits), PrAskLim-StopLoss*po, PrAskLim+TakeProfit*po,mn);
    SetOrder(sy, OP_BUYSTOP,  Lot,   NormalizeDouble(PrAskSt, Digits),  PrAskSt-StopLoss*po,  PrAskSt+TakeProfit*po,mn);
    SetOrder(sy, OP_SELLLIMIT,Lot*3, NormalizeDouble(PrBidLim, Digits), PrBidLim+StopLoss*po, PrBidLim-TakeProfit*po,mn);
    SetOrder(sy, OP_SELLSTOP, Lot,   NormalizeDouble(PrBidSt, Digits),  PrBidSt+StopLoss*po,  PrBidSt-TakeProfit*po,mn);
     } 
 
FoxUA:

Um, ¿cómo se cura esto, aparte de golpear la cabeza contra la pared ;) ¿dónde me he perdido?

Sigamos adelante.
Los números negativos entran en las variables de las funciones StopLossLastPos() y TakeProfitLastPos() . Allí aparecen debido al fracaso de su trabajo, es decir, -1 es una señal de fracaso para obtener el último valor de StopLoss y TakeProfit. No compruebas el éxito de la obtención de los últimos valores, por lo que -1 entra en tu trabajo como precio, luego a partir de él cuentas los valores para establecer las órdenes pendientes... y así sucesivamente.

El resultado es un efecto bola de nieve y un mar de bichos. Ahora en el probador voy a ver cómo funciona y ya informaré...


 
ToLik_SRGV:

Siguiendo adelante.
Los números negativos entran en las variables de las funciones StopLossLastPos() y TakeProfitLastPos() . Aparecen allí debido a un fallo, es decir, -1 es una señal de fracaso para obtener el último valor de StopLoss y TakeProfit. No compruebas el éxito de la obtención de los últimos valores, por lo que -1 entra en tu trabajo como precio, luego a partir de él cuentas los valores para establecer las órdenes pendientes... y así sucesivamente.

El resultado es un efecto bola de nieve y un mar de errores. Ahora voy a verlo en el probador y a informar...




Me pregunto cómo es eso.

 
FoxUA:

Sí, me pregunto cómo es eso.

Me despido.
El error está en la lógica. Se construye en torno a dos órdenes de mercado. Pero aquí tenemos un punto sutil: la función OrdersTotal() devuelve no el número total de órdenes de mercado abiertas, sino todas las que están en el mercado, junto con las órdenes pendientes que se establecen.
Como resultado, durante una operación, sucede un momento en que no hay órdenes de mercado, en el momento en que las órdenes pendientes siguen colgando, es decir, OrdersTotal() devuelve más de 0, en consecuencia, su bloque de apertura de órdenes de mercado if(total_order==0), no pueden abrir, Pero las nuevas órdenes pendientes pueden (en el momento en que OrdersTotal() devuelve 2), pero como no hay órdenes de mercado, las funciones StopLossLastPos() y TakeProfitLastPos() devuelven -1, mientras que la condición para la apertura de órdenes pendientes es if(total_order==2), por lo que cogen -1 y lo utilizan como precio.

 
ToLik_SRGV:

Me despido.
Hay un error en la lógica. Se construye en torno a dos órdenes de mercado. Pero aquí tenemos un punto sutil: la función OrdersTotal() devuelve no el número total de órdenes de mercado abiertas, sino todas las que están en el mercado, junto con las órdenes pendientes que se establecen.
Como resultado, durante una operación, sucede un momento en que no hay órdenes de mercado, en el momento en que las órdenes pendientes siguen colgando, es decir, OrdersTotal() devuelve más de 0, en consecuencia, su bloque de apertura de órdenes de mercado if(total_order==0), no pueden abrir, Pero las nuevas órdenes pendientes pueden (en el momento en que OrdersTotal() devuelve 2), pero como no hay órdenes de mercado, las funciones StopLossLastPos() y TakeProfitLastPos() devuelven -1, mientras que la condición para la apertura de órdenes pendientes es if(total_order==2), por lo que cogen -1 y lo utilizan como precio.


Lo tengo, lo cambiaré ahora. Muchas gracias.
Razón de la queja: