Preguntas sobre POO en MQL5 - página 76

 
awsomdino:

El ejemplo debe ser tomado de Saber, no sé el verdadero propósito de la misma, pero vi su si) árboles allí para conseguir lo que necesita. Cuando llegué aquí, tuve una pregunta, cómo hacerlo de inmediato, y buscar la forma de ponerlo en práctica, volver a leer todo - realmente perdido sólo el tiempo, no hay una aplicación correcta, un montón de artículos y en todas partes su propia. Me decepciona mucho cuando no entiendes mucho del código y te paras en la encrucijada de 5 caminos y piensas qué camino tomar. Ni siquiera se trata de si vas a encontrar un sistema de trading rentable aquí, la cuestión es si vas a encontrar el camino óptimo correcto) - Este es nuestro querido MQL5.

Dice que siempre está buscando una TS rentable, buscando instrumentos en los que se pueda aplicar la TS, y hay que buscar rápido.

Y en las señales su TS mostraba resultados, luego dejaba de funcionar, luego volvía a encender el TS (sospecho que lo reabría con nuevos parámetros), el TS volvía a subir, luego dejaba de funcionar de nuevo

Si esta funcionalidad es flexible y le permite optimizar y encontrar rápidamente las herramientas a aplicar, entonces tiene todo lo que necesita

pero busque un solo EA, que será probado en toda la historia disponible en una herramienta específica.... Bueno, ya lo he hecho, no creo que haya nada ahí.

 

Igor, estamos hablando de código)

y tampoco me gustan sus sistemas, son medio tramposos

Debería buscar en la esgrima, o en el kendo.

 
awsomdino:

Igor, estamos hablando de código)

y tampoco me gustan sus sistemas, son tramposos.

En realidad estoy leyendo un libro aquí))) ("Programación sin tontos")

no conozco sus sistemas, pero uso los códigos de QB - es un verdadero ahorrador de tiempo, incluso diré - creó una infraestructura robusta que puedo tomar y usar, más aún mantiene sus códigos constantemente

 
awsomdino:

Las clases, la herencia, la virtualización, las plantillas, fue muy difícil para mí entender esto como autodidacta, entendí un poco y abandoné la POO, no puedo ni imaginar cómo la gente se molesta en sus robots - que hay que usar todo esto, es sólo un alarde. Estructuras como máximo.

Semka se fue con su dibujo, quien necesita este dibujo, aquí vinieron a ganar dinero para ellos y sus seres queridos, por supuesto los promotores no se compadecieron de él. Peter, todo menos el comercio). Los programadores están desconcertados por su innecesaria funcionalidad.

#define  LOG(dText) CLog::Get().Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
   CLog() {}
public:
   static CLog* Get() {static CLog _log; return &_log;}
   void Log(string line,string sig,string text) {PrintFormat("Line: %s. Signature: %s. %s",line,sig,text);}
};
//+------------------------------------------------------------------+
void OnStart()
{
   LOG("Example 1");
   Test();
}
//+------------------------------------------------------------------+
void Test(){
   string t="Example 2";
   LOG(t);
}

Aquí tienes OOP y macrosustitución e incluso un solitario dudoso (para los que aprecian la velocidad). Esto fue escrito como un ejemplo, pero naturalmente, usted puede crear un archivo para el registro en el constructor, escribir en él en Log(...) y cerrarlo en el destructor. Este es un ejemplo de lo que es todo esto. Por supuesto, puedes trabajar en funciones, pero en el caso de tu propio archivo, tendrás más código, y tendrás más variables globales, y no es muy ortodoxo))))

 
Vladimir Simakov:

Aquí tienes OOP y sustitución de macros e incluso un simple singleton (esto es para los amantes de la velocidad). Fue escrito como ejemplo, pero naturalmente, puedes crear un archivo para el registro en el constructor, escribir en él en Log(...), y cerrarlo en el destructor. Este es un ejemplo de lo que es todo esto. Por supuesto, puedes trabajar con funciones, pero en el caso de tu propio archivo, tendrás más código, y tendrás más variables globales, y no es muy ortodoxo))))

Gracias, guardaré el ejemplo

 
awsomdino:

Gracias, me guardaré el ejemplo.

Lo curioso es que no hace falta guardarlo, sino entenderlo. Una persona que entienda escribirá inmediatamente que aquí no se necesita un solitario, y que todo se puede reducir a

#define  LOG(dText) CLog::Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
public:
   static void Log(string line,string sig,string text) {PrintFormat("Line: %s. Signature: %s. %s",line,sig,text);}
};
//+------------------------------------------------------------------+
void OnStart()
{
   LOG("Example 1");
   Test();
}
//+------------------------------------------------------------------+
void Test(){
   string t="Example 2";
   LOG(t);
}
 
Vladimir Simakov:

Lo curioso es que no hace falta guardarlo, sino entenderlo. Una persona comprensiva escribirá enseguida que el solitario no es necesario aquí, y que todo puede reducirse a

gracias, es un código que entiendo desde hace mucho tiempo)

por cierto, escribe mejor el código en el formato por defecto, es en esos matices donde me atasqué

_Symbol
Symbol();

symbolinfo y otras cosas de una sola nota que realmente arruinaron mi atención y mi tiempo.

que puedo decir, todavia no tengo el 100% de informacion y tengo preguntas sobre que usar fuera de el.

 
Vladimir Simakov:

Lo curioso es que no hace falta guardarlo, sino entenderlo. Cualquiera que entienda escribirá que aquí no necesitamos el singleton, y que todo se puede reducir a

un incomprendido escribirá que aquí no necesitamos la POO, podemos sustituirla por una llamada a una función

y luego de nuevo caer en dos campos y entrar en un lío durante varias páginas )))

 
Igor Makanu:

una persona comprensiva escribirá que la POO es innecesaria aquí, se puede sustituir por una llamada a una función

y luego de nuevo en dos campos y un lío durante varias páginas)))

¡Bien hecho! ¡Así es! ¿Y esto?

#define  LOG(dText) CLog::Ptr().Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
   int cHndl;
   CLog():cHndl(FileOpen(MQLInfoString(MQL_PROGRAM_NAME)+_Symbol+(string)(int)TimeCurrent()+".log",FILE_TXT|FILE_WRITE)){}
  ~CLog() {FileClose(cHndl);}
public:
   static CLog* Ptr() {static CLog _log; return &_log;}
   void Log(string line,string sig,string text){
      string _text=StringFormat("Line: %s. Signature: %s. %s",line,sig,text);
      PrintFormat(_text);
      FileWrite(cHndl,_text);}
};

Estarás de acuerdo en que es más complicado)))

 
Vladimir Simakov:

¡Bien hecho! ¡Así es! ¿Y esto?

Hay que reconocer que es un poco más complicado)))

Donde hay clases, hay buggies por todas partes)

* y & puede sorprenderte.

Código no complicado, la única clase conveniente, constructor con un destructor, no veo ninguna otra ventaja todavía,

estructuras son más convenientes y menos complicadas de aprender).

Muchos ni siquiera saben o no entienden las capacidades de las estructuras. No hace mucho tiempo que Tumblr comenzó a utilizar públicamente en su código.