Logica di apprendimento - pagina 5

 
Vinin:


Non è la mia linea. È l'autore

Codice ottimale di start()

Queste 2 linee sembrano strane, per usare un eufemismo:

   limit = Bars - counted_bars-1;
   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;

meglio così:

   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;
   else limit = Bars - counted_bars-1;
 
PapaYozh:

Non capisco perché dobbiamo ballare intorno alle variabili booleane quando possiamo scriverlo in questo modo:

Mi è piaciuto, grazie per avermelo ricordato, PapaYozh. Io stesso ho creato tali costruzioni - e ho dimenticato...
 
Vinin:


E anche la logica, la logica del pensiero.

La terza opzione è quella di abbandonare completamente le condizioni logiche dell'indicatore. La domanda sorge spontanea: è possibile?

Proviamo.

Per questo aggiungeremo un paio di variabili logiche

L'intero codice della funzione di avvio ora assomiglia a questo


Mi sembra che possa essere semplificato

for(int i = 0; i < limite; i++)
{
// Opzione tre_v1

high=iMA(NULL,0,periodo,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,periodo,0,MODE_EMA,PRICE_LOW,i);
atr=high-low;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}

 
Mathemat:
Mi è piaciuto, grazie per avermelo ricordato, PapaYozh. Io stesso ho creato tali costruzioni - e ho dimenticato...

Secondo me, c'è un uso eccessivo della chiamata di funzione Symbol().

Io lo scriverei così:

   string smbl=Symbol();
   showEUR  = ( StringFind(smbl, "EUR", 0) != -1);
   showUSD  = ( StringFind(smbl, "USD", 0) != -1);
   showGBP  = ( StringFind(smbl, "GBP", 0) != -1);
   showCHF  = ( StringFind(smbl, "CHF", 0) != -1);
   showJPY  = ( StringFind(smbl, "JPY", 0) != -1);
Ma non si tratta di logica :)
 
Vinin:

È davvero molto semplice. C'è il desiderio di aiutare gli altri a fare il miglior codice, e di imparare dagli altri.

Non è un segreto che alla fine si sviluppano certi stereotipi che a volte (più spesso) aiutano e a volte ostacolano.

Preparerò una variante dell'indicatore e cercherò di spiegare cosa è stato fatto e perché. Se siete interessati, naturalmente.


Non c'è modo di spiegare con un esempio come fare un codice ottimale - ci saranno troppe omissioni.

Il punto è che ci sono molte regole per creare un codice ottimale. Per esempio, non molti di coloro che hanno familiarità con il linguaggio MQL4 sanno che è molto più facile per un processore eseguire operazioni di addizione e sottrazione che di moltiplicazione e divisione. Non molti sanno che dal punto di vista dell'ottimizzazione del codice è meglio scrivere a=b+b che a=b*2. Quindi penso che per capire la logica della programmazione e dell'ottimizzazione sia molto più utile mandare gli interessati a lavori sulla costruzione di un codice ottimale e studiare i linguaggi algoritmici così come abituare gli utenti a creare diagrammi di flusso dei programmi futuri per evitare omissioni e minimizzare le rielaborazioni.

Allego un link a un ottimo libro sulla costruzione del codice che può essere scaricato a questo post.

С. S. McConnel "Il codice perfetto".


Potete scaricare il libro qui: http://depositfiles.com/files/ebk6t6t5h (dimensione del file 21 Mbytes. Formato - djvu)

Quindi, in generale, questo thread può trattare solo casi speciali delle sezioni di codice sorgente e ottimizzato con spiegazioni del perché la sezione di codice ottimizzata è migliore di quella sorgente e perché è ottimizzata in questo modo. Penso che sia esattamente quello che volevi in origine.

 
drknn:


In allegato a questo post c'è un link per scaricare un grande libro sulla costruzione del codice.

С. S. McConnel "Il codice perfetto".

+1, libro molto utile.
 
drknn:

Quindi, in generale, in questo thread possiamo solo discutere casi speciali delle sezioni di codice sorgente e ottimizzato con spiegazioni del perché la sezione di codice ottimizzata è migliore di quella sorgente e perché è ottimizzata in quel modo. Penso che sia esattamente quello che volevi fin dall'inizio.

Non è neanche male, ma comunque sarebbe bene chiarire il nome di un ramo o iniziare a studiare la logica.

Non so davvero come fare la seconda da solo...))

 
denis_orlov:

Non è neanche male, ma sarebbe bene chiarire il nome del ramo o iniziare a studiare la logica.

Non so davvero come fare la seconda da solo...))


Logica(greco λογική - "scienza del ragionamento", "arte del ragionamento" da λόγος - "discorso", "ragionamento", "pensiero")- la scienza delle forme, dei metodi e delle leggi dell'attività cognitiva intellettuale, formalizzata con il linguaggio logico. Poiché questa conoscenza deriva dalla ragione, la logica è anche definita come la scienza delle forme e delle leggi del pensiero corretto. Poiché il ragionamento assume la forma di ragionamento nel linguaggio, di cui la prova e la confutazione sono casi speciali, la logica è talvolta definita come la scienza dei modi di ragionamento o la scienza dei modi di provare e confutare. La logica come scienza studia i modi di raggiungere la verità nel processo di cognizione in modo indiretto, non dall'esperienza sensoriale, ma dalla conoscenza ottenuta in precedenza, quindi può anche essere definita come una scienza sui modi di derivare la conoscenza per inferenza.

La conoscenza deduttiva, ottenuta attraverso l'applicazione delle leggi della logica e dei metodi del pensiero logico, - lo scopo di ogni azione logica, volta a raggiungere la verità e l'applicazione della conoscenza risultante per una conoscenza più profonda dei fenomeni e degli eventi del mondo.

Uno dei compiti principali della logica è quello di determinare come arrivare a una conclusione da una premessa(ragionamento corretto) e come ottenere una vera conoscenza sull'oggetto del pensiero al fine di ottenere una comprensione più profonda delle sfumature dell'oggetto del pensiero in studio e le sue relazioni con altri aspetti del fenomeno in questione.

La logica è uno degli strumenti di quasi tutte le scienze.

 
denis_orlov:

Non è neanche male, ma sarebbe bene chiarire il nome del ramo o iniziare a studiare la logica.

Non so bene come fare la seconda da solo...)


Posso condividere come è stato per me.

Mi ci sono voluti tre anni per cercare di capire la logica come scienza - non riuscivo ancora ad afferrare l'essenza, ad esempio perché ho bisogno della logica. Era solo un insieme di schemi quasi inutili, ma sentivo che qualcosa non andava, così ho continuato a leggerlo, a cercare di ragionare con i suoi schemi, a risolvere ogni sorta di problemi logici con l'aiuto delle formule. E poi, di punto in bianco, mi è venuto in mente... Poi, quando finalmente ho capito il valore di questa disciplina, ho iniziato a coinvolgere attivamente i miei amici nello studio della logica. Ero letteralmente "in fiamme" con la logica. I miei amici erano attivamente attratti da tutto l'umorismo logico, la bellezza delle conclusioni difficili, l'insolubilità dei paradossi, e mentre ero in giro, hanno imparato almeno qualcosa. Ma quando venivano lasciati soli con se stessi, si spegnevano come le braci di un incendio. Nessuno di loro aveva mai acceso il fuoco del suo spirito. Qui ho capito che erano interessati a me, ma non di più - nessuno di loro aveva alle spalle la forza di calcio che li avrebbe costretti ad entrare in questa scienza. E poi tutti quelli che avevano effettivamente studiato Logica, per quanto mi riguarda, li avevo divisi in due categorie. Sono stati tutti costretti a studiarlo. Non c'era modo di evitarlo. Alcuni professori che insegnano logica nelle università dicono che è molto difficile per gli studenti. Al contrario, sono sorpresi di quanto sia stato difficile per loro e di quanto sia stato facile applicarsi. Così, per quanto mi riguarda ho diviso tutti i forzati in due classi - quelli che si sono innamorati della logica mentre la studiavano, e quelli che hanno passato i loro crediti e l'hanno dimenticata. Trovo sempre piacevole parlare con coloro che si sono innamorati, perché ti capiscono al volo. Ma a volte è difficile trattare con gli smemorati - queste persone giocano alla roulette russa con la loro stessa morte. Il fatto che coscientemente può agire solo su un piano pre-fatto. Questo è l'unico modo per riportare l'ordine nelle loro vite. Fare un piano d'azione è un processo di pensiero. Se non è fatto correttamente, il risultato non sarà buono. Chi ha il caos in testa, ha anche un casino nei suoi affari. Così si scopre che il pensiero controlla la nostra vita. E abbandonare Logic qui è una strada rapida verso la tomba.

:) Basta così, altrimenti potrei continuare per ore a parlare di queste cose e alla fine ci porterebbe lontano dal tema di questo ramo.

P.S.

Posso solo aggiungere che mi trovavo in una situazione così difficile nella mia vita che non sapevo cosa fare - tutti i miei piani e le mie speranze erano crollati. Faceva un male cane. Stavo soffocando per la mancanza di speranza. Ho deciso che finché non avessi capito la situazione, non avrei potuto decidere cosa fare della mia vita e come relazionarmi con chi mi circondava. Sapevo dai libri che esiste una scienza come la Logica. A questo punto, ho deciso che dovevo impararlo, affinché le mie conclusioni fossero corrette. La complessità e il dolore della mia situazione di vita è stata la forza che mi ha spronato, facendomi cercare risposte non solo nella logica, ma anche in molte altre scienze. Ora è tutto nel passato. Perché vi dico questo? Volevo solo farvi capire cosa mi ha spinto a studiare la logica. Ti ho dato un esempio che non sono un'eccezione e ho anche dovuto studiare questa disciplina da sotto un bastone. Ma non l'ho studiato all'università, ma per conto mio.

 
nikost:


Mi sembra che possiamo semplificare ancora di più

for(int i = 0; i < limite; i++)
{
// variante tre_v1

high=iMA(NULL,0,periodo,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,periodo,0,MODE_EMA,PRICE_LOW,i);
atr=alto-basso;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}


Ho cercato di mantenere il rendering come nel codice originale. L'ATR è calcolato in modo diverso. Se confrontate i due indicatori, vedrete la differenza.
Motivazione: