[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 193

 
Diubakin:
Si haces esto, todas las rarezas deberían desaparecer.

Para eliminar la condición "extra", puedes hacer lo siguiente:

    int i, ot = OrdersTotal();
    double min = 1000.0;
    int min_ticket=0;
    for (i=ot - 1; i>= 0; i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS)) continue;
        if (OrderType()!=OP_BUY) if (OrderType()!=OP_SELL) continue;
        if (min <= OrderLots()) continue;
        min = OrderLots();
        min_ticket=OrderTicket();
    }
 
artmedia70:

Cómo así... Basado en Igor Kim hizo algo... Sólo una de sus características... el resto es lo mismo...

algo así, supongo:

Y lo llamamos:

para contar la compra y la venta en el símbolo actual, con Magic

Artyom, por supuesto que empiezo por Kim, eliminando los controles innecesarios para mí y añadiendo las tareas necesarias para mí. No quiero reinventar la rueda. Gracias por la corrección, voy a ser más audaz para eliminar innecesario! Y no necesito para comprobar el mago y el símbolo, porque a veces intervengo "con mis manos" y no antes de la multidivisa para mí todavía!
 
TarasBY:

Para eliminar la condición "extra", puede hacer lo siguiente



Igor, tienes razón. Así es más legible...
 
borilunad:
Artyom, por supuesto que vengo de Kim, eliminando los controles innecesarios y añadiendo las tareas que necesito. No reinventar una bicicleta Gracias por la corrección, voy a ser más audaz para eliminar innecesario! Y no necesito comprobar el mago y el símbolo, ya que a veces intervengo "manualmente" y no antes de la multidivisa para mí todavía!

Entonces tengo que comprobar si (OrderMagicNumber()==0) ... Esto es una comprobación de "manual".

Si queremos interferir con otros EAs que trabajen con otro símbolo, podemos eliminar la comprobación de OrderSymbol().

He dejado las comprobaciones mínimas necesarias para trabajar en un solo personaje, con sus propias posiciones/órdenes. Si también quieres tocar lo que "maneja", entonces tienes que añadir una comprobación para magic==0.

 
artmedia70:

Entonces debe hacer una comprobación si (OrderMagicNumber()==0) ... es una comprobación de "manual".

Si queremos interferir con otros EAs que trabajen con otro símbolo, podemos eliminar la comprobación en OrderSymbol().

He dejado las comprobaciones mínimas requeridas para trabajar en un símbolo, con sus propias posiciones/órdenes. Si también quieres tocar eso "a mano", entonces tienes que añadir una comprobación de magik==0.

¡Ya se me permite hacer eso! Pero tomo nota, sobre todo con != y el continuo no se ralentiza en absoluto! Gracias.
 
solnce600:

Muchas gracias por su ayuda. Todo está bien. Pero......

1. En algunos de los cinco minutos, se abre más de una orden.

2. Algunas órdenes se cierran con órdenes stop cuyo precio es diferente al prescrito en el código.


Bueno, vamos, entonces todo es simple - hacer la misma comprobación en las órdenes cerradas) Y sobre el precio de cierre- lo siento, se establece correctamente, y luego el servidor a qué precio realmente cerrarlo.
int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 int last_hist_order_bar = 0;
 int oht = OrdersHistoryTotal();

 if (oht>0) //если есть ордера в рынке
 {
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY)) //выбрали последний закрытый ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний закрытый ордер (если он есть)
 }
 
 if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (oht==0 || last_hist_order_bar>0) //если закрытых ордеров нет либо последний из закрытых был открыт не на текущем баре
       if (Bid>=Price)                       //если текущая цена доползла до цены открытия
          int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
alsu:
Bueno, es fácil hacer la misma comprobación en las órdenes cerradas) Y sobre el precio de cierre - lo siento, se establece correctamente, y luego depende del servidor a qué precio se puede cerrar.

Muchas gracias, disculpe las molestias.
 
alsu:
Y qué pasa con el precio de cierre - lo siento, se establece correctamente, y luego depende del servidor a qué precio se cerrará realmente.

Muchas gracias de nuevo por toda su ayuda. Pero.....

Sólo abrí un pedido durante el período de un año, es decir, el primer pedido que encontré.

Y hay muchos más candeleros con parámetros para abrir una orden en este periodo.

http://clip2net.com/s/2ToEo


Gracias.

 
solnce600:

Muchas gracias de nuevo por toda su ayuda. Pero.....

Sólo abrí un pedido durante el período de un año, es decir, el primer pedido que encontré.

Y hay muchos más candeleros con parámetros para abrir una orden en este periodo.

http://clip2net.com/s/2ToEo


Gracias.


Corregir mi error tipográfico - la segunda vez

 if (oht>0) //если есть ордера в рынке
 {
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY)) //выбрали последний закрытый ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний закрытый ордер (если он есть)
 }

Necesito

last_hist_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ());
 
alsu:

Corregir mi error tipográfico - la segunda vez

Se supone que sí.


Bien. Muchas gracias.