La decelerazione lineare è un errore di programmazione o una caratteristica di MT4? - pagina 11

 
Urain:

Mi piacerebbe molto sapere chi è MetaQuotes, posso prendere un messaggio?


Chiunque. È il nostro aneddoto da consiglio di amministrazione. È uno di loro.
 

Ho dato un'occhiata veloce al codice. Mi è venuto subito in mente un passaggio della poesia di Lermontov:

Земля тряслась - как наши груди,
Cavalli e uomini si sono mescolati in un mucchio,
E le raffiche di mille cannoni
Caduto in. e l'ululato di mille pistole...

Ora alla tua domanda:

-Aleks-:

Nella fase di perfezionamento della strategia, e soprattutto della tattica, bisogna ordinare ogni sorta di aggiunte per testare l'idea, in questa fase è abbastanza possibile tollerare la lentezza dell'Expert Advisor.

Ma sono stato sorpreso da una velocità 6 volte più lenta rispetto alla versione principale dell'EA. L'ottimizzazione dellasintonizzazione di EA è necessaria almeno per la raccolta di dati analitici.

Ho ragione di capire che è impossibile leggere il codice di altre persone ed è meglio ordinare un'altra versione dell'EA dopo averne ottenuta una di successo, ma deve essere scritta da zero, e solo in questo caso, possiamo essere sicuri di alta velocità e affidabilità? Personalmente penso che il compito del compilatore sia quello di tagliare le operazioni duplicate, per esempio...

Non sto parlando di questo codice, ma globalmente in generale. Quindi confuta questa affermazione?

Se ordinate un programmatore che scrive nello stile di "cavalli e persone mescolati" - dovete riscrivere non due o tre volte, ma tutto il tempo e sempre al 100%, per tutto il budget crescente. Se si ordina ai professionisti, cambiare i requisiti del 20%, 40% o anche 80% non richiederà la riscrittura del codice non solo completamente, ma anche sulla stessa percentuale dei cambiamenti. Ma con un budget di "<$50" scordatevelo.

 
-Aleks-:

Ho ragione nel supporre che ci dovrebbe essere un ritardo artificiale nell'invio degli ordini agli ordini aperti, ma senza aspettare la conferma della loro apertura?

Vi siete sbagliati. Non ci dovrebbero essere ritardi artificiali. MT5 ha un semplice modello di eventi che dovrebbe essere usato al posto dei ritardi di sleep().
 
micle:
Naturalmente, l'Expert Advisor dovrebbe gestire eventuali errori di invio degli ordini. Nel caso più semplice - per visualizzare un messaggio sull'apertura non riuscita dell'ordine. Nella versione più avanzata, deciderà su ulteriori azioni.

Quindi ho bisogno di un EA che mi sostituisca, e altre azioni sono molto rilevanti qui... Ma non è sicuro che saranno tempestivi (per esempio, il prezzo è già andato molto lontano dal punto di entrata calcolato).

sergeev:

Non l'ha lasciato inviare. Chiedete al codificatore di usare IsTradeContextBusy per controllare.

Grazie per il suggerimento, ma stavo parlando proprio di queste sfumature nel prossimo thread. Come potrei saperlo?

sergeev:

Se stai usando la build 509, ci sono 8 threads e la situazione con IsTradeContextBusy non dovrebbe verificarsi.

Se lo fa, vedi il punto sopra.

Potete anche usare più di un terminale.

Non capisco, il numero di terminali influisce su come viene passato un ordine? Voglio dire, possiamo lanciare diversi terminali per uno stesso conto e inviare un ordine di apertura da ogni terminale e se la metà di essi si blocca, l'altra metà eseguirà l'ordine con successo? Pensavo che l'ordine deve essere processato dal DC e solo allora accettare il successivo...

C-4:

Ho dato un'occhiata veloce al codice. Mi è venuto subito in mente un passaggio della poesia di Lermontov:

Ora alla tua domanda:

Se ordinate un programmatore che scrive in stile "persone e cavalli mescolati", dovete riscriverlo non due o tre volte, ma sempre e sempre al 100%, per il budget sempre crescente. Se si ordina ai professionisti, cambiare i requisiti del 20%, 40% o anche 80% non richiederà la riscrittura del codice non solo completamente, ma anche sulla stessa percentuale dei cambiamenti. Ma con un budget di "<$50" scordatevelo.

In questo momento l'EA mi sta costando più di 100 dollari e so che continuerò ad aggiungerne. La matematica funziona così:

10 revisioni a 30$ danno un costo di 300$, mentre 10 a 50$ danno un costo di 500$. Risparmiare tipo 200 dollari è significativo per me. Ma quando ne sarò soddisfatto, potrò ordinare un EA da zero (eliminando le cose inutili) e costerà circa 80 dollari. Questo approccio si giustifica da solo, soprattutto quando lo sviluppo è in corso. A parte il fatto che devi consumare i tuoi nervi... ma la fortuna vuole che sia così.

C-4:
Hai sbagliato. Non ci dovrebbero essere ritardi artificiali. MT5 ha un semplice modello di eventi che dovrebbe essere usato al posto di sleep() delay
Sto parlando di MT4, quindi mi confermi che possiamo "bombardare" la società di brokeraggio che elaborerà gli ordini dal suo "buffer" e li rifiuterà se il prezzo si muove fortemente?
 
-Aleks-:

Grazie per il suggerimento, ma queste sono le sfumature che ho discusso nel prossimo thread. Come faccio a sapere di loro?

Non ho bisogno di entrare in loro e cercare qualcosa.
Se qualcuno ha accennato a come dovrebbe essere, e ne trovate una mancanza nel vostro codice, è meglio che cambiate il codificatore in silenzio. Non creare rami.

Non capisco, il numero di terminali influisce sul modo in cui un ordine viene passato? Cioè si possono usare diversi terminali sullo stesso conto e inviare un ordine per aprire un ordine da ognuno di essi, e se la metà di essi viene soffocata, allora l'altra metà eseguirà l'ordine con successo?

Il numero di terminali sarà uguale al numero di fili da inviare. 10 terminali invieranno 1 ordine - ci saranno 10 ordini.

 
-Aleks-:

Quindi ho bisogno di un EA che mi sostituisca, e altre azioni sono molto rilevanti qui... ma non è sicuro che saranno tempestivi (per esempio, il prezzo è già andato molto lontano dal punto di entrata calcolato).

Al momento l'Expert Advisor mi costa più di 100 dollari e so che ne aggiungerò altri. Quindi questa è la matematica:

10 revisioni a 30 dollari danno una spesa di 300 dollari, mentre 10 a 50 dollari danno una spesa di 500 dollari. Risparmiare tipo 200 dollari è significativo per me. Ma quando ne sarò soddisfatto, potrò ordinare il mio Expert Advisor da zero (eliminando le cose inutili) e costerà 80 dollari. Questo approccio si giustifica da solo, soprattutto quando lo sviluppo è in corso. A parte il fatto che devi consumare i tuoi nervi... ma è una questione di fortuna.

Questo è un approccio sbagliato da parte vostra.

Si ordina il codice per il tester, si avverte l'importanza della velocità di ottimizzazione, si fanno i miglioramenti necessari in esso. E solo dopo che la versione di prova è pronta, si ordina la versione reale con la logica completamente testata e tutte le modifiche/raccomandazioni.

Risparmierete molti più soldi. No?

 
sergeev:

Non c'è bisogno di guardarci dentro e scoprire cosa c'è.
Se qualcuno vi ha suggerito come dovrebbe essere, e voi trovate una mancanza nel codice - cambiate silenziosamente il codificatore. Non creare rami.

il numero di terminali - la stessa molteplicità di fili da inviare. 10 terminali invieranno 1 ordine - ci saranno 10 ordini.

E la società di intermediazione? Dopo tutto, è il terminale che ha un ordine bloccato! Che motivo c'è allora di inviare una moltitudine di ordini?

artmedia70:

Questo è un approccio sbagliato da parte vostra.

Si ordina il codice per il tester, notificandogli l'importanza della velocità di ottimizzazione, e si introducono i miglioramenti necessari in esso. E solo dopo che la versione tester è pronta, ordinate la versione reale con la logica completamente debuggata e tutte le modifiche/raccomandazioni necessarie.

Risparmierete molti più soldi. No?

Beh, per cominciare, non ho suggerito inizialmente che la velocità dei test dipenda molto dal tester o dall'implementazione reale.

E per quanto riguarda il resto, è quello che faccio, testare, raffinare ... o stai dicendo che il prezzo sarà molte volte inferiore se scrivo subito "non sono per davvero, ma test"?

 
-Aleks-:

E il DC? Dopo tutto, è lui che ha un ordine bloccato!? Che senso ha allora inviare un mucchio di ordini?

Se non avete bisogno di inviare una dozzina di ordini tutti in una volta, allora non insisto.

Si può inviare uno per uno da un terminale e aspettare che il contesto si liberi e così via.

L'intera dozzina può essere inviata in un paio di minuti.

 
sergeev:

No, beh, se non hai bisogno di una dozzina alla volta, allora non insisto.

Potete inviarne uno alla volta da un terminale, aspettare che il contesto si liberi e così via.

Potresti essere in grado di inviarne un'intera dozzina in un paio di minuti.

Quindi chiedo, perché non so come vengono processati gli ordini dalle società di brokeraggio - in parallelo o in sequenza?

 
-Aleks-:

in parallelo o in sequenza?

Le offerte arrivano in sequenza. ma non è certo che il Buy si eseguirà più velocemente della prossima vendita, perché a volte c'è un altro fornitore di liquidità.

Ma per semplificare il mondo - pensate sempre che va in serie.


l'unica ragione per queste informazioni è rimanere in tema.

Motivazione: