Websocket come? - pagina 14

 
Алексей Барбашин:

Fedor, stai andando nella direzione sbagliata. Non funziona così! Hai usato in modo pulito il codice che ti ha dato Volodja. Il tuo compito è quello di ottenere i dati dal websocket e passare la domanda e l'offerta a mql! Mentre noi abbiamo solo restituito l'offerta dai dati ricevuti a mql, il vostro compito è quello di restituire l'intera struttura a mql e di emettere le informazioni nel log.

Ok. Ora cercherò di rifarlo.
 
Алексей Барбашин:

Sì, non è così. Ma questo problema può essere risolto. Nell'ultima fase, quando il codice è debuggato, dobbiamo solo implementare DLLExport nella libreria di Sharp e tutto funzionerà con mt4.

Non lo farà, l'ho già testato.

o C++/CLI

o Unmanaged Exports di Robert Giesecke - sull'articolo che sto scrivendo

ZS: forse con DLLExport funzioneranno metodi semplici che restituiscono a + b; non più, tutto ciò che richiede inizializzazione .Net non funziona, però.... sarebbe felice di imparare qualcosa di nuovo.

ZZZY: trovatohttps://github.com/3F/DllExport , non ha usato, trovato qualcos'altro, ma è lo stesso chip

Notate di nuovo che UnmanagedExports è stato creato da Robert Giesecke. Dovete visitare la sua pagina.

Ma questo repository non è legato a Robert e generalmente è ancora in fase di sviluppo da parte dello sviluppatore di GitHub/3F

 

Per qualche motivo restituisce degli zeri.


 
Igor Makanu:

non lo farà, ho già controllato

o C++/CLI

o Unmanaged Exports di Robert Giesecke - sull'articolo che sto scrivendo

ZS: forse con DLLExport funzioneranno semplici metodi return a + b; , niente di più, tutto ciò che richiede inizializzazione .Net non funziona però.... sarebbe felice di dare un esempio, sempre felice di imparare qualcosa di nuovo


lavorato.
È necessario apportare le modifiche corrette al codice IL.

Ho fatto il mio exe, che apporta modifiche dopo la compilazione di VS.
E poi i metodi C# diventano visibili da C/MQL

più l'organizzazione.
Non lo usavo da un po'.

 
Vladimir Suslov:


ha funzionato.
È necessario apportare le giuste modifiche al codice IL.

Ho fatto il mio exe che fa le modifiche dopo che VS compila.
E poi i metodi C# diventano visibili da C/MQL

Non lo uso da un po' di tempo

Ho appena aggiornato il mio post sopra.

questo è lo stesso codice che uso io - codice di Robert Giesecke

ma non dovete sistemare nulla manualmente lì, il problema principale è trattare con tipi di dati complessi, ho appena fatto uno scambio di dati di recente, ho grattato via un metodo

  [DllExport("redismtset", CallingConvention = CallingConvention.StdCall)]
        public static void redismtset([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] value, int sz, [MarshalAs(UnmanagedType.LPWStr)]string key)
        {
            byte[] tmp = new byte[sz];
            Array.Copy(value, 0, tmp,0, sz);
            if (dbExcPing()) DB.Set(key, tmp);
        }
//----
 [DllExport("redismtget", CallingConvention = CallingConvention.StdCall)]
        public static int redismtget([MarshalAs(UnmanagedType.LPWStr)]string key)
        {
           if (dbExcPing()) db_buffer_byte = DB.Get(key); else db_buffer_byte = null;
            return db_buffer_byte?.Length?? - 1;
        }
Ho provato a processare un array di stringhe attraverso StringBuilder, funziona in modo molto instabile e ho rinunciato perché richiede un controllo costante dell'allocazione della memoria per il buffer di stringhe sia in MQL4 che in .Net - in generale la ricerca costante di quando qualcosa smette di funzionare )))
 
Алексей Барбашин:

Quando usavo quel metodo, dovevo implementare DllExport una volta e poi tutti i metodi potevano essere dichiarati come esportati. Questa stessa libreria ha apportato le modifiche necessarie al codice. Ma da quando MT5 ha iniziato a supportare Sharp, ho smesso di "pasticciare" con esso.

Penso che la domanda fosse su MT4?

 
Алексей Барбашин:

Non è un grosso problema. Il metodo Dequeue() prende un record dalla coda. Stai cercando di prendere due record e diversi parametri da ciascuno di essi. Beh, prima di tutto, nessuno garantisce che ci siano due record nella coda al momento dell'accesso).

Rielaborato in questo modo.

MQL


Ora non restituisce più nulla, perché ho aggiunto un controllo

 
Igor Makanu:

Ho appena aggiornato il mio post sopra.

È lo stesso codice che uso io - codice di Robert Giesecke

ma non c'è niente da correggere a mano, il problema principale è avere a che fare con tipi di dati complessi, recentemente ho fatto uno scambio di dati, ho grattato via un metodo

Questo non funzionava (qualche anno fa), così ho fatto il mio.
Forse è stato aggiornato ora e funziona.
Ma il principio è esattamente lo stesso

 
Vladimir Suslov:

Questo lib non ha funzionato per me (qualche anno fa) e ho fatto il mio.
Forse l'ho aggiornato ora e funziona.
Ma il principio è esattamente lo stesso

non funziona sulla lingua russa Win

Ma funzionerà sicuramente senza problemi se si installa una macchina virtuale + Win 7 in inglese - ho scelto durante l'installazione la lingua Win, provato diversi modi per installare Win7 in russo passare all'inglese. - Da qualche parte o nel registro o una cartella rimane russo, a causa di questo, il modello Robert Giesecke compilato con avvertimenti e non funziona esportazione .dll

SZZY: salvato un'immagine della macchina virtuale 10GB sul mio disco rigido, ora senza problemi posso usare il modelloRobert Giesecke

 
Ragazzi, perché ricevo degli zeri? E la coda è vuota?
Motivazione: