[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 19

 
Buenos días a todos. Necesito un robot que lleve la cuenta de las operaciones y cree una orden pendiente al cierre por takeprofit para sustituir una cerrada con los mismos parámetros que una cerrada. ¿Puede implantarse un robot de este tipo? Nunca he utilizado uno antes. Si tienes uno en alguna parte, por favor dame un enlace. Gracias de antemano.
 
Anteriormente, el cierre de beneficios era en la moneda del depósito y se calculaba como
double Lot = 0.1;
int KoffProfit = 10;
ProfitValue = Lot * KoffProfit * MarketInfo(Symbol(), MODE_TICKVALUE); 
¿cómo convertir esta fórmula en puntos?
 

Me pregunto cómo optimizar el código para acelerar el búho en el probador. Por favor, puedes decirme cómo ejecutar el bucle más rápido, así:

for (int i = OrdersTotal() - 1; i >= 0; i--) {
   if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))  continue; 
   if (OrderSymbol() != Symbol())                    continue;    
   if (OrderMagicNumber() != Magic)                  continue;
   
   // работаем с ордерами      
}

o así:

for (int i = OrdersTotal() - 1; i >= 0; i--) {
   if (OrderSelect(i, SELECT_BY_POS)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
      // работаем с ордерами
      }
   }
}

¿y algún otro consejo para acelerar el EA?

 
T-G: Anteriormente, el cierre del beneficio estaba en la moneda del depósito y se contaba así
¿cómo convertir esta fórmula en puntos?
Esta fórmula no tiene sentido cambiarla, es más fácil encontrar la orden necesaria (OrderSelect()) y calcular (OrderOpenPrice()-Bid)/Point ( o OrderOpenPrice()-Ask) y obtener cuántos pips tiene ya la orden
T-G:¿y hay algún otro consejo para acelerar el EA?

En mql4 hay una comprobación completa de las condiciones, es decir, toda la expresión que esté entre paréntesis if() se comprobará hasta el final, por lo que a veces es razonable dividir las condiciones complejas en varias condiciones:

if(a>b && c>d) puede sustituirse por if(a>b){ if (c>d)..... }

Así que la primera variante del código que propones funcionará un poco más rápido, aunque desde la práctica - la enumeración de pedidos no carga mucho el procesador, las operaciones matemáticas cargan mucho el procesador, tiene sentido buscar aumentar el rendimiento del código - no todos los cálculos tienen que ser realizados cada tick

 
IgorM:

En mql4 hay una comprobación completa de las condiciones, es decir, toda la expresión que esté entre paréntesis if() se comprobará hasta el final, por lo que a veces es razonable dividir las condiciones complejas en varias condiciones:

if(a>b && c>d) puede sustituirse por if(a>b){ if (c>d)..... }

Así que la primera variante del código que sugieres funcionará un poco más rápido, aunque desde la práctica - la búsqueda de órdenes no carga mucho el procesador, las operaciones matemáticas cargan mucho el procesador, tiene sentido buscar aumentar el rendimiento del código - no todos los cálculos necesitan ser realizados cada tick

Ya veo. Gracias:

Rez = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), iSlippage, Blue);
if (Rez) Comment("Закрыт ордер # ", OrderTicket(), "  прибыль ", OrderProfit());

o la misma normalización en las condiciones:

if (NormalizeDouble(dOrderOpenPriceBuyStop - StepTral * Point, Digits) > NormalizeDouble(Ask + Step * Point, Digits))

ralentiza mucho la ejecución de los EAs?

 
T-G: o la misma normalización en las condiciones:

¿retrasa mucho la ejecución de los EA?

Intente comprobarlo usted mismo con GetTickCount(), cree un script y ejecute la normalización una vez 10 000 veces y ejecútela dos veces 10 000 veces, entonces podrá evaluar la utilidad que tiene para usted buscar secciones de código donde la normalización se ejecuta a menudo. Acerca de Print() me resulta incluso difícil de responder - ¿va a dar salida a Pronta cada tick? Por lo general, las operaciones de salida ralentizan el Asesor Experto significativamente, los scripts con Comment() se ejecutan 10 veces más que sin salida, pero de nuevo, la pregunta es acerca de la conveniencia - si usted tiene que, usted tiene que.
 
T-G:

Ya veo. gracias. pero dime Imprime por ejemplo después de cerrar un pedido:

o la misma normalización en las condiciones:

ralentiza significativamente la ejecución de los EAs?

La operación Print() es una operación con un archivo (en este caso, un archivo de registro). Y estas operaciones son MUY lentas (comparadas con el procesamiento de datos desde la memoria). CONCLUSIÓN: Crear una variable que se inicialice en la función init()

bool gb_VirtualTrade;
init()
{
    gb_VirtualTrade = (IsOptimization() || (IsTesting() && !IsVisualMode));
}

E imprimir por condición de esta variable (esta es UNA opción).

El ejemplo de normalización que has puesto no tiene sentido, si partimos de los objetivos planteados (optimización del código). La normalización es OBLIGATORIA de acuerdo con los requisitos técnicos del servidor de corretaje, para ejecutar una orden de comercio SÓLO para el precio y el STOP.

 
Hola, cuando un Asesor Experto abre una posición, ¿debo escribir en su código un indicador (condición) en base a las señales del que abre una orden o debo escribir en el Asesor Experto la ruta a la ventana de un instrumento financiero con indicadores instalados?
 

Queridos especuladores, ¡ayuda! Buscando un EA que establezca automáticamente SL y TP al abrir una posición.

Se lo agradezco de antemano.

 
Buenas tardes. Si alguien sabe dónde se puede descargar un indicador de ZIGZAG que marque el punto en el que aparece un nuevo rayo (por ejemplo, en un color diferente). Si es que hay uno...