Domande su OOP in MQL5 - pagina 76

 
awsomdino:

L'esempio dovrebbe essere preso da Saber, non so il vero scopo di esso, ma ho visto i suoi se altro) alberi lì per ottenere quello che ti serve. Quando sono venuto qui, ho avuto una domanda, come farlo subito, e cercare come implementarlo, rileggere tutto - davvero perso solo tempo, non c'è implementazione corretta, cumuli di articoli e ovunque il suo. Sono davvero deluso quando non capisci molto del codice e ti trovi all'incrocio di 5 strade e pensi da che parte andare. Non è nemmeno una questione se troverai un sistema di trading redditizio qui, la questione è se troverai la giusta via ottimale qui) - Questo è il nostro caro MQL5.

Bene, sta dicendo apertamente che la ricerca di un TS redditizio, la ricerca di strumenti dove puoi applicare il TS, devi farlo continuamente, e devi cercare velocemente.

E nei segnali il suo TS ha mostrato risultati, poi ha smesso di funzionare, poi ha riacceso il TS (sospetto che l'abbia riaperto con nuovi parametri), il TS è salito di nuovo, poi ha smesso di funzionare di nuovo

Se questa funzionalità è flessibile e ti permette di ottimizzare e cercare rapidamente gli strumenti da applicare - allora hai tutto quello che ti serve

ma cerca un singolo EA, che sarà testato su tutta la storia disponibile su uno specifico strumento.... Beh, l'ho già fatto, non credo che ci sia niente lì

 

Igor, stiamo parlando di codice qui)

e non mi piacciono nemmeno i suoi sistemi, sono mezzi imbrogli

Dovrei dare un'occhiata alla scherma o al Kendo.

 
awsomdino:

Igor, stiamo parlando di codice qui)

Anche a me non piacciono i suoi sistemi, sono truffaldini.

In realtà sto leggendo un libro qui))) ("Programming Without Fools")

Non conosco i suoi sistemi, ma uso i codici di QB - è un vero risparmiatore di tempo, dirò anche - ha creato una robusta infrastruttura che posso prendere e usare, tanto più che mantiene i suoi codici costantemente

 
awsomdino:

Classi, ereditarietà, virtualizzazione, template, è stato molto difficile per me capirlo da autodidatta, ho capito un po' e ho abbandonato OOP, non posso nemmeno immaginare come la gente si preoccupi nei loro robot - che devi usare tutto questo, è solo uno spettacolo. Strutture al massimo.

Semka se n'è andato con il suo disegno, chi ha bisogno di questo disegno, qui sono venuti a guadagnare soldi per se stessi e per i loro cari, naturalmente i costruttori non si sono dispiaciuti per lui. Peter, tutto tranne il commercio). I programmatori sono sconcertati dalla loro inutile funzionalità.

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

Qui avete OOP e macrosostituzione e anche un dodgy loner (per coloro che apprezzano la velocità). Questo è stato scritto come esempio, ma naturalmente si può creare un file per la registrazione nel costruttore, scriverci dentro Log(...) e chiuderlo nel distruttore. Questo è un esempio di ciò di cui si tratta. Certo, potete lavorare sulle funzioni, ma nel caso del vostro file, avrete più codice, e avrete più variabili globali, e non è molto ortodosso))))

 
Vladimir Simakov:

Qui avete OOP e sostituzione di macro e anche un semplice singleton (questo è per gli amanti della velocità). È stato scritto per esempio, ma naturalmente si può creare un file per la registrazione nel costruttore, scriverci in Log(...) e chiuderlo nel distruttore. Questo è un esempio di ciò che riguarda tutto questo. Certo, potete lavorare con le funzioni, ma nel caso del vostro file, avrete più codice, e avrete più variabili globali, e non è molto ortodosso))))

Grazie, salverò l'esempio

 
awsomdino:

Grazie, salverò l'esempio.

La cosa divertente è che non c'è bisogno di salvarlo, ma di capirlo. Una persona che capisce scriverà immediatamente che un solitario non è necessario qui, e tutto può essere ridotto 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:

La cosa divertente è che non c'è bisogno di salvarlo, ma di capirlo. Una persona comprensiva scriverà subito che il solitario non è necessario qui, e tutto può essere ridotto a

grazie, è un codice che ho capito da molto tempo)

a proposito, scrivi meglio il codice in formato predefinito, è su tali sfumature che mi sono bloccato

_Symbol
Symbol();

symbolinfo e altre cose da una nota che mi hanno davvero rovinato l'attenzione e il tempo.

cosa posso dire, non ho ancora il 100% di informazioni e ho domande su cosa usare da esso.

 
Vladimir Simakov:

La cosa divertente è che non c'è bisogno di salvarlo, ma di capirlo. Chiunque capisca scriverà che non abbiamo bisogno del singleton qui, e tutto può essere ridotto a

un incompreso scriverà che non abbiamo bisogno di OOP qui, possiamo sostituirla con una chiamata di funzione

e poi di nuovo cadere in due campi e ottenere un casino per diverse pagine )))

 
Igor Makanu:

una persona comprensiva scriverà che OOP non è necessario qui, si può sostituire con una chiamata di funzione

e poi di nuovo in due campi e un casino per diverse pagine)))

Ben fatto! Proprio così! E questo?

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

Sarai d'accordo che è più complicato)))

 
Vladimir Simakov:

Ben fatto! Proprio così! E questo?

Devi ammettere che è un po' più complicato)))

Dove ci sono classi, ci sono passeggini dappertutto)

* e potrebbe sorprendervi.

Codice non complicato, l'unica classe conveniente, costruttore con un distruttore, non vedo ancora altri vantaggi,

sono più convenienti e meno complicate da imparare).

Molti non sanno nemmeno o non capiscono le capacità delle strutture. Non è passato molto tempo da quando ha iniziato pubblicamente ad usarli ampiamente nel suo codice.