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

 
artmedia70 escribió(a) >>
¡Respetados gurús! >> Por favor, aconseja a los dummies atascados en el desierto cómo organizar el seguimiento de las órdenes y eventos en múltiples pares de divisas y múltiples marcos de tiempo simultáneamente en un EA. La contabilidad de pedidos en un programa grande y el seguimiento de eventos no me dan ninguna respuesta clara a mis preguntas. No he encontrado ninguna respuesta en las enormes extensiones de este maravilloso recurso. Nunca he pensado que una simple tarea (simple en mi corazón) puede llevar a una tetera a un punto muerto durante tanto tiempo y de forma irreversible, y clavarla en la pared, que no saldrá... :)
Entiendo que debo organizar la revisión de las órdenes en un bucle, pero no puedo averiguar cómo mantener un seguimiento de las posiciones abiertas y establecer órdenes simultáneamente para diferentes pares de divisas y diferentes marcos de tiempo. Maldita sea, he estado atascado en esta situación durante un mes. Hice un Asesor Experto de libro de texto, que comercia sólo en un par y un marco de tiempo, pero, por supuesto, no se ajusta a mi TS y no cumple con mis requisitos para la implementación del sistema de comercio.
Ya es un grito de auxilio... Ayúdame a entenderlo. Si sólo pista, donde puedo leer sobre ello (sólo por favor no me envíe de nuevo al tutorial), y preferiblemente con ejemplos (lo que un principiante puede hacer sin ejemplos - para sentir es siempre mejor que ver ...).

Agradeceré a quien responda de alguna manera a la petición de ayuda.

Piensa en un código para ti,

que codificaría todas las diferencias entre órdenes como una variable int y la asignaría a un mago,

Si se encuesta a un mago, se sabrá exactamente qué orden tiene.

 
Dígame, ¿el EA debe dibujar los objetos gráficos en el probador en una ventana separada, no en la ventana de precios? Por alguna razón no funciona al sustituir el cero por el uno al crear un objeto.
 
GVA63 >>:

Можeт вопрос покажeтся странным, но отвeт найти нe могу:

почeму при работe в "автматe", при одном и том-жe SL, ТP рeзультат сдeлок разный ? (разница до 3х пунктов). Буду благодарeн, eсли хотябы ссылку дадитe на соотв.

¿Un deslizamiento, tal vez?

¿Qué quiere decir con funcionamiento "automático"? ¿Qué quiere decir con "automático"?

 
Necron >>:
Добрый день. Подскажите пожалуйста как сделать панель на графике, на которую можно было бы поместить несколько графических объектов. Притом координаты объектов должны изменяться при перемещении панели в соответствии с координатами панели. Где-то видел в кодебазе пример такой, но не могу найти. Благодарен за помощь
Ya está, problema resuelto. Ejemplo aquí -> https://www.mql5.com/ru/code/9403
 

El método de los "puntos de control" tiene en cuenta las cotizaciones de los plazos más pequeños.

Si estamos optimizando en 1 hora y el historial se descarga sólo para H1 y M5 -> ¿se utilizará o se ignorará M5?

 
Gracias a todos los que habéis respondido a mi pregunta anterior.
Ahora una pregunta como esta:
puedo usar la siguiente construcción al llamar a MarketInfo:

______________________________________________________________________

for (int ln=1; ln<=Instr_Count; ln++) // Busca a través de la matriz de instrumentos del eje
{
for (int mode=1; mode<=9; mode++) // Recorre los modos de MarketInfo de los instrumentos del eje,
{ // igual al valor actual ln
Level_old=Mas_Ord_Old[0][ln][mode]; // Toma el valor de la matriz Mas_Ord_Old [0][símbolo del instrumento].][MODE=modo]
Level_new=MarketInfo(Instrument[ln] ,mode+10); // Tomar el mismo valor del DC
// Aquí Instrument[ln] según el array de nombres de instrumentos.
¡// devuelve el nombre por el valor de ln, entonces
// añade 10 al valor de mode y lava MODE_XXX)

if (Level_old!=Nivel_nuevo) // Si los datos de la empresa de corretaje han cambiado
{
Nivel_antiguo=Nivel_nuevo; // almacenar el nuevo valor de Nivel_nuevo en Nivel_antiguo,
Mas_Ord_Nuevo[0][ln][modo]=Nivel_nuevo; // almacenarlo en la matriz Mas_Ord_Nuevo
Informar(10,Nivel_nuevo); // Informar de los cambios al corredor
// Esta función también debería mejorarse para obtener mensajes más informativos...
}
} // Si los datos de CC en este modo no han cambiado, repite
// el bucle en el siguiente modo. Hasta el modo=9

} // Hemos comprobado todos los MODOS para el par de divisas dado, pasamos al siguiente

..................

Instrument[ln] es una matriz de tipo cadena con los nombres de los pares de divisas:

Instrumento[1] = "EURUSD";
Instrumento[2] = "USDCHF";
Instrumento[3] = "GBPUSD";
Instrumento[4] = "USDJPY";
Instrumento[5] = "AUDUSD";
Instrumento[6] = "USDCAD";
Instrumento[7] = "EURCHF";
Instrumento[8] = "EURGBP";
Instrumento[9] = "EURJPY";
Instrumento[10]= "EURCAD";
Instrumento[11]= "EURAUD";
Instrumento[12]= "GBPCHF";
Instrumento[13]= "GBPJPY";
Instrumento[14]= "CHFJPY";
Instrumento[15]= "AUDCAD";

__________________________________________________________________________

?????????????????????????????????????????????
Gracias de antemano... :)

 

No he entrado en la lógica de su ciclo. Pero un rápido vistazo a lo que le he subrayado con una línea roja me ha llamado la atención. Si los datos de la CC no han cambiado, repita la operación. Pero, ¿y si lo han hecho? ¿Qué debe hacer el Asesor Experto si no ha cambiado? ¿Dónde está el mando?

Cuando el programador se va a la cama, pone dos vasos junto a la cama. Uno -con agua- por si el programador tiene sed. La otra está vacía, por si el programador no quiere beber.

Es una broma, pero en programación a menudo hay que manejar las dos ramas del árbol de la división dicotómica.

P.D.

Por cierto, artmedia70, fíjate en cómo están dispuestos los paréntesis y las sangrías en tu código en mi captura de pantalla. El código es mucho más legible de esta manera. Es sólo para su información.

 

Una construcción como:

if(A>B)
{
  // какие-то действия
}

es correcto, pero menos conveniente que la construcción de tipo:

if(A>B){
  // какие-то действия
}

La llave de apertura en el primer caso añade una línea extra al código, mientras que en el segundo caso se excluye una línea extra. Una llave de cierre en el segundo caso indica a qué comando se refiere, ya que se encuentra directamente debajo del primer carácter de este comando. Así, es tan fácil encontrar el paréntesis de apertura en el segundo caso como en el primero. Pero, ¿cuál es la ventaja de la segunda vía? Excluir las líneas innecesarias significa que se puede ver más código en la pantalla y el ojo abarca más información. Como resultado, es más fácil navegar por el código, lo que significa una mayor comodidad en la programación.

 
Tengo otra pregunta. Hay un indicador (adjunto) que muestra el precio de apertura y es posible establecer un desplazamiento relativo a la hora de apertura en horas y añadido más en minutos. ¿Puede decirme cómo hacer que el nivel se dibuje sólo a la hora de cierre de la barra diaria? Estoy tan confundida :(
Archivos adjuntos:
 
drknn >>:

Конструкция типа:

является правильной, но менее удобна чем конструкция типа:

Diseño de tipo.

if(A>B)
{
  // какие-то действия
}

Es correcto. Pero una construcción como

if(A>B){
  // какие-то действия
}

es obsoleta. La línea del ejemplo (1) no es superflua y se utiliza para marcar de forma inequívoca el comienzo de un bloque lógico de código. Estamos en el siglo XXI: el ahorro de espacio es ridículo.

Si te conviene, adelante, pero no hagas que los demás lo escriban mal.

¡PERO! ¿Cuál es la ventaja de la segunda forma de escribir? Evitar las líneas innecesarias significa que más código cabe en más líneas y más información es visible para el ojo. Como resultado, es más fácil navegar por el código y, por lo tanto, es más cómodo programar.

No tiene sentido.

Razón de la queja: