Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1247

 
MrBrooklin:

Buenas noches a todos.

En mi vejez estoy tratando de dominar los fundamentos de MQL5. La curiosidad me está matando: me pregunto si no podré dominar la programación cuando tenga unos 60 años. Sin embargo, me he hecho amigo del HTML simple, incluso he creado mis propios sitios web en él. Simple, realmente, pero aún así... Si mis preguntas causan irritación, dímelo inmediatamente, así no haré más preguntas ingenuas y no irritaré a la gente.

Entonces, abrí el primer código que vi. He comentado el significado de una línea de este código usando el traductor de Google y la referencia MQL5. ¿Qué le pido a la comunidad? Mira los comentarios y si no son ciertos, por favor corrige mi pensamiento:

Para algunos es un libro abierto, pero a mí me parecen los mismos caracteres chinos. Por favor, no te rías demasiado.

¿Por qué hago esto? Por lo tanto, estoy tratando de averiguar por mí mismo lo desesperado que estoy en la programación.

Saludos, Vladimir.

Recomiendo utilizar la ayuda de ME - describe el propósito de todos los operadores y funciones del lenguaje.

https://www.mql5.com/ru/docs/trading/positionselect

Документация по MQL5: Торговые функции / PositionSelect
Документация по MQL5: Торговые функции / PositionSelect
  • www.mql5.com
Выбирает открытую позицию для дальнейшей работы с ней. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно...
 
MrBrooklin:

Buenas noches a todos.

En mi vejez estoy tratando de dominar los fundamentos de MQL5. La curiosidad me está matando: me pregunto si no podré dominar la programación cuando tenga unos 60 años. Sin embargo, me he hecho amigo del HTML simple, incluso he creado mis propios sitios web en él. Simple, realmente, pero aún así... Si mis preguntas causan irritación, dímelo inmediatamente, así no haré más preguntas ingenuas y no irritaré a la gente.

Entonces, abrí el primer código que vi. He comentado el significado de una línea de este código usando el traductor de Google y la referencia MQL5. ¿Qué le pido a la comunidad? Mira los comentarios y si no son ciertos, por favor corrige mi pensamiento:

Para algunos es un libro abierto, pero a mí me parecen los mismos caracteres chinos. Por favor, no te rías demasiado.

¿Por qué hago esto? Por lo tanto, estoy tratando de averiguar por mí mismo lo desesperado que estoy en la programación.

Saludos, Vladimir.

Si tienes la voluntad, es mejor para tu cerebro que resolver crucigramas. Intente comprender de inmediato que las cuentas de Hadge se escriben de forma diferente a las cuentas de Netting. Esta línea de código

if(PositionSelect(_Symbol)) // если выбираем открытую позицию на графике текущего символа

se utiliza para la compensación, pero puede causar errores en las cuentas de Hadge si hay más de una posición abierta.

 
Aleksey Vyazmikin:

Recomiendo usar el ayudante ME - el propósito de todos los operadores y funciones del lenguaje se describen allí.

https://www.mql5.com/ru/docs/trading/positionselect

¡Hola Alexey!

Gracias por sus comentarios. Estoy utilizando la ayuda en el MetaEditor. Por el momento, el principal problema es entender el propósito de los operadores y las funciones, así como por qué necesito un determinado operador o función en un lugar determinado del código del programa. Está más o menos todo descrito en el FAQ, pero según tengo entendido esta información no es para los que empiezan a entrar en detalles desde cero, sino para los que ya tienen algo de experiencia en programación en otros lenguajes.

Saludos, Vladimir.

 
Alexey Viktorov:

Si quieres, es mejor para tu cerebro que hacer crucigramas. Intente comprender de inmediato que las cuentas de Hadge no se escriben de la misma manera que las de Netting. Esta línea de código

Esta línea de código se utiliza para la compensación, pero podría causar errores en las cuentas de Hadge si se abre más de una posición.

¡Hola Alexey!

Gracias por el consejo sobre las cuentas de Hadge y Netting, así como por el apoyo.

Tengo entendido que si no hay corrección en los comentarios de una línea de código, ya está bien. Significa que he entendido la esencia de esta línea de código lo mejor posible. Seguiré estudiando la programación de MQL5 y publicaré periódicamente mi código con comentarios. Tal vez, en algún momento de autoaprendizaje podré desarrollar un código simple de Asesor Experto por mi cuenta.

Sinceramente, Vladimir.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 

Hola a todos.

Sigo aprendiendo MQL5 y aquí hay una nueva línea de código, que no es clara incluso después de trabajar con ella a través de la Ayuda y Google Translate.

FileSeek(FileHandle,0,SEEK_SET); // перемещаем положение указателеля в файле с уникальным указателем на "0" байт в начале файла

El comentario está hecho por mí, pero su significado no está del todo claro. Apenas he averiguado qué es FileHandle. Dividirlo en dos palabras File y Handle. Google lo tradujo como un descriptor de archivo. ¿Qué es un descriptor y para qué sirve? Es bueno que el autor del artículo haya explicado aquí https://www.mql5.com/ru/articles/496 que Handle es un puntero único a algo (un archivo, un indicador, etc.) en ruso.

Ahora queda por entender el significado de todo el código. Pido ayuda a la comunidad, he pasado mucho tiempo con este código hasta las 3 de la mañana, y mi cabeza es completamente torpe.

Saludos, Vladimir.

Быстрый старт или краткий курс для начинающих
Быстрый старт или краткий курс для начинающих
  • www.mql5.com
Здравствуй дорогой читатель. В данной статье я попробую рассказать и покажу как можно просто и быстро освоить принципы построения торговых советников, работу с индикаторами и т.д. Эта статья ориентирована на новичков, в ней не будет сложных и трудных для понимания примеров. Скорей всего, она не будет интересной и познавательной для тех, кто уже...
 
MrBrooklin:

Hola a todos.

Sigo aprendiendo MQL5 y aquí hay una nueva línea de código, que no es clara incluso después de trabajar con ella a través de la Ayuda y Google Translate.

El comentario está hecho por mí, pero su significado no está del todo claro. Apenas he averiguado qué es FileHandle. Dividirlo en dos palabras File y Handle. Google lo tradujo como un descriptor de archivo. ¿Qué es un descriptor y para qué sirve? Es bueno que el autor del artículo haya explicado aquí https://www.mql5.com/ru/articles/496 que Handle es un puntero único a algo (un archivo, un indicador, etc.) en ruso.

Ahora queda por entender el significado de todo el código. Pido ayuda a la comunidad, he pasado mucho tiempo con este código hasta las 3 de la mañana, y mi cabeza es completamente torpe.

Sinceramente, Vladimir.

Pero, ¿por qué hay que traducir algo en google cuando la documentación tiene todo escrito en ruso?

Desplaza la posición del puntero del archivo el número de bytes especificado en relación con la posición especificada.

Y yo traduciría tu comentario así: "Mueve el puntero del archivo desde el principio en 0 bytes. En otras palabras, al principio del archivo".

Punto de referencia para el desplazamiento. Puede tomar uno de los valores de ENUM_FILE_POSITION

Identificador

Descripción

SEEK_SET

Inicio del archivo

SEEK_CUR

Posición actual del puntero del archivo

SEEK_END

Fin del archivo

Документация по MQL5: Файловые операции / FileSeek
Документация по MQL5: Файловые операции / FileSeek
  • www.mql5.com
//|                                                Demo_FileSeek.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Script program start function                                    |...
 
Alexey Viktorov:

¿Y por qué traducir algo con google, cuando la documentación lo dice todo en ruso?

Y yo traduciría tu comentario como: "Mueve el puntero del archivo desde el principio a 0 bytes. En otras palabras, al principio del archivo".

Identificador

Descripción

SEEK_SET

Inicio del archivo

SEEK_CUR

Posición actual del puntero del archivo

SEEK_END

Fin del archivo

¡Hola Alexey!

He buscado en Google el significado de la combinación de palabras FileHandle. Quería entender qué era y de dónde venía. La Ayuda no me ayudó, así que tuve que buscar en Google. Cuando lo descubrí, resultó que el propio autor del código había creado una variable para almacenar el archivo con un puntero único. En cuanto a FileSeek y SEEK_SET la ayuda me ayudó, pero el significado de la cadena no estaba claro. Ahora, con la ayuda de tu consejo, quedó claro para qué sirve en un archivo con un puntero único.

Muchas gracias por su ayuda.

Sinceramente, Vladimir.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
  • www.mql5.com
Большая часть файловых функций связана с операциями чтения/записи информации. При этом с помощью функции FileSeek() можно указывать положение файлового указателя на позицию внутри файла, с которой будет...
 
MrBrooklin:

¡Hola Alexey!

He buscado en Google el significado de la frase FileHandle. Quería entender qué es y de dónde viene. La Ayuda no me ayudó, así que tuve que acudir a Google. El texto de ayuda para FileSeek y SEEK_SET era muy útil, pero el significado de la cadena no estaba claro. Ahora, con la ayuda de tu consejo, quedó claro para qué sirve en un archivo con un puntero único.

Muchas gracias por su ayuda.

Saludos, Vladimir.

El puntero no es único, es sólo la posición de inicio de una escritura o lectura. Algo así como la forma de escribir una declaración. La cabecera comienza en la segunda mitad de la página, el resto del texto en el borde izquierdo de la página. O empezamos un nuevo párrafo un poco más atrás del borde de la línea. Este es el comienzo de la línea y este es el puntero. Podemos mover el inicio de una línea a cualquier lugar del texto existente y escribir o leer desde ese lugar.

El mango del archivo es único. También puede llamarse identificador. De hecho, es una variable habitual. Puedes llamarlo abrakadabra y asignarle un manejador de archivo.

 
Sergey:

Buenas tardes.

Estoy tratando de averiguar el código del indicador. Atascado en una línea.

¿Qué significa la última línea y cómo puede reescribirse de forma más sencilla (más clara)?

Está escrito de forma mucho más sencilla que cualquier otra construcción. Se llama: operador ternario

cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;
cancl[i] = if(acD==1 && aoD==1) { 0 } else { if(acD==2 && aoD==2) { 1 else { (acD==1 && aoD==2)? 2 : 3;
He mostrado el código de forma convencional, así que espero que lo entiendas
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Sergey:

Buenas tardes.

Estoy analizando el código del indicador. Estoy atascado en una línea.

¿Qué significa la última línea y cómo se puede reescribir de forma más sencilla (más clara)?

// cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;

if      (acD==1 && aoD==1)   { cancl[i]=0; }
else if (acD==2 && aoD==2)   { cancl[i]=1; }
else if (acD==1 && aoD==2)   { cancl[i]=2; }
else                         { cancl[i]=3; }

pero no es más sencillo ni más claro en mi opinión. Está casi en el estilo de MT :-) Para estar en estilo debería haber más cuerdas y deberían ir en estilo "escalera" :-)

Razón de la queja: