[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 195

 

Por favor, ayuda con dos simples scripts que abren

órdenes pendientes de compra y de venta con stoploss y take profit fijados en

Distancia del precio actual. De alguna manera escribí uno que funciona, pero lo borré accidentalmente.

Lo borré accidentalmente y ahora no recuerdo qué hice para que funcionara.

la única esperanza para ti...

vender:


int start()
{
OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid-20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}


y comprar


int inicio()

{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}

ayuda por favor...

 
NickXXX:

Hola a todos.

Hoy estoy haciendo ejercicio con el tiempo) Por ejemplo, necesito hacer que un indicador haga algo a una hora determinada.

El código será el siguiente:

Ahora, digamos que queremos que nuestra condición funcione no sólo a las 21.30, sino también a las 22.00, 22.30, 23.00, etc...

Por supuesto, puedes hacer lo siguiente:

Pero creo que es algo irracional, especialmente si habrá muchos puntos de control. Creo que se puede y es más sencillo.

Pregunta, ¿cómo hacer más fácil (derecho) ?)

Aquí depende de si las condiciones temporales se prestan a algún tipo de ley, si hay un patrón. Por ejemplo para su caso, cada media hora: if(TimeCurrent()%1800==0) {tra-ta}. Si no hay lógica en estos puntos de tiempo - su opción. Sólo que no me gusta, es una igualdad estricta, si no hay una marca en este minuto - EA perderá la condición...
 
Figar0:
Aquí todo depende de si las condiciones de tiempo están sujetas a alguna ley, si hay un patrón o no. Por ejemplo, para su caso, cada media hora: if (TimeCurrent()%1800==0) {tra-ta}. Si no hay lógica en estos puntos de tiempo - su opción. Sólo que no me gusta, es una igualdad estricta, si no hay una marca en este minuto - EA perderá la condición...

Es decir, la comprobación del resto de las obras de la división. Pero me parece que en este caso siempre habrá un remanente...

Estoy completamente de acuerdo con la igualdad estricta, aún no lo he pensado bien. En principio, probablemente se podría hacer algo parecido a un intervalo, como 16.00 - 16.03.

Pero el objetivo era hacerlo una vez cada media hora para hacer cálculos e ir a dormir. Para que el sistema no esté constantemente cargado de cálculos innecesarios.

 
NickXXX:

Es decir, la comprobación del resto de las obras de la división. Pero me parece que en este caso siempre habrá un remanente...


Sí, tienes razón, es mejor: si(TimeCurrent()%1800<60) {tra-ta}.
 
Figar0:

Pues sí, tienes razón, mejor así: if (TimeCurrent()%1800<60) {tra-ta}.

< 0,6, o algo así. El resto de la división siempre es menor que uno :)
 

¿Y si hay muchas variables de este tipo?

double Time_Mes_1=21.30;
double Time_Mes_2=22.00;
double Time_Mes_3=22.30;
...

¿Es tan malo, o funcionará?

Y otra pequeña pregunta, si digamos que establezco un intervalo (por ejemplo 16.00-16.03) para que se ejecute una condición. ¿Cómo hacer que se ejecute sólo una vez, a pesar de la llegada de nuevos ticks?

 

1. Existe un tipo de datos: datetime. Si quieres algo exótico, puedes usar int para el tiempo, pero double es un caso extremo.

2. retrocede 5-10 páginas: dice cómo hacer lo que quieres.

 

Hola.

Por favor, ayúdenme a corregir el código.

Las dos líneas de abajo tienen fallos.

Gracias de antemano.

if((OrderMagicNumber()==MAGIC || OrderMagicNumber()==777))

if((OrderMagicNumber()==(MAGIC || 777))

El programa en sí:

int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int MAGIC;
  int i;
  for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 }
 
tara:
Por favor, no difundas la herejía en público. Vete a empollar a otro sitio, hay mucho que hacer...
 
tara:

1. Existe un tipo de datos: datetime. Si quieres algo exótico, puedes usar int para el tiempo, pero double es un caso extremo.

Si quieres usar el tiempo, debes usar int y double. 2) Rebobina 5-10 páginas hacia atrás: ahí está escrito cómo hacer lo que quieres.

1. Pues bien, aquí el doble sólo se utilizaba para añadir minutos y horas, para poder marcar los puntos de control como HH.MM (por ejemplo, 16. 23).

2. Mirando las últimas páginas, por supuesto que hay sobre la fecha, pero no es exactamente lo mismo. Simplemente, emiten en formato HH.MM la hora del último pedido.