Difficoltà di traduzione :)

 

Voglio dirvi come ho convertito il mio progetto da MQL4 a 5 in una notte. Non mi sto vantando, voglio solo raccontare la mia pratica e si è rivelata molto semplice).

Così, ieri pomeriggio stanco, mi sono coricato per mezz'ora e mi sono svegliato all'una e mezza di notte. Credo di aver russato, cosa fare ora, non riuscirò mai a dormire.

Ho pensato di passare il mio progetto di scalper da MT4 a MT5 con hedging, ho usato la demo di hedging dal sito del robot per molto tempo ma non ho avuto il tempo di usarla veramente. L'obiettivo principale è quello di testare utilizzando zecche di robot reali. Voglio anche eseguire l'ottimizzatore nel cloud, la velocità lì è davvero buona.

Al momento sto eseguendo il modello in Matlab, ma è una versione semplificata e sta diventando sempre più difficile sincronizzare i cambiamenti del codice e del modello. Diciamo che il modello è costantemente in ritardo rispetto al vero codice MQL4.

********** Processo di migrazione *****

Quindi, il mio progetto consiste in un file .mq4 e un mucchio di classi in .mqh. Ho spostato tutto al 5, rinominato .mq4 in .mq5, lasciato le classi come sono. Iniziato la compilazione, 100500 errori ovviamente. Ok, non abbiamo paura dei problemi e guardiamo gli errori. La maggior parte di essi sono legati a MarketInfo, si verificano quasi ovunque. Ok, sono un gattino pigro, non mi è permesso di pulire a mano )) Ho già un progetto MQL4/5 in Visual Studio.

A proposito, ho guardato il mio vecchio video del 2011 conservato con cura su YouTube. Ho imparato a configurare lo studio 2010 per accettare i file MQL come file plus. Non è cambiato nulla, potete usarlo ora.

Il video del 2011, potrei imprecare a MQL4, la situazione è diversa ora, il linguaggio è normale )) Sono troppo pigro per rileggerlo, ma alcuni echi del passato potrebbero sfuggire.

https://www.youtube.com/watch?v=oQs4qqwhqzg

Allora, ho caricato tutto in studio, la cosa bella è che la ricerca e la sostituzione possono essere fatte tutte insieme in tutto il progetto e non da un file alla volta. Ho sostituito tutti i MarketInfo con analoghi MQL5. Dopo un paio di correzioni minori, tutti gli errori, come previsto, sono rimasti nella classe COrderManager. Questa è la mia classe che gestisce gli ordini, costruisce e modifica le griglie e altre cose.

Mi ci saranno volute circa 3 ore per ridisegnarlo. Ho usato la classe CTrade Standard Library, ma ho dovuto far nascere un bambino da essa, perché mancavano alcune caratteristiche.

------------------------

Conclusione. Tutto questo lamentarsi su quanto sia difficile per un povero programmatore passare alla 5 è una stronzata! Durante la transizione ho cucinato una grande patata con carne, sono andato a fare una passeggiata notturna, mi piace camminare di notte, ho guardato un po' di film con Bruce W., e ho fatto alcuni miglioramenti nei posti che non potevo raggiungere. Ora è possibile fare un reboot, recentemente mi è stata ricordata una vecchia promessa, e l'argomento è tornato a galla l'altro giorno.

Sì, la classe COrderManager ha perso molto peso usando la Libreria Standard

Настройка Visual Studio 2010 для редактирования MQL файлов
Настройка Visual Studio 2010 для редактирования MQL файлов
  • 2011.07.01
  • www.youtube.com
Как известно, редактор Metatrader 4 далек от совершенства. Часто удобно редактировать большие проекты в VS2010. На этом видео я показываю процесс настройки.
 
Andrey F. Zelinsky:

Come si capisce "ha migliorato quei posti" dopo "è andato a fare una passeggiata notturna"?

Sei andato a passeggiare di notte o sei andato a fare una passeggiata?

Non sono stato seduto in un ufficio per molto tempo, spesso vado a passeggiare di notte) Ho migliorato alcuni punti del progetto che volevo cambiare molto tempo fa, ma ero troppo pigro per farlo comunque. Mi sono preparato per un tale evento, ho convertito e rifatto molte cose.

Andrey, "fare una passeggiata" e "bere" sono due cose diverse )).

 

Alexei, una domanda per te:

Quanto è lungo e difficile tradurre progetti che sono scritti in stile procedurale? Perché procedurale? - Sono abituato, ho un modello per tutte le occasioni, scrivo 3-5 righe per le condizioni in esso, e qualsiasi gufo è pronto in mezz'ora con tutto il debug

Il prossimo:

È possibile riscrivere la funzione di apertura della posizione per applicarla nello stesso modo come in quad, mi sono appena abituato ai loro nomi e al loro uso nel corso degli anni, e non ho bisogno di inserire alcuna libreria.

E un blocco di condizioni per aprire e creare un grafico:

Molti più grafici, scritto una volta su cinque, quindi c'è qualcosa fatto attraverso .opa tempo e prezzo di selezionare il primo punto e il secondo. Nel quarto, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) e ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), ma nel quinto, tale costruzione non funziona(

Grazie in anticipo per la risposta!

 
Alexey Volchanskiy:

...

Conclusione. Tutto questo lamentarsi su quanto sia difficile per un povero programmatore passare a una A è una stronzata! ...

Non confondere il dono di Dio con un uovo. Se un EA sta lavorando con ordini multipli e tradotto in netting, questo è un compito irreale.
 

Penso che sia più facile non fare il porting del codice. È più facile scrivere da zero. In questo modo sarà di qualità superiore.

 
Dmitry Fedoseev:
Non confondere il dono di Dio con l'uovo. Se un EA lavora con ordini multipli e passa al netting, è un compito irrealistico.

Certo, ho scritto nel primo post"Ho voluto a lungo spostare il mio progetto di scalper da MT4 a MT5 con hedging, ho già iniziato le demo di hedging da Robo, ma non ho avuto il tempo. "Ti devono essere sfuggiti questi dettagli.

Ecco perché non sono passato a MT5 quando c'era solo il netting. Ora, con la siepe, sto lentamente strisciando.

Il post riguardava il lato puramente tecnico della transizione.

 
Anton Zverev:

Penso che sia più facile non fare il porting del codice. È più facile scrivere da zero. Sarà di qualità superiore in questo modo.

Perché? Le lingue sono le stesse, le funzioni per accedere alle serie temporali sono diverse, alcune altre, questo è risolto in VS sostituendo in tutto il progetto, come ho scritto. È veloce e senza complicazioni. Qualche difficoltà con la parte di trading, ho dovuto introdurre la gestione delle posizioni nella classe oltre all'elaborazione degli ordini. Ma in linea di principio non è nemmeno un grosso problema.

Ancora una volta, solo nel caso in cui - intendo la copertura.

 
Vitaly Muzichenko:

Alexei, una domanda per te:

Quanto è lungo e difficile tradurre progetti che sono scritti in stile procedurale? Perché procedurale? - Sono abituato, ho un modello per tutte le occasioni, scrivo 3-5 righe per le condizioni in esso, e qualsiasi gufo è pronto in mezz'ora con tutto il debug

Il prossimo:

È possibile riscrivere la funzione di apertura della posizione per applicarla nello stesso modo come in quad, mi sono appena abituato ai loro nomi e al loro uso nel corso degli anni, e non ho bisogno di inserire alcuna libreria.

Bene, e un blocco di condizioni per aprire e creare grafici:

Molti più grafici, ho scritto una volta su cinque, quindi qualcosa è stato fatto attraverso il .opa lì, il tempo e il prezzo di selezionare il primo punto e il secondo. Nel quarto, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) e ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), ma nel quinto, tale costruzione non funziona(

Grazie in anticipo per la risposta!

Vitaly, puoi lasciare tutto in stile procedurale, nessuno ti obbliga a usare OOP. La Libreria Standard mi è appena chiara, ho creato la mia classe da essa, ho aumentato alcune cose. E ho fatto tutto su OOP.

Risponderò in ordine inverso ))

1. Ho rifatto lo script con la grafica, ci sono alcune differenze, ma molto lievi. Fondamentalmente, devo specificare esplicitamente finestra e sottofinestra, non era necessario nella 4.

2. Per quanto riguarda l'apertura di posizioni, se si usa la classe CTrade, ha analoghi quasi diretti delle funzioni MQL4

3. Credo che non ci vorrà molto tempo.

Se intendi freelance, puoi abituarti molto rapidamente. Fondamentalmente devi abituarti al fatto che gli ordini, i trade e le posizioni sono cose diverse, anche sulle coperture.

 
Anton Zverev:

Penso che sia più facile non fare il porting del codice. È più facile scrivere da zero. In questo modo sarà di qualità superiore.

A volte è utile lasciare il lavoro, la moglie e la vita piena e ricominciare da zero. L'ho fatto molte volte. Tutto risulta migliore e di qualità superiore).
 
Alexey Volchanskiy:
A volte può essere utile lasciare il tuo lavoro, tua moglie, la tua vita di soddisfazione e ricominciare da zero. L'ho fatto molte volte. Diventa sempre meglio )))
))
 
Ora mi salteranno addosso - me lo sento. Dovreste scrivere in stile OOP e sarete felici.
E poi una mossa come questa sarà una facile passeggiata nella notte .
Motivazione: