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

 
merkulov.artem:
Buenas noches! Pregunta, si uso un EA. ¿Podrá mi empresa de corretaje ver el algoritmo de su trabajo y cómo calcula los valores (indicadores, análisis de datos históricos), es decir, todo el código del Asesor Experto? ¿O la empresa de corretaje sólo recibe información sobre las órdenes: apertura, modificación y cierre de posiciones?
No, el DC no puede entrar en el proceso de trabajo del Asesor Experto. El servidor de la empresa de corretaje sólo recibe órdenes de su MT (comprar, vender, etc.).
 
chicos!!!!!! ¿dónde puedo descargar un simple asesor MA para cruzar 2 líneas en los últimos datos? la mayoría de ellos trabajan en la línea media tomada de la historia de las cotizaciones. y preferiblemente el mismo indicador
 
bikrus13:
chicos!!!!!! ¿dónde puedo descargar un simple asesor MA para cruzar 2 líneas de acuerdo con los últimos datos? la mayoría de ellos trabajan en la línea media que se toma de la historia de las cotizaciones. y preferiblemente el mismo indicador
¿Qué quiere decir con "datos recientes"? Los últimos datos son los que. No de la historia, sino del futuro). ¿Qué quiere decir con "datos recientes"? Sólo por curiosidad, es la primera vez que "oigo" hablar de ello.
 
kakin:
¿Qué quiere decir con "últimos datos"? ¿Cuáles son los datos más recientes? Especifique. Sólo por curiosidad, es la primera vez que "oigo" hablar de ello.

En este caso, el componente de la media empieza desde cero en la fecha en que empezó la historia. son unos dos meses. si tomas MA con un periodo de 1000 en el gráfico de un minuto con una semana y un mes de historia, diferirán. ese es el problema. si creas un indicador basado en los últimos datos de las cotizaciones, se mostrará con más veracidad
 

¿Puedes decirme si es posible prohibir que el EA envíe impresiones en el momento adecuado en un gráfico de demostración? Tal vez incluso eliminándolo de la carta. Creo que esta función no la detendrá por completo, sólo hasta el siguiente tick, ¿o se detendrá? BreakPoint();

void BreakPoint(){//if (!IsVisualMode()) return(0);
keybd_event(19,0,0,0);
Sleep(10);
keybd_event(19,0,2,0);}                    
 
Aparentemente no lo detendrá, pero ¿es posible eliminar el robot del gráfico de forma programada en el momento adecuado?
 
bikrus13:

Por ejemplo, si borras el historial del terminal por completo. cuando abres un gráfico, tienes que crear tu propio historial desplazándote hacia atrás en el tiempo. el componente promedio comienza desde cero en la fecha en que comenzó el historial. son unos dos meses. si tomas un MA con un período de 1000 en el gráfico de un minuto con un historial de una semana y un mes, diferirán. este es el problema. si creas un indicador usando los últimos datos de las cotizaciones, se mostrará con más veracidad
))))))))) mi único consejo es que leas en Internet sobre la temida media móvil y cómo se calcula. Haga hincapié en el estudio del periodo de promediación. Sé que es muy duro para el cerebro, pero muchas preguntas desaparecerán por sí solas.
 

Actualmente estoy aprendiendo a escribir un EA en términos de comprensión del código fuente, ya que el EA está escrito muy bien.

Pero una cosa es extraña allí.

void FindOrders()
{
// - 1 - == Инициализация переменных перед поиском ======================================
   int total = OrdersTotal() - 1;
   g_type = -1;                                    // На текущий момент у нас нет позиций
// - 1 - == Окончание блока =============================================================
 
// - 2 - == Непосредственно поиск =======================================================
   for (int i = total; i >= 0; i--)                // Используется весь список ордеров
      if (OrderSelect(i, SELECT_BY_POS))           // Убедимся, что ордер выбран
         if (MathFloor(OrderMagicNumber()) == i_magicNumber &&// Ордер открыт
             OrderSymbol() == Symbol())            // ..экспертом, который прикреплен к..
         {                                         // ..текущей паре
            g_ticket = OrderTicket();              // Запишем данные ордера
            g_type = OrderType();
         } 
// - 2 - == Окончание блока =============================================================
}

¿Por qué el número de todos los pedidos se asigna aOrdersTotal() - 1, y no sólo aOrdersTotal()?

Porque si tenemos 0 pedidos en total, entonces el valor del total será -1 en lugar de 0.

 
hoz:

Actualmente estoy aprendiendo a escribir un EA en términos de comprensión del código fuente, ya que el EA está escrito muy bien.

Pero una cosa es extraña allí.

¿Por qué el número de todos los pedidos se asigna aOrdersTotal() - 1, y no sólo aOrdersTotal()?

Porque si tenemos 0 pedidos en total, entonces el valor del total será -1 en lugar de 0.

Después, comprueba dónde se utiliza el total. Lo más probable es que luego hagamos un bucle a través de los pedidos for (i=0; i<=total; i++).
 
paladin80:
Mira dónde se utiliza el total después. Lo más probable es que el bucle recorra los pedidos for (i=0; i<=total; i++).

Por cierto, sí... Ya he añadido el código completo de esta función arriba:

void FindOrders()
{
// - 1 - == Инициализация переменных перед поиском ======================================
   int total = OrdersTotal() - 1;
   g_type = -1;                                    // На текущий момент у нас нет позиций
// - 1 - == Окончание блока =============================================================
 
// - 2 - == Непосредственно поиск =======================================================
   for (int i = total; i >= 0; i--)                // Используется весь список ордеров
      if (OrderSelect(i, SELECT_BY_POS))           // Убедимся, что ордер выбран
         if (MathFloor(OrderMagicNumber()) == i_magicNumber &&// Ордер открыт
             OrderSymbol() == Symbol())            // ..экспертом, который прикреплен к..
         {                                         // ..текущей паре
            g_ticket = OrderTicket();              // Запишем данные ордера
            g_type = OrderType();
         } 
// - 2 - == Окончание блока =============================================================
}

Pensé que sería más lógico no escribirlo así:

int total = OrdersTotal() - 1;

y luego establecer el bucle de esta manera:

for(i=total; i>=1; i--)

¿Verdad? Sólo que de alguna manera no se percibe muy bien cuando el contador de número de posiciones desde cero... no es lógico y, por tanto, para qué confundirse...

Razón de la queja: