Discussione su "Come scrivere una DLL per MQL5 e scambiare dati in 10 minuti". - pagina 2

 
Non ho ancora testato una cosa con il passaggio di stringhe a dll in MQL5

Ho notato questo problema con il passaggio delle stringhe in MQL4-DLL. Nel codice MQL4 chiamo la funzione nella DLL e passo la stringa:

#import "MyDll.dll"
 void passSymbol(string symb);






void start() {

    passSymbol(Symbol());

}

e in dll ricevo questa stringa con un nome di strumento.

_DLLAPI int __stdcall passSymbol(char* symbol) {
   указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще.
}


Ad un certo momento, su qualche tick (può funzionare bene per mezza giornata) la dll riceve improvvisamente una stringa sinistra con caratteri poco chiari al posto del nome del simbolo.
Forse puoi controllare un codice simile in mql5? Il puntatore di memoria sembra non essere corretto in MQL4 o a volte c'è un conflitto di accesso alle linee di flusso all'interno del terminale.

Gli array doppi e le variabili int passano correttamente senza problemi.

Scriverò un test per MQL5-DLL non appena il tempo apparirà. Ma se anche voi state testando questa roba, scrivete un test per verificare la stabilità del passaggio delle stringhe alla DLL, ripetendo il processo su ogni tick per un lungo periodo di tempo.

 
GarF1eld:

Se è possibile esportare le quotazioni solo tramite dll, allora significa che uno script deve essere messo su ogni strumento da esportare? E se ce ne sono molti? Per esempio, 50?

Capisco che è possibile passare le quotazioni per molti strumenti in uno script, ma non sarà un sostituto completo del DDE, dove i tick non vengono persi.

Renat:

La questione è che non abbiamo il compito di "fornire l'interfaccia per dare le citazioni".

Il nostro compito è quello di creare un ambiente completo e autosufficiente per lo sviluppo di sistemi analitici. Un tale ambiente in modo che anche i programmi di terze parti non avrebbero bisogno di essere utilizzati.

La risposta è certamente interessante. Il titolo dell'argomento "Come scrivere una DLL per MQL5 e scambiare dati in 10 minuti" vale la pena di vedere questo articolo "Trasferimento dati tra indicatori - una soluzione semplice di un problema doloroso " e confrontarlo con il problema di cui sopra (in corsivo).
 
Renat:

Il punto è che non abbiamo il compito di "fornire un'interfaccia per l'emissione di quotazioni".

Il nostro compito è quello di creare un ambiente completo e autosufficiente per lo sviluppo di sistemi analitici. Un tale ambiente in modo che anche i programmi di terze parti non hanno molto bisogno di essere utilizzati.


La GUI è molto debole - ci sono voluti 2 giorni per scrivere la logica, e un giorno intero per visualizzare le informazioni calcolate in qualche modo

Come risultato ho disabilitato tutto - ho costruito il trasporto dei dati(https://www.mql5.com/ru/forum/382) e ora sono felice.

Gli sviluppatori non stanno puntando troppo in alto?

E perché reinventare la ruota, se tutto è già stato fatto molto tempo fa (C, Delphi, ...)?

 
yu-sha:

La GUI è molto debole - mi ci sono voluti 2 giorni per scrivere la logica, e mi ci è voluto un giorno intero per visualizzare le informazioni calcolate in qualche modo

Alla fine ho rinunciato a tutto - ho costruito il trasporto dati(https://www.mql5.com/ru/forum/382) e mi sto godendo la mia vita

Gli sviluppatori non stanno puntando troppo in alto?

E perché reinventare la ruota quando tutto è già stato fatto molto tempo fa (C, Delphi, ...)?

IMHO il problema con MT5 è iniziato con il suo inizio: la mancanza di una visione chiara di ciò che questo prodotto dovrebbe risolvere. O è una piattaforma aggiornata e basata su MT4 ma portata a una nuova versione in termini di velocità e funzioni estese, o è una nuova piattaforma di trading moderna con una struttura ed estensibilità ben studiata (cioè contenente classi di business, o framework di trading, per eseguire classi specifiche di compiti chiaramente definiti, e basata su qualche linguaggio/ambiente di programmazione moderno con la sua funzionalità generale e strumenti di supporto software ampiamente disponibili). Risolvere questo dilemma tentando di combinare gli opposti, preparando una sorta di composta, per così dire, con il metodo dell'"improvvisazione dei solisti più talentuosi", sembra non essere del tutto riuscito.

Se a qualcuno sembra pura spazzatura senza un'ombra di costruttivo, per la seconda volta portatelo in un bagno pubblico, o abbattetelo definitivamente :)

 

2pisara

Andare alla radice.

MQL è più per i commercianti con poche abilità di programmazione. A la Basic for dummies.

Non ho nulla contro una tale posizione - grazie anche per questo.

Ma posizionando MQL5 come"un ambiente completo e autosufficiente per lo sviluppo di sistemi analitici. Questo è il tipo di ambiente in cui anche i programmi di terze parti non hanno bisogno di essere applicati."Questa è una richiesta seria. Ci vorranno anni di lavoro, non solo da parte di singoli appassionati, ma da un team di programmatori professionisti sotto la direzione di un buon architetto per "legare" il nucleo con un qualche insieme di zuppa digeribile. Non posso dire nulla sul budget e sulla gestione - quello è un altro livello del progetto.

Voglio sostenere i dipendenti dell'azienda nel loro duro lavoro. Voglio dire grazie per il loro duro lavoro. Ma ammettiamolo - MQL5 è solo una tappa per raggiungere l'obiettivo.

P.S. Mosca non è stata costruita in un giorno

 
Sì, fa paura pensare o ricordare quante cose inutili ognuno di noi ha fatto, sta facendo e continuerà a fare!
 
Renat:

È molto facile controllare la velocità di chiamata. Per esempio, si può calcolare approssimativamente così:

Ho ottenuto 57.000 chiamate al secondo su un Quad Q9400 @2.66Ghz. Lo stesso codice dà circa 20.000.000 di chiamate al secondo in MetaTrader 4, poiché non c'è controllo e piping.

Cercheremo sicuramente di ridurre la perdita sulle chiamate DLL in MetaTrader 5.

Sarebbe bene fare una direttiva speciale al compilatore che sia abilitata di default e che inserisca questi wrapper alle chiamate DLL. Quando è disattivato, è una buona idea non inserire questi wrapper. Come la modalità debug e release. Tuttavia, a volte 57K non sono sufficienti. Lo stesso tempo è consumato dal tempo di esecuzione della DLL.
 
HideYourRichess:
È una buona idea fare una direttiva speciale del compilatore che sia attiva di default e che inserisca questi wrapper nelle chiamate dll. Quando è disattivato, è una buona idea non inserire questi wrapper. Come la modalità debug e release. Eppure, a volte 57K non sono sufficienti. Lo stesso tempo è consumato dal runtime della dll.
La build 240 ha semplificato i wrapper, ora il tasso di chiamata è di 19.911.000 chiamate al secondo.
 
Riguardo alla discussione su MQL / MQL2 / MQL4 / MQL5: a quanto pare, non conosci molto bene la nostra storia. Almeno vai sul sito web aziendale e leggilo.


Abbiamo metodicamente creato 4 generazioni di linguaggi di trading dal 2001 con un'enorme comunità di trader. I concorrenti stavano morendo, i loro linguaggi di controllo non si sono sviluppati, mentre noi abbiamo lavorato, stiamo lavorando e continueremo a lavorare.

 

Renat: 

e abbiamo lavorato, stiamo lavorando e continueremo a lavorare.

Come ha lasciato in eredità il Grande Nonno Lenin.

;)

Non mi ricordo, credo di averlo chiesto prima...
È possibile creare semplici DLL usando gli strumenti mcl5,
basta scriverlo in unitor e compilarlo...?