Discussione sull'implementazione dei consiglieri.

 

Ciao, sto studiando mql5 ed è da molto tempo che non riesco a decollare. Poiché ognuno scrive programmi in modo diverso, ognuno è sicuro del suo approccio, ed è difficile per i principianti capire quale sia quello ottimale.

Io stesso vorrei capire e penso che la comunità trarrebbe beneficio da una discussione pubblica sull'implementazione di soluzioni ottimali per i tipici blocchi EA. Per esempio, qualcuno non scrive quasi nulla nell'inizializzazione, e qualcuno riempie questo blocco molto pesantemente. Quali controlli dovrebbe o non dovrebbe fare un EA. Prese e fermate virtuali o no, ecc. Anche i modi stessi di attuare la strategia sono interessanti.

Quindi, il mio suggerimento è che se qualcuno vuole condividere la conoscenza. Poi possiamo discutere l'implementazione, per esempio, sull'esempio di nettler, o un semplice Expert Advisor basato sulla media mobile, come ad esempio se c'è una deviazione dalla media, poi aspettare il ritorno alla media. O qualsiasi altra strategia che vorresti mostrare. Pubblicate il codice con commenti sul perché avete deciso di scriverlo in questo modo.

Grazie in anticipo a coloro che decidono di contribuire a educare e migliorare la qualità del codice nella comunità open source.

 
Ivan_Invanov:

Ciao, sto studiando mql5 ed è da molto tempo che non riesco a decollare. Poiché ognuno scrive programmi in modo diverso, ognuno è sicuro del suo approccio, ed è difficile per i principianti capire quale sia quello ottimale.

Io stesso vorrei capire e penso che la comunità trarrebbe beneficio da una discussione pubblica sull'implementazione di soluzioni ottimali per i tipici blocchi EA. Per esempio, qualcuno non scrive quasi nulla nell'inizializzazione, e qualcuno riempie questo blocco molto pesantemente. Quali controlli dovrebbe o non dovrebbe fare un EA. Prese e fermate virtuali o no, ecc. Anche i modi stessi di attuare la strategia sono interessanti.

Quindi, il mio suggerimento è che se qualcuno vuole condividere la conoscenza. Poi possiamo discutere l'implementazione, per esempio, sull'esempio di nettler, o un semplice Expert Advisor basato sulla media mobile, come ad esempio se c'è una deviazione dalla media, poi aspettare il ritorno alla media. O qualsiasi altra strategia che vorresti mostrare. Pubblicate il codice con commenti sul perché avete deciso di scriverlo in questo modo.

Grazie in anticipo a coloro che scelgono di contribuire a educare e migliorare la qualità del codice nella comunità open source.

Hai letto tutti gli articoli sullo sviluppo di EA su questo sito e non hai pensato che fosse sufficiente? e tu sei un letteralista)

 
Aleksey Mavrin:

hai letto tutti gli articoli sullo sviluppo di EA su questo sito e non pensi che sia sufficiente? e tu sei un letteralista)

Trovo difficile formare un paradigma per l'esecuzione del programma. Sì, ho visto questo articolo sulla riduzione del tempo, è molto utile. Ma a cosa serve ridurre il tempo di esecuzione di un singolo pezzo. Quando, per esempio, l'approccio della soluzione stessa rallenta significativamente rispetto ad un altro approccio della soluzione. Sei sicuro che non ci sia un modo migliore di scrivere EAs di te. Congratulazioni, devi essere di altissimo livello. Forse puoi mostrarci un esempio di codice allora?
 
Ivan_Invanov:
Trovo difficile formare un paradigma per la conduzione di un programma. Sì, ho visto questo articolo sulla riduzione del tempo, è molto utile. Ma a cosa serve ridurre il tempo di esecuzione di un singolo pezzo. Quando, per esempio, l'approccio della soluzione stessa rallenta significativamente rispetto ad un altro approccio della soluzione. Sei sicuro che non ci sia un modo migliore di scrivere EAs di te. Congratulazioni, devi essere di altissimo livello. Forse puoi mostrarmi un esempio di codice allora?
Tu fai quello che fai. E col tempo svilupperete il vostro paradigma.
 
Ivan_Invanov:
Non riesco a formare un paradigma di esecuzione del programma. Sì, ho visto questo articolo sulla riduzione del tempo ed è molto utile. Ma non ha senso diminuire il tempo di esecuzione di un frammento separato. Quando, per esempio, l'approccio della soluzione stessa rallenta significativamente rispetto ad un altro approccio della soluzione. Sei sicuro che non ci sia un modo migliore di scrivere EAs di te. Congratulazioni, devi essere di altissimo livello. Forse puoi mostrarci un esempio di codice allora?

I link agli articoli qui sono inseriti automaticamente per parole chiave.

E intendevo un sacco di articoli con Expert Advisors già pronti, dove gli autori spiegano il codice specialmente per persone come te. Li avete guardati? Ci sono abbastanza esempi lì.

Il modo ottimale è una nozione situazionale.

Il tuo approccio di sistema è buono.

Dividere il processo di creazione di EA in due fasi:

1. algoritmo

2. il codice.

La cosa principale è imparare a formulare l'algoritmo. E si può codificare in molti modi, quello che è più conveniente.

Gli automi finiti con diversi feedback sono familiari? In caso contrario, studiate la teoria e avrete un'idea migliore di dove iniziare.

 
Ivan_Invanov:

Ciao, sto studiando mql5 ed è da molto tempo che non riesco a decollare. Poiché ognuno scrive programmi in modo diverso, ognuno è sicuro del suo approccio, ed è difficile per i principianti capire quale sia quello ottimale.

Io stesso vorrei capire e penso che la comunità trarrebbe beneficio da una discussione pubblica sull'implementazione di soluzioni ottimali per i tipici blocchi EA. Per esempio, qualcuno non scrive quasi nulla nell'inizializzazione, e qualcuno riempie questo blocco molto pesantemente. Quali controlli dovrebbe o non dovrebbe fare un EA. Prese e fermate virtuali o no, ecc. Anche i modi stessi di attuare la strategia sono interessanti.

Non capisco il punto dell'argomento.

È chiaro che ogni codificatore ha le sue preferenze, i suoi principi, le sue vedute sulla struttura del programma. Voi avrete le vostre. Per svilupparle, dovete scrivere il codice e testarlo. Man mano che identificate i modelli e trovate gli errori, vi farete un'idea di quale sia la struttura del programma più adatta a voi.

Implementazioni specifiche - in KodoBase, molte opzioni. Prendetene uno qualsiasi ed esploratelo, usatelo e modificatelo.

Di cos'altro avete bisogno?

 
Georgiy Merts:

Non capisco il senso dell'argomento.

È chiaro che ogni codificatore ha le sue preferenze, i suoi principi, le sue opinioni sulla struttura del programma. Anche tu avrai le tue. Per risolverle, devi scrivere codice e testarlo. Man mano che identificate i modelli e trovate gli errori, vi farete un'idea di quale sia la struttura del programma più adatta a voi.

Implementazioni specifiche - in KodoBase, molte opzioni. Prendetene uno qualsiasi ed esploratelo, usatelo e modificatelo.

Di cos'altro avete bisogno?

Sto guardando Kodobase, naturalmente. Non ho dubbi sul codice di un solo autore, metaquotes, è lo sviluppatore ufficiale. Sto imparando da lui. L'uomo lì scrive in modo logico e usa al massimo le funzioni integrate. Ma ha pochissimi consiglieri esperti. In generale, c'è un sacco di codice discutibile scritto da diversi autori, e spesso succede che si guarda il codice e non si capisce perché sia stato scritto in quel modo. Beh, sono sorpreso di quanto la gente sia fiduciosa in queste implementazioni. Forse sono troppo preoccupato, naturalmente. Probabilmente dovrei scriverlo solo per farlo funzionare, come hanno detto qui.

 
Ma mi sembra che prima o poi ci sarà una sorta di consenso nell'open source. Dopo tutto, la gente scrive sempre la stessa cosa, solo con delle variazioni. Quindi perché non fare pezzi pronti e discuterne. Come qui abbiamo un'implementazione di un generatore di netflow e ora è portato a velocità e funzionalità ottimali. Lo farò. Solo che non ho abbastanza conoscenze per utilizzare le soluzioni ottimali. Ora disegnerò uno schema, e quello che mi verrà in mente per primo, sarà quello. O lo prenderò in prestito da qualcun altro con lo stesso livello di conoscenza. Ma se facessimo esempi di implementazione, persone esperte ed erudite si unirebbero, aggiusterebbero qualcosa, discutendo tra loro e raggiungendo un consenso. Alla fine, tutti avrebbero ottenuto un codice di qualità, o almeno un esempio da seguire.
 
Ivan_Invanov:
Ma mi sembra che prima o poi ci sarà un consenso nell'open source. Dopo tutto, la gente scrive di volta in volta la stessa cosa, solo con delle variazioni. Quindi perché non fare pezzi pronti e discuterne. Come qui abbiamo un'implementazione di un generatore di netflow e ora è portato a velocità e funzionalità ottimali. Lo farò. Solo che non ho abbastanza conoscenze per utilizzare le soluzioni ottimali. Ora disegnerò uno schema, e quello che mi verrà in mente per primo, sarà quello. O lo prenderò in prestito da qualcun altro con lo stesso livello di conoscenza. Ma se facessimo esempi di implementazione, persone esperte ed erudite si unirebbero, aggiusterebbero qualcosa, discutendo tra loro e raggiungendo un consenso. Alla fine, tutti avrebbero ottenuto un codice di qualità, o almeno un esempio da seguire.

L'idea è buona. La base di Igor Kim è stata molto utile al momento, lo ringrazio molto per il suo lavoro :)

 
Ivan_Invanov:

Guardando il kodobase, naturalmente. Non ho dubbi sul codice di un solo autore, metaquotes, che è lo sviluppatore ufficiale. Sto imparando da lui. L'uomo lì scrive in modo logico e usa le funzioni integrate al massimo. Ma ha pochissimi consiglieri esperti. In generale, c'è un sacco di codice discutibile scritto da diversi autori, e spesso succede che si guarda il codice e non si capisce perché sia stato scritto in quel modo. Beh, sono sorpreso di quanto la gente sia fiduciosa in queste implementazioni. Forse sono troppo preoccupato, naturalmente. Potrei doverlo scrivere solo per farlo funzionare, come si dice qui.

Questa è un'altra questione.

Notate che a volte guardo il mio codice e non riesco a capire perché è scritto in un posto così particolare. Ecco perché cerco di commentare tali frammenti in modo molto dettagliato cercando di menzionare tutte le sottigliezze. Ma ancora vedo regolarmente che non ho considerato alcune cose.

Inoltre, uso il seguente codice (per determinare il tipo di esecuzione), che è stato scritto da un utente molto autorevole del forum:

ENUM_ORDER_TYPE_FILLING CSymbolInfo::GetTypeFilling(string strSymbol,ENUM_ORDER_TYPE_FILLING otfFilingType)
{
   #ifndef __MQL5__
      return(otfFilingType);
   #else // __MQL5__
      
   const ENUM_SYMBOL_TRADE_EXECUTION steExeMode = (ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(strSymbol, SYMBOL_TRADE_EXEMODE);
   const int iFillingMode = (int)::SymbolInfoInteger(strSymbol, SYMBOL_FILLING_MODE);

   return((iFillingMode == 0 || (otfFilingType >= ORDER_FILLING_RETURN) || ((iFillingMode & (otfFilingType + 1)) != otfFilingType + 1)) ?
         (((steExeMode == SYMBOL_TRADE_EXECUTION_EXCHANGE) || (steExeMode == SYMBOL_TRADE_EXECUTION_INSTANT)) ?
           ORDER_FILLING_RETURN : ((iFillingMode == SYMBOL_FILLING_IOC) ? ORDER_FILLING_IOC : ORDER_FILLING_FOK)) :
          otfFilingType);
  
   #endif // __MQL5__
};

Inoltre, questo stesso forumer ha detto, quando gli è stato chiesto, che non si ricorda più, è solo che questo codice è già stato testato molte volte e ci si può fidare.

Beh, se riesco a sostituire queste stupide "domande" con vere e proprie affermazioni if, lo capirò... Per ora...

 
È meglio fare uno schema a blocchi e scrivere direttamente con questi blocchi, io ho fatto così all'inizio, poi si cominciano a usare le funzioni, ma io uso solo l'OOP di altre persone. In generale, bisogna scrivere in modo tale che si possano fare facilmente delle modifiche a un pezzo di codice senza dover riscrivere tutto.