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

 
smartemiy:

¡Chicos!

¿cómo puedo hacer que cada 40º pedido sea un lote más grande? :: mercado y pendiente

¿Qué te parece esto?

No exactamente, debe contar el número de pedidos en el historial a = (OrdersHistoryTotal()+ 1) % 40

Pues bien, esto no tiene en cuenta cuántas órdenes pueden estar abiertas al mismo tiempo; de lo contrario, tendríamos que sumar el OrdersTotal (probablemente, menos las órdenes pendientes).

 
splxgf:

No exactamente, debe contar el número de pedidos en el historial a = (OrdersHistoryTotal()+ 1) % 40

Pues bien, esto no tiene en cuenta cuántas órdenes pueden estar abiertas al mismo tiempo; de lo contrario, tendríamos que sumar el OrdersTotal (probablemente, menos las órdenes pendientes).


¿Y si hubiera posiciones abiertas en otros símbolos u otros Asesores Expertos? Piensa en lo que estás escribiendo
 
Figar0:

Para empezar, su función de cálculo de lotes se declara dentro de la función de inicio. Sácalo. Entonces habrá algunos errores con variables no declaradas, pero creo que puedes manejarlos por tu cuenta.
Una pregunta más, ¿en qué función declarar el cálculo del lote? ¿init, deinit?
 
skyjet:
Otra pregunta, ¿en qué función debo declarar el cálculo del lote? ¿init, deinit?

Es mejor hacer una función separada y utilizarla cuando sea necesario (antes de abrir una nueva posición)
 
¿Se puede ralentizar el ordenador por la abundancia de código (no optimizado) en el EA? Es decir, ¿se ralentizará la apertura de operaciones y el proceso de toma de decisiones por parte del propio EA si tiene un código grande?
 
Vinin:

Mejor hacer una función separada y utilizarla cuando sea necesario (antes de abrir una nueva posición)
Víctor, siguiendo tu consejo he añadido la función. Ahora no compila.
void CheckForOpen()
double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
 

Mantener la historia de la teca



avatar
1
Gangrr 22.09.2011 17:32

Hola a todos.

La pregunta es - hay una secuencia de comandos para guardar el historial de garrapatas

...

FileSeek(ExtHandle,0,SEEK_END);

FileWrite(ExtHandle, TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS), Bid, Ask, iVolume(Symbol(), NULL, 0));

...

escribe así:

...

2011.08.15 08:38:49;76.936;76.946;1389

2011.08.15 08:38:51;76.934;76.953;1390
2011.08.15 08:38:56;76.929;76.958;1391
2011.08.15 08:38:56;76.935;76.945;1392

...

Es decir, resulta que la unidad mínima de tiempo es un segundo. Así que mi pregunta es, ¿hay alguna forma de escribir los ticks en milisegundos?

Gracias de antemano.

 
1
Gangrr 22.09.2011 17:32

Así que resulta que la unidad mínima de tiempo es un segundo. Así que la pregunta - ¿hay alguna manera de escribir ticks en milisegundos?


Mira GetTickCount... o bien, consulte la función de Windows
 
skyjet:
Víctor, siguiendo tu consejo he añadido la función. Ahora no compila.

void CheckForOpen()
  {



  }

double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
Las funciones anidadas no están permitidas
 
Vinin:

Las funciones anidadas no están permitidas
Esta no es una función anidada, sino que forma parte del EA básico MACD Sample. Estoy tratando de añadir un lote calculado. La principal y única función start()
Razón de la queja: