[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 128

 
hoz:

Puedes poner 0(cero), porque normalmente no necesitas que caduque. Pero probablemente lo tengas por precaución, para no tener que volver a este punto.
Por lo tanto, es 0 en la función estándar, mientras que en la presentación es necesario especificar, que los parámetros posteriores (color) deben trabajar. No uso la caducidad en absoluto en los pendientes, borro sólo por condición.
 

Señores programadores,


Por favor, ayúdenme a entender.

He insertado este código https://www.mql5.com/ru/code/8811 para el comercio virtual como una función en mi indicador.

Funciona en tiempo real y realiza operaciones virtuales de cualquier complejidad.

¿Puedo utilizarlo como disparador en la barra de historia al caminar? ¿O debo escribir un nuevo código?


Mi agradecimiento.

 
abdul1:

Señores programadores,

Por favor, ayúdenme a entender.

He insertado este código https://www.mql5.com/ru/code/8811 para el comercio virtual como una función en mi indicador.

Funciona en tiempo real y realiza operaciones virtuales de cualquier complejidad.

¿Puedo utilizarlo como disparador en la barra de historia al caminar? ¿O debo escribir un nuevo código?

Mi agradecimiento.

Es mejor que preguntes en el código base del autor donde lo has descargado.
 

borilunad, tienes, por ejemplo, si la función tiene tanto B.U. como TPAAL, el ciclo y selección de órdenes, según entiendo, está en el inicio de la función y se dispara al tickear?

Estoy tratando de averiguar cómo combinar todo esto y mi cerebro ya ha comenzado a sobrecargar mi cerebro, necesito que el B.T. funcione sólo cuando el precio de parada está por debajo del umbral mínimo, es decir, el precio de apertura+ la toma mínima. Tengo esta variable precioBU. Y entonces el traal ha pasado a mejor vida. Ahora mismo estoy probando una función separada para practicar, me resulta más fácil de entender. Me pondré con el tuyo en cuanto todo empiece a funcionar.

En el inicio escribí así:

int start()
{
   int g;
   for (g = OrdersTotal() - 1; g >= 0; g--)
   {
       if (!OrderSelect(g,SELECT_BY_POS)) continue;
       if (i_magic != -1) if (OrderMagicNumber() != i_magic) continue;
       if (OrderSymbol() != Symbol()) continue;
       
      if (OrderStopLoss() <= priceBU)
      {
          MovingStopLossToBU();
      }
      {
          ticket = OrderTicket();
          TrailingStop("", -1, -1);
      }
   }

¿Lo he hecho bien, o debería hacerlo de otra manera? Todo parece funcionar correctamente, pero de alguna manera está escrito de forma simple, sin ninguna condición...

 
hoz:

borilunad, tienes, por ejemplo, si la función tiene tanto B.U. como TPAAL, el ciclo y la selección de órdenes, según entiendo, está en el inicio de la función y se activa con un tic-tac?

Estoy tratando de averiguar cómo combinar todo esto y mi cerebro ya ha comenzado a sobrecargar mi cerebro, necesito que el B.T. funcione sólo cuando el precio de parada está por debajo del umbral mínimo, es decir, el precio de apertura + la toma mínima. Tengo esta variable precioBU. Y entonces el traal ha pasado a mejor vida. Ahora mismo estoy probando una función separada para practicar, me resulta más fácil de entender. Me pondré con el tuyo en cuanto todo empiece a funcionar.

En el inicio escribí así:

¿Lo he hecho bien, o debería hacerlo de otra manera? Todo parece funcionar correctamente, pero de alguna manera está escrito de forma simple, sin ninguna condición...

Exactamente, la función debe ser llamada cuando se cumplan las condiciones, y las condiciones deben ser adecuadas al mercado, respetar las distancias al precio y tener siempre la variación necesaria del spread y otras (tengo prev), lo que protegerá de violaciones y errores por movimientos espontáneos del precio. Y por supuesto, ¡el tic-tac! Entonces, por qué llamar a la función cada vez que se produce, por lo que las condiciones deben ser prescritas al principio. Especialmente en el Real, el suyo no "parecerá", pero ciertamente no funcionará, obtendremos errores uno tras otro. Y dudo que también funcione en la Demo. Y lo que veo en la Demo - Mira mi Trawl, también tienes que traducir a B/S y poner SL y TP, y hacer lo mismo para la Venta, y ponerlo todo en un bucle de enumeración y selección de posiciones, y tendrás un bloque de todas las modificaciones que funciona bien, llamando a una sola función, y sin problemas. ;)
 
hoz:



Bueno, tengo una prueba para eso:

Si parada - nueva parada (en b.u.) no es cero... entonces modificamos... Si no, no modificamos. Por eso no me queda claro cómo ocurre esto. Al fin y al cabo, entiendo que tengo que comprobar la igualdad de la parada pasada y la nueva y lo he hecho.

si (ND(OrderStopLoss()) - ND(priceBU * pt) != 0.0) - lo necesitamos así, si ND(...) - es la normalización.

 
borilunad:
Exactamente, la función debe ser llamada cuando se cumplan las condiciones, y las condiciones deben ser adecuadas al mercado, respetar la distancia con el precio y tener siempre el gap necesario (mina prev), lo que evita violaciones y errores por movimientos espontáneos del precio. Y por supuesto, ¡el tic-tac! Entonces, por qué llamar a la función cada vez que se produce, por lo que las condiciones deben ser prescritas al principio. Especialmente en el Real, el suyo no "parecerá", pero ciertamente no funcionará, obtendremos errores uno tras otro. Y dudo que también funcione en la Demo. Y que veo en la Demo - Mira mi Trawl, también tienes que traducir en B/S y poner SL y TP, y hacer lo mismo para la Venta, y ponerlo todo en un bucle de búsqueda y selección de posiciones, y tendrás un bloque que funciona bien con todas las modificaciones, llamando a una sola función, y sin problemas. ;)


Vaya. Es como si hubiera nacido de nuevo. Antes era más fácil, y ahora estoy pensando en cómo hacerlo diferente. Hice un bucle al principio. Ahora voy a tener que reescribir todo...

Una cosa extraña. Dices que no funcionará. Pero como muchos expertos que he visto, todo es llamado por funciones separadas y funciona... Estoy de acuerdo en que consume más recursos, pero... por qué habrá paquetes de errores es un misterio para mí.

Es un misterio para mí porque he visto muchas primicias y está escrito de la misma manera que el mío. Pero nunca he visto un bucle y una elección al principio, y luego todo está encadenado a él... Nunca he visto...

 
hoz:


Vaya. Es como si hubiera nacido de nuevo. Antes era más fácil, pero ahora me pregunto cómo rehacer algo. Hice un bucle al principio. Ahora tengo que reescribir todo.

Una cosa extraña. Dices que no funcionará. Pero como muchos expertos que he visto, todo se llama con funciones separadas y funciona... Estoy de acuerdo en que consume más recursos, pero... por qué habrá paquetes de errores es un misterio para mí.

Es un misterio para mí porque he visto muchas primicias y está escrito de la misma manera que el mío. Nunca he visto un ciclo y una elección al principio, y luego todo se aferra a él...

Codebase tiene muchas soluciones diferentes y de distinto nivel. Empecé con modificaciones y poco a poco llegué a esta construcción, que no es nada nueva, pero para mí es conveniente. Tengo un montón de funciones de arranque sin modificaciones. Para abrir una orden y/o una posición también hay una función. En cambio, hago muchas comprobaciones antes de abrir, también con funciones fuera del inicio. Para cerrar una posición, utilizo muchas condiciones con aún más funciones para diversas comprobaciones.

Es justo esta función la que utilizo para las modificaciones, pero las modificaciones son diferentes e implican diferentes condiciones, controles y medidas de protección. No puedo meterlo todo en una función y no tiene sentido. Accedo a él cuando se cumplen todas las condiciones y se ha calculado todo, y sólo le doy el último paso. Si algo está mal, no lo envía, lo devuelve, vuelve a comprobar los datos y lo intenta de nuevo, y sólo se envía al CC el precio exacto y los datos exactos, que se aceptan y fijan inmediatamente. Lo principal es no molestar a la empresa de corretaje innecesariamente.

Una vez más, recomendamos probar sólo dos líneas de condiciones para establecer un nuevo valor de SL en la pesca de arrastre y comprenderá que tenemos que ser muy minuciosos aquí. Por cierto, este bloque, desarrollado por mí, pasa de un TS a otro con ligeras modificaciones. Todo lo demás, especialmente el cierre, tiene que hacerse de nuevo, dependiendo del algoritmo de TS seleccionado. Y por último, no insisto en nada, sólo comparto lo que he probado y comprobado, y no excluyo que alguien pueda ofrecerte algo más aceptable para ti. Así que pruebe, pruebe, pruebe, pero nunca apueste por el Real al azar, un producto a medio terminar.

Por qué te digo esto, porque todos los principiantes aquí quieren sacar una solución rápida y hacer "pasta". Esto debería ser un regalo por un trabajo bien hecho. Y a los que aún no han salido de la infancia, no les gusta el trabajo y sólo quieren jugar, el mercado no se lo perdonará.

¡Buenas noches! Y mañana, con la cabeza despejada, ¡a trabajar de nuevo!

 
Valerius:


No parece haber ningún experto que pueda responder a esta pregunta tan sencilla, sólo dos programadores que se reúnen en una tertulia y ya está... ¿Cuál es el objetivo de este foro, entonces?

 
Valerius:


No parece haber ningún experto que pueda responder a esta pregunta tan sencilla, sólo dos programadores que se reúnen en una tertulia y ya está... ¿Cuál es el objetivo de este foro, entonces?

Su pregunta ya ha sido respondida cien veces: si está comparando dos números fraccionarios, normalice ambos antes de compararlos