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

 
artmedia70:
No preguntes, comprueba con un probador... :)
Después de la compilación, el Asesor Experto funciona de la misma manera que antes de los cambios. Es decir, dibuja una línea.
 
globad:
el experto traza una línea.
si el código dice "dibujar la línea 1 si no se dibuja; dibujar la línea 2 si no se dibuja" - no pueden no dibujarse:)
 
eddy: artmedia70:
si el código dice "dibujar la línea 1 si no está dibujada; dibujar la línea 2 si no está dibujada" - no pueden no estar dibujadas:)
¡Todos los chicos, lo han resuelto! ¡Funciona!
 

¿Puede decirme por qué todos los porcentajes son 0 en el informe de la prueba? ¿Es decir, reducción relativa, reducción máxima, etc.?

 
artmedia70:

Por ejemplo, así:

Llama así:

Espero que pueda convertir los minutos en horas... :)





Intenté escribirlo de la forma que dices, pero funciona... sigue abriendo posiciones al cierre de la anterior...((

quizás no entiendas lo que quiero decir, quiero que abra una posición no antes de 1 hora después de que la anterior se haya cerrado... y en tu caso, excluye la posibilidad de reabrir, pero en cuanto se cierra, abre inmediatamente la siguiente

 if (SecondsAfterOpenLastPos(NULL, OP_SELL, MAGIC)>=(Period()*Interval)*60) {
        OpenSell();  
           } 
 
ayuda de los chicos: necesitamos que se abra una operación si ha pasado cierto tiempo desde que se cerró la anterior....help
 
Vovo4ka:
Ayuda chicos: Necesito que se abra un trato si ha pasado un tiempo determinado después de cerrar el anterior....help


for (int i=0; i<OrdersTotal(); i++)
{ si(OrderSelect(i, SELECT_BY_POS)==true)
{
TC = TimeCurrent();
OM = OrderMagicNumber();
if (TC-OM>86400 && (OrderType()==OP_SELL)){
CLOSEORDER("Sell");
}
if (TC-OM>86400 && (OrderType()==OP_BUY)){
CLOSEORDER("Buy");
}
}
}

En OrderMagicNumber() al abrir una orden escribe: Magic = TimeCurrent();

 
ILL:


for (int i=0; i<OrdersTotal(); i++)
{ si (OrderSelect(i, SELECT_BY_POS)==true)
{
TC = TimeCurrent();
OM = OrderMagicNumber();
if (TC-OM>86400 && (OrderType()==OP_SELL)){
CLOSEORDER("Sell");
}
if (TC-OM>86400 && (OrderType()==OP_BUY)){
CLOSEORDER("Buy");
}
}
}

En OrderMagicNumber(), al abrir una orden, se escribe: Magic = TimeCurrent();


Se me olvidaba =) 86400 - es el número de segundos tras los cuales se cierra la posición
 
ILL:

¿Puede decirme por qué todos los porcentajes son 0 en el informe de la prueba? ¿Es decir, reducción relativa, reducción máxima, etc.?


Todo resuelto - el depósito era demasiado grande)
 
Vovo4ka:


Intenté escribirlo de la forma que dices, funciona... sigue abriendo una posición al cierre de la anterior...(

Tal vez no entiendas lo que quiero decir, necesita abrir una operación no antes de 1 hora después de que se haya cerrado la anterior...y en tu caso, excluye la posibilidad de abrir una operación repetida, pero en cuanto se cierra, se abre la siguiente inmediatamente

¿Y pensar en el código de la función? Encuentre cuatro diferencias :) :

//+----------------------------------------------------------------------------+
datetime SecondsAfterCloseLastPos(string sy, int op, int mn) 
{
   datetime t;
   int      i, k=OrdersHistoryTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue; 
         if (OrderMagicNumber()!=mn)   continue; 
         if (t<OrderCloseTime()) t=OrderCloseTime();
         }
      }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+
Razón de la queja: