Autoaprendizaje del lenguaje MQL5 desde cero - página 70

 
MrBrooklin:

Deberíamos llamar a las cosas por su nombre, de momento soy más tonto que un corcho en programación. No entiendo las cosas elementales. Tengo que llamarlo por su nombre - de momento soy tonto en programación y no entiendo las cosas básicas. El fin de semana pasado, utilicé un multímetro y la lupa de mi abuelo para encontrar un condensador SMD defectuoso de dimensiones microscópicas. Se trataba de una avería, un cortocircuito o un "koza", como se solía llamar a partir de la abreviatura de cortocircuito, es decir, cortocircuito. Aquí hay una foto del condensador SMD "pinchado" con un aumento de 4x en un smartphone y posterior procesamiento en Paint, ya que es un elemento demasiado microscópico.


Decidí divagar un poco y al menos mostrar algo.

Y sobre el deseo de aprender el lenguaje, lo tengo, así como la esperanza de dominar los fundamentos de la programación.

Saludos, Vladimir.


¡Genial! Estas cosas, por cierto, están cerca unas de otras.
Cuando era estudiante, en los años 90, estos departamentos estaban ubicados en el mismo departamento de tecnología de la información.
 
Roman Shiredchenko:

Aquí - permítame discrepar con usted, puede y debe codificar, lo que le impide llegar al fondo... para comprender y así sucesivamente... también IMHO, hay artículos, hay robots en kodobase - leer, analizar el código ya listo - aprender el estilo de la escritura de inmediato. ¿Por qué quieres reinventar la rueda? Aprenda de inmediato a partir de un código alfabetizado.

Aquí hay un arrastre de V. Karputov - está en ROBOTS, mira - ajústalo a tus necesidades (términos y tus fantasías).

P.D. Gracias a ti, el tema de esta rama, empecé a entender el código, sus características..., a estudiar artículos y a repetir cosas básicas para mí...

Gracias por el consejo. :-) (no es broma)

¡Hola, Roman! Es gratificante leer que el tema creado sigue siendo útil para alguien más que para mí. Gracias.

En cuanto a los códigos escritos por Vladimir Karputov, para mí están, de momento, fuera de mi alcance. En general, no entiendo los códigos que contienen los archivos y clases incluidos. ¡Por qué se ha incluido un archivo u otro en otro EA es un gran misterio!

Principalmente estoy buscando y estudiando los códigos escritos sin los archivos y clases incluidos. Los Asesores Expertos escritos por Vladimir Khlystov son muy buenos para el autoaprendizaje. ¡Un GRAN AGRADECIMIENTO especial para él! Es una pena que haya muy pocos Asesores Expertos en MQL5.

Ahora quiero explicar por qué te pido que no uses un código ya hecho. La razón es que el código listo puede insinuarte y ya no te interesa estudiar el idioma. Sólo tienes que pegar el código ya hecho en tu Asesor Experto, funciona, así que ¿de qué servirá? Y, por el contrario, cuando no se puede entender y escribir inmediatamente algo, como, por ejemplo, la incomprensión actual del operador de bucle, ¡es muy estimulante y motivador!

No veo nada malo en aprender MQL5. Estoy viviendo una etapa similar en mi vida, cuando estudiaba electrónica y pasé del estudio de un elemento base al estudio de otro. La única diferencia es que en la juventud todo se percibe y se asimila más fácilmente que ahora. Ya lo he experimentado.

Gracias a todos por las palabras de apoyo y las sugerencias constructivas. ¡Sigo estudiando MQL5! Durante medio día "desapareceré", porque tengo que ir al otro extremo de Moscú por negocios, y luego continuaré.

Sinceramente, Vladimir.

 
Aleksey Masterov:

¡Genial! Todas estas cosas están cerca, por cierto...
En mi universidad, que estudié en los años 90, estos departamentos estaban en el mismo departamento de informática.

en los años 90, compraban diplomas.

- ¿No ves ahora, que hay estos jefes de departamento sentados en todas las oficinas

 
SanAlex:

en losaños 90, comprando diplomas.

- ¿No ves ahora que hay estos habitantes del púlpito en todas las oficinas?

Ni siquiera se trata de la posibilidad de comprar un diploma en esa época, el hecho es que en los últimos 30 años la tecnología ha dado un paso tan grande que los conocimientos son MUY escasos, por ejemplo, yo tuve que aprender autocad que no existía entonces, también hice un C++ MUY básico. y así en todo, hay que aprender constantemente, mejorar, estar al día)

 
VVT:

Ni siquiera se trata de la capacidad de comprar un título en su momento, el hecho es que en los últimos 30 años, la tecnología ha avanzado tanto que los conocimientos ya son MUY escasos, por ejemplo, yo entonces tuve que terminar de aprender autocad que entonces simplemente no existía, también hice un C++ MUY básico. y así en todo, hay que aprender constantemente, mejorar, estar al día)

Latecnología ha avanzado tanto en los últimos 30 años, que sigue utilizando los desarrollos de los años 60.

 

¡Buenas tardes a todos!

Si quisiera añadir algo interesante, creo que la idea de "autoformación en MQL5 desde cero" no es del todo correcta. Si una persona es 0 en programación, tiene que aprender a programar primero. Si el objetivo es aprender a programar en MQL desde cero, una persona debe primero aprender aprogramar en C, al menos lo más básico, y luego aprender a escribir en MQL, porque MQL es de hecho C, pero está especializado para una determinada tarea, una persona no entiende cómo funcionan los bucles, y ya tratando de escribir programas. Es como intentar aprender latín sin saber ruso...

Otra cosa es que C no es un lenguaje muy amigable para aprender a programar, es sencillo, pero es demasiado conciso, es difícil para un principiante leer y entender el código sin tener conocimientos básicos de algoritmos, tipos de datos, álgebra booleana, en C tres caracteres seguidos pueden significar varias cadenas en otro lenguaje.

¡Para aprender a programar simplemente desde cero, para la base, para aprender a hablar con un ordenador en un (no importa qué) lenguaje, yo recomendaría comenzar con Pascal, el libro más fácil para empezar con él (2-3 semanas a gusto), a continuación, C (allí después de Pascal max semana con diligencia, dominar la sintaxis, me refiero a las habilidades básicas del lenguaje!) y luego tomar lenguajes especializados como MQL, porque MQL es C, que tiene un pequeño giro y simplificación, ya que está diseñado para una sola tarea y el compilador sabe lo obvio. Y C a su vez es una especie de Pascal comprimido en RAR, pero Pascal es casi inglés =).

Ahora sobre los bucles:

Cuando aprendía a programar, me ayudaba la analogía con la suma en álgebra, donde se especifica el valor inicial de n, el valor final de n y la fórmula con ese n a calcular.

 
VVT:

Ni siquiera se trata de la posibilidad de comprar un diploma en su momento, el hecho es que en los últimos 30 años la tecnología ha avanzado tanto que esos conocimientos son MUY escasos, por ejemplo yo tuve que aprender autocad que no existía en ese entonces, también hice C++ MUY básico. y así en todo, hay que aprender constantemente más, mejorar, estar al día)



:-) autocad estaba por ahí. Tuvimos clases basadas en él para aprender la circuitería y la disposición de las capas... placas de circuitos
 
Aleksey Masterov:
:-) autocad era. Tuvimos una clase basada en ella para aprender la circuitería y la disposición de las capas... de los circuitos impresos
.

Sólo teníamos 22 ordenadores, que se cargaban sólo al final de la clase) el profesor sólo los mantenía encendidos durante el día, era imposible trabajar, ni siquiera hablábamos de cad...

 
MrBrooklin:

¡Hola, Roman! Es agradable leer que el tema está ayudando a alguien más que a mí. Gracias.

En cuanto a los códigos escritos por Vladimir Karputov, están fuera de mi alcance por ahora. En general, no entiendo los códigos que contienen los archivos y clases incluidos. ¡Por qué se ha incluido un archivo u otro en otro EA es un gran misterio!

Principalmente estoy buscando y estudiando los códigos escritos sin los archivos y clases incluidos. Los Asesores Expertos escritos por Vladimir Khlystov son muy buenos para el autoaprendizaje. ¡Un GRAN AGRADECIMIENTO especial para él! Es una pena que haya muy pocos Asesores Expertos en MQL5.

Ahora quiero explicar por qué te pido que no sugieras un código ya hecho. La razón es que el código listo puede insinuarte y ya no te interesa estudiar el idioma. Sólo tienes que pegar el código ya hecho en tu Asesor Experto, funciona, así que ¿de qué servirá? Y, por el contrario, cuando no se puede entender y escribir inmediatamente algo, como, por ejemplo, la incomprensión actual del operador de bucle, ¡es tan estimulante y motivador que uno apenas puede creerlo!

No veo nada malo en aprender MQL5. Estoy viviendo aproximadamente la misma etapa de mi vida, cuando estudiaba electrónica y pasaba del estudio de un elemento base al estudio de otro. La única diferencia es que en la juventud todo se percibe y se asimila más fácilmente que ahora. Ya lo he experimentado.

Gracias a todos por las palabras de apoyo y las sugerencias constructivas. ¡Sigo estudiando MQL5! Durante medio día "desapareceré", porque tengo que ir al otro extremo de Moscú por negocios, y luego continuaré.

Sinceramente, Vladimir.

Estoy de acuerdo: ¡sus códigos también son buenos! Te pones nervioso por nada. Resolver tranquilamente el código sin ninguna prisa, y eso es todo. Aquí está todo elemental aquí - seleccionar y arrastrar: (cuánto más fácil - sólo su tema de elección Posición necesaria ... :-))

//--- при таком методе мы будет сюда попадать на каждом тике.
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Bid()-ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }

            if(m_position.PositionType()==POSITION_TYPE_SELL)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Ask()+ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }
           }
  }

Además de eso, incluir archivos - significa que los tienes en tu código como funciones también y eso es todo.

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
 

Aquí hay otro artículo - arrastre 2010 - arrastre está en el asesor de la entrega estándar MACD.



¡¡¡Aquí hay otra gran mascada sobre el cálculo del volumen de posiciones!!! Me metí de lleno en él... :-)

Otra forma de determinar el volumen total de posiciones en un símbolo es recorrer todas las posiciones en el bucle, el número de posiciones está determinado por la función PositionsTotal(). Comprobando con la función PositionGetSymbol(), encuentra el símbolo necesario y determina el volumen y la dirección de la posición(PositionGetDouble() con el identificador POSITION_VOLUME y PositionGetInteger() con el identificador POSITION_TYPE).

En este caso, la función completa tendrá el siguiente aspecto

double fSymbolLots(string aSymbol)
  {
   double TmpLots=0;
   for(int i=0;i<PositionsTotal();i++) // Перебор всех позиций
     {
      if(PositionGetSymbol(i)==aSymbol) // Найдена позиция с заданным символом
        {
         TmpLots=PositionGetDouble(POSITION_VOLUME);
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            TmpLots*=-1; // В зависимости от направления позиции устанавливаем знак числа
           }
         break;
        }
     }
   TmpLots=NormalizeDouble(TmpLots,2);
   return(TmpLots);
  }
Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...
Razón de la queja: