Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 282

 

amavladi:


Voglio capire la meccanica dei loop per poter scrivere un EA complesso. L'operatore "return" mi lancia ad un nuovo "inizio" Non ne ho sempre bisogno.

Grazie comunque per la risposta.

Non c'è di che. Il punto è che se volete capire la "meccanica" con l'aiuto di "terzi", allora dovete formulare il problema proprio a quei "terzi", cioè descrivere ciò che vorreste ottenere dall'algoritmo, non ciò che avete ottenuto.

"Il loop non è un problema, perché se non c'è nulla nel loop tranne l'operatore continue, allora è vincolato al loop finché la condizione di loop non diventa falsa.

Cioè, non dovreste fare domande stupide come: "cosa non funziona nel codice non funzionante". Dopo tutto, anche un riccio ubriaco sa che il codice non funzionante non funziona perché è non funzionante. Ma nessuno senza poteri telepatici, tranne l'autore del codice, può capire cosa avrebbe dovuto funzionare nel codice funzionante.

 
amavladi:

AIUTO!

Sto cercando brave persone su questo sito, per favore consigliatemi dei miei errori. Ho appena iniziato a imparare MQL4e ho scritto un semplice Expert Advisor che apre un ordine e poi lo chiude con un piccolotakeprofit.Ho provato a controllarlo in strategy tester e ho scoperto che il mio ciclo di dichiarazioni for e while viene messo in loop se scritto in questo modo:

//--------------------------------------------------------------------

   while (Ask<=Level)

   { RefreshRates();

     continue;

   }         

Beh, qui tutto sembra essere semplice.

Il tester della strategia genera un tick, chiama start() e aspetta che questa funzione finisca per generare il prossimo tick.

Quindi, se volete che il vostro robot non rimanga appeso nel tester, allontanatevi da una tale costruzione. Nel vostro caso, il prezzo di Ask non cambierà fino a quando non uscirà da start().

E quando il comando di ritorno viene ricevuto, l'inizio della funzione terminerà, e il tester capirà che il prossimo tick deve essere generato.

Inoltre, non nel tester di strategia, ma nella modalità reale, il tuo codice funzionerà come ti aspetti, perché RefreshRates aggiornerà il prezzo Ask.

Il tuo codice funziona bene, ma per il tester di strategia entra in un ciclo infinito.

L'uso del ritorno aiuterà in questo caso. Quando guadagnerete più esperienza vi sbarazzerete di tali costruzioni. Buona fortuna a voi.

 
Reshetov:


Cioè, non dovreste fare domande stupide come "cosa non funziona nel codice non funzionante". Dopo tutto, anche un riccio ubriaco sa che il codice non funzionante non funziona perché non funziona. Ma nessuno senza poteri telepatici, tranne l'autore del codice, può capire cosa avrebbe dovuto funzionare nel codice funzionante.

Il codice funziona, è solo che ci sono sempre delle sfumature che i neofiti non conoscono...
 
Reshetov:

Non c'è di che. Il punto è che se volete capire la "meccanica" con l'aiuto di "terzi", allora dovete formulare il problema proprio a quei "terzi", cioè descrivere ciò che vorreste ottenere dall'algoritmo, non ciò che avete ottenuto.

"Il loop non è un problema, perché se non c'è niente nel loop tranne l'operatore continue, è destinato a girare finché la condizione del loop non diventa falsa.

Cioè, non dovreste fare domande stupide come: "cosa non funziona nel codice non funzionante". Dopo tutto, anche un riccio ubriaco sa che il codice non funzionante non funziona perché è non funzionante. Ma nessuno senza poteri telepatici, tranne l'autore del codice, può capire cosa avrebbe dovuto funzionare nel codice funzionante.

Non mi piace quando la gente getta un sacco di fango sui principianti. Basta scrivere in modo umano come - la domanda è formulata male/in modo impreciso/errato, o - un errore qui o là. Ricordati anche tu quando hai iniziato a imparare a fare qualcosa, più di una volta probabilmente hai fatto una domanda stupida. E la metafora del riccio ubriaco porta qualche soluzione positiva al problema? È solo piacevole sentirsi freddi nel bagliore della propria grandezza di fronte a un nuovo arrivato.
 
paladin800:
Non mi piace quando i nuovi arrivati si fanno buttare addosso un sacco di merda.

Un maiale trova sporcizia ovunque © Proverbio popolare

Dove hai trovato la terra? Se l'hai trovato, chiedi a un moderatore.

paladino800:
La metafora del riccio ubriaco porta un po' di positività al problema?

Chiedi all'amministrazione di aggiungere alle regole il divieto di metafore e ricci.

 
Reshetov:

Un maiale trova sporcizia ovunque © Proverbio popolare

Dove hai trovato la terra? Se lo trovate, andate da un moderatore.

Chiedete all'amministrazione di aggiungere alle regole il divieto di metafore e ricci.

E perché i moderatori e gli amministratori... È una questione di educazione, etica professionale, tatto, tolleranza, umanità alla fine... ...gli amministratori non possono aiutare.

E se non si capisce bene il problema, è meglio non dare consigli... A volte è meglio masticare... Anche se mettersi in mostra a spese degli altri è un tuo diritto...

 
elugovoy:

È tutta una questione di educazione, etica professionale, tatto, tolleranza, umanità alla fine...

L'asilo e l'istituto per nobildonne tutto in uno.

Quindi perché non saltiamo le cose personali e continuiamo a rispondere alle domande dei nuovi arrivati? Altrimenti, otteniamo una sorta di fluderazione da parte dei sostenitori degli approcci umanitari in un argomento puramente tecnico.

 
Vorrei ringraziare Evgeniy Lugovoy (ha grandi capacità telepatiche). Ha risposto alla mia domanda sui problemi del ciclo reale e del ciclo tester al cento per cento. La sera stessa ho letto l'articolo "Testing and Optimizing Expert Advisors " dal link http://articles.La sera stessa, mi sono imbattuto nell'articolo "Testing and optimizing the EA" dal link . mql4.com/it/824 (che è per i neofiti come me) e mi sono reso conto che il tester crea un movimento di prezzo reale in modo discreto e dà nuove quotazioni solo alla prossima iterazione dell'EA, così ho riscritto il codice per i test, utilizzando una serie di istruzioni IF, dove prima c'erano operatori di loop. Ai principianti come me consiglio di familiarizzare con le "Funzioni comuni" di MQL4 (link http://docs.mql4.com/ru/common). Sono rimasto sorpreso di scoprire la differenza di funzionamento di una stessa funzione nel terminale reale e nel tester di strategia, per esempio Sleep() nel tester non causa alcun ritardo come dovrebbe e funziona solo nel terminale reale.E infine, per gli incauti (come me) amanti dei cicli infiniti condizionali int start() { double Level=1300; while (Ask<=Level) Le ultime due righe del codice, nonostante la sua innocenza, dopo averlo eseguito su un terminale in una finestra di denaro reale, finché il prezzo raggiunge 1300, prenderà una quantità enorme di tempo di CPU (sul mio 2x4 core 25%).Il mio amico ha suggerito che se non si può rinunciare al ciclo, è necessario inserire Sleep ( int 100), cioè, dare un intervallo di 100 a 200 millisecondi per alleviare il processore.int start() { double Level=1300; while (Ask<=Level) { Sleep( int 100) continue; }
P.S. Per gli ammiratori "terzi" delle espressioni: riccio ubriaco, screwball, fluderasty e così via. (anche se siamo in un argomento puramente tecnico), mi permetto di dare un piccolo riferimento a Fyodor Mikhailovich Dostoevskij, che nel suo romanzo "L'idiota" attraverso il principe Myshkin dice una cosa molto strana: "La bellezza salverà il mondo! E a te Eugene, ti prego di salutare la Moldavia, anche se vivo in un altro paese, ma sono nato a Kishinev.
 
amavladi:

Non c'è niente di telepatico )))) Penso che tutti abbiano fatto gli stessi errori quando vogliono "catturare" un prezzo per, diciamo, una pesca a strascico... compreso me circa 6 anni fa.

A proposito, l'argomento è per i neofiti e non è "strettamente tecnico".

Ti saluto.

Buona fortuna.

 
elugovoy:

Non c'è niente di telepatico )))) Penso che tutti abbiano fatto gli stessi errori quando vogliono "catturare" un prezzo per, diciamo, una pesca a strascico... compreso me circa 6 anni fa.

A proposito, l'argomento è per i neofiti e non è "strettamente tecnico".

Ti saluto.

Buona fortuna.

Sulla telepatia e "puramente tecnica" - io sono per il signorReshetov: ))).

Buona fortuna anche a te.

Motivazione: