[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 281

 
Pyro:

tara


Es interesante, porque el precio de establecer una orden está normalizado a 4 dígitos, es decir, las fracciones de un pip no pueden estar ahí. ¿Por qué es así? Y sí, ahora funciona correctamente. THX

En realidad, la normalización debe hacerse en el momento del cálculo:

   int dg=MarketInfo(Symbol(),MODE_DIGITS);        // Количество цифр после десятичного точки в цене инструмента
   if (NormalizeDouble(OrderOpenPrice()-(p1+more),dg)==0) {
      // ... тут код, если результатом сравнения стал ноль, т.е. сравниваемые величины равны
      }

y algunos puntos de su código:

for(int i=1 ; i <= OrdersTotal() ; i++)   // делаете цикл от второго ордера в списке. Почему бы сразу не for(int i=0; i<OrdersTotal(); i++) ?
   {
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES))  // если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную
      {                                           
      if(OrderOpenPrice()-(p1+more) == 0)          // сравниваете без нормализации
         {
         ordersethigh1=true;                       // желательно флагу ПЕРЕД циклом задать значение false
         break;
         }
      }
   }
     
if((ordersethigh1==false) && (p2-price>pointsclose))  // второе условие тоже не нормализовано
   {
   OrderSend(Symbol(),OP_SELLLIMIT,baselot,p1+more,3,NULL,NULL,"Comment",0001,0,White);
   }
 

artmedia70


Bueno, escribí basándome en su código. Simplificado por ahora (lo estoy resolviendo). Lo único que quedó claro es que hay que normalizar todo. Es una especie de revelación (todo funcionaba en el probador). Lo estoy resolviendo ahora.

если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную

En este caso, no necesitamos código redundante. Pero he añadido una comprobación para la herramienta.

Tengo dos variantes, ambas funcionan:

if(OrderOpenPrice()-(channelhigh+more) <=Point*0.5)

if(NormalizeDouble(OrderOpenPrice()-(channelhigh+more),4) == 0)

Gracias, me ha aclarado mucho.



 
Pyro:

artmedia70


Bueno, escribí basándome en su código. Simplificado por ahora (lo estoy resolviendo). Lo único que quedó claro es que hay que normalizar todo. Es una especie de revelación (todo funcionaba en el probador). Lo estoy resolviendo ahora.

En este caso no es necesario un exceso de código. Pero he añadido una comprobación para la herramienta.

Tengo dos variantes, ambas funcionan:


Gracias, ¡se han aclarado muchas cosas!

¿Es redundante comprobar de qué tipo es la orden seleccionada? ¿Si es una orden de compra o de venta? Sin comprobarlo, su función le dirá que hay una orden pendiente (está comprobando su presencia). Quiere comprobar si hay una orden pendiente, y obtendrá true si hay algún tipo. Incluso si lo abres manualmente. Hay cuatro tipos de órdenes pendientes. Para evitar confusiones, es mejor pasar en una función, al llamarla, el tipo de orden pendiente, y luego comprobar si el tipo de orden que se ha elegido coincide con el pasado en la función.
(Esta comprobación no está presente en mi ejemplo de la p. 277). Sólo comprueba si hay algún pendiente - si el tipo es menor que 1 y mayor que 5, pasaremos a seleccionar el siguiente).

Siguiente. Su EA puede trabajar en un TF, y en el otro, otro EA puede trabajar simultáneamente. Ambos están trabajando en el mismo símbolo. Una posición abierta por otro EA será considerada por este EA como "sí, hay una orden". Por lo tanto, necesitamos introducir una comprobación de MagicNumber para que el Asesor Experto pueda distinguir sus propias órdenes y posiciones.

Por lo tanto, las comprobaciones del símbolo del instrumento comercial, el número mágico y el tipo de orden que se comprueba no son excesivas, sino necesarias. Esto es lo mínimo, pero no es redundante.

 

¡Saludos camaradas!

Por favor, avisen: ¿alguien se ha encontrado con el problema de buscar el último pedido cerrado? ¿Es rentable o no?

¿Qué métodos ha utilizado?

Gracias de antemano.

R.S. Supongo que la operación no es difícil, pero no sé cómo acercarme a ella.

 
artmedia70:

Por lo tanto, las comprobaciones del símbolo de un instrumento comercial, el número mágico y el tipo de una orden que se está comprobando no son excesivas, son necesarias. Esto es lo mínimo pero no excesivo.

Mi error aquí fue que sólo publiqué una función en esencia. Habrá controles, por supuesto. Es que esta pieza de código, es una pieza de entrenamiento en muchos sentidos, no es más que parte del EA. Gracias de nuevo por vuestra ayuda, amigos.

 
ramirez17:
Supongo que es una operación sencilla, pero no sé cómo hacerlo.
Te sorprendería lo popular que es esta pregunta.
Consulta en Google:
último pedido cerrado site:mql4.com
 
ramirez17:

¡Saludos camaradas!

¿Podría decirme esto: alguien ha tenido problemas para encontrar el último pedido cerrado? ¿Es rentable o no?

¿Qué métodos ha utilizado?

Gracias de antemano.

s.s. Supongo que esta operación no es difícil, pero no sé cómo enfocarla.

https://www.mql5.com/ru/forum/131859/page4#434229

https://www.mql5.com/ru/forum/131859/page4#434230

 
granit77:
Te sorprendería lo popular que es esta pregunta.
Consulta en Google:
último pedido cerrado site:mql4.com

Bien. Me olvidé de Google. Fui directamente aquí :)
 
¿en qué carpeta debo poner el archivo del set del EA?
 
drm1:
¿en qué carpeta debo poner el archivo del set del EA?
experto/presentación