Perguntas sobre OOP em MQL5 - página 76

 
awsomdino:

O exemplo deve ser tirado do Saber, não sei o verdadeiro propósito disso, mas vi lá suas "se" árvores para conseguir o que você precisa. Quando cheguei aqui, eu tinha uma pergunta, como fazê-lo imediatamente, e procurar como implementá-lo, reler tudo - realmente só perdeu tempo, não há uma implementação correta, montes de artigos e em todos os lugares onde ele próprio está. Fico realmente desapontado quando você não entende muito sobre o código e fica na encruzilhada de 5 estradas e pensa em qual caminho seguir. Não é nem mesmo uma questão de se você vai encontrar um sistema comercial lucrativo aqui, a questão é se você vai encontrar o caminho ideal aqui) - Esta é a nossa querida MQL5.

Bem, ele está dizendo abertamente que você deve sempre procurar um TS rentável, procurar instrumentos onde você possa aplicar o TS, e você tem que procurar rapidamente.

E nos sinais seu TS mostrou resultados, depois parou de funcionar, depois ligou novamente o TS (suspeito que o reabriu com novos parâmetros), o TS subiu novamente, depois parou de funcionar novamente

Se esta funcionalidade é flexível e permite otimizar e buscar rapidamente ferramentas para aplicar - então você tem tudo o que precisa

mas procure uma única EA, que será testada em todo o histórico disponível em uma ferramenta específica.... Bem, eu já fiz isso, eu não acho que haja nada lá.

 

Igor, estamos falando aqui de código)

e eu também não gosto de seus sistemas, eles estão meio trapaceando

Eu deveria investigar o Fencing, ou Kendo.

 
awsomdino:

Igor, estamos falando aqui de código)

e eu também não gosto de seus sistemas, eles estão trapaceando.

Estou realmente lendo um livro aqui))) ("Programação sem tolos")

não conheço seus sistemas, mas uso códigos da QB - ele é um economizador de tempo real, direi até - ele criou uma infra-estrutura robusta que eu posso usar e usar, mais ele mantém seus códigos constantemente

 
awsomdino:

Classes, herança, virtualização, modelos, foi muito difícil para mim entender isto como uma pessoa autodidata, entendi um pouco e abandonei o OOP, não consigo nem imaginar como as pessoas se incomodam em seus robôs - que você tem que usar tudo isto, é apenas um exibicionista. Estruturas, no máximo.

Semka foi embora com seu desenho, que precisa deste desenho, aqui eles vieram para ganhar dinheiro para si mesmos e seus entes queridos, é claro que os desenvolvedores não sentiram pena dele. Peter, tudo menos comércio). Os programadores estão perplexos com sua funcionalidade desnecessária.

#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);
}

Aqui você tem OOP e macrossubstituição e até mesmo um solitário duvidoso (para aqueles que apreciam a velocidade). Isto foi escrito como exemplo, mas naturalmente, você pode criar um arquivo para logar no construtor, escrever nele em Log(...) e fechá-lo no destrutor. Este é um exemplo do que se trata tudo isso. É claro que você pode trabalhar em funções, mas no caso de seu próprio arquivo, você terá mais código e obterá mais variáveis globais, e não é muito ortodoxo))))

 
Vladimir Simakov:

Aqui você tem OOP e macro substituição e até mesmo um simples singleton (isto é para os amantes da velocidade). Foi escrito, por exemplo, mas naturalmente, você pode criar um arquivo para logar no construtor, escrever para ele em Log(...), e fechá-lo no destrutor. Este é um exemplo do que se trata tudo isso. É claro que você pode trabalhar com funções, mas no caso de seu próprio arquivo, você terá mais código e obterá mais variáveis globais, e não é muito ortodoxo))))

Obrigado, vou salvar o exemplo

 
awsomdino:

Obrigado, eu vou salvar o exemplo.

O engraçado é que você não precisa salvá-lo, você precisa entendê-lo. Uma pessoa que entende escreverá imediatamente que um solitário não é necessário aqui, e tudo pode ser reduzido 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:

O engraçado é que você não precisa salvá-lo, você precisa entendê-lo. Uma pessoa compreensiva escreverá imediatamente que o solitário não é necessário aqui, e tudo pode ser reduzido a

obrigado, é um código que eu compreendo há muito tempo)

a propósito, escreva melhor o código no formato padrão, é em tais nuances que eu fiquei preso

_Symbol
Symbol();

símboloinfo e outras coisas de uma nota que realmente atrapalharam minha atenção e meu tempo.

o que posso dizer, ainda não tenho 100% de informação e tenho dúvidas sobre o que usar dela.

 
Vladimir Simakov:

O engraçado é que você não precisa salvá-lo, você precisa entendê-lo. Qualquer pessoa que entenda escreverá que não precisamos do singleton aqui, e tudo pode ser reduzido a

um mal entendido escreverá que não precisamos de OOP aqui, podemos substituí-lo por uma chamada de função

e depois cair novamente em dois acampamentos e ficar em uma bagunça por várias páginas ))))

 
Igor Makanu:

uma pessoa compreensiva escreverá que o OOP é desnecessário aqui, você pode substituí-lo por uma chamada de função

e depois novamente em dois campos e uma bagunça por várias páginas))))

Muito bem feito! Isso mesmo! E isto?

#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);}
};

Você vai concordar que é mais complicado))))

 
Vladimir Simakov:

Muito bem feito! Isso mesmo! E isto?

Você tem que admitir que é um pouco mais complicado))))

Onde há aulas, há buggies por toda parte)

* e & pode surpreendê-lo.

Não código complicado, a única classe conveniente, construtor com um destruidor, ainda não vejo nenhuma outra vantagem,

estruturas são mais convenientes e menos complicadas de aprender).

Muitos nem sequer conhecem ou entendem as capacidades das estruturas. Não faz muito tempo que ele começou a usá-los publicamente em seu código.