Domande da un "manichino" - pagina 75

 
kirill-demo:
Ho creato il mio Expert Advisor in Wizard. Non conosco molto bene mql. Potreste spiegarmi cosa fare con l'esempio delle buste?

La classe CSignalEnvelopes non ha un tale modello di mercato.

Conclusione: dobbiamo migliorare la classe (o scrivere la nostra classe).

 
Qual è la differenza tra chiamare funzioni da dll in MT4 e MT5? Ho compilato la dll, funziona bene in MT5, ma in MT4 mi dà errore:

2011.10.06 23:00:34 Esecutore Solaris EURUSDm,M1: impossibile chiamare la funzione 'InfoOfTrading' dalla dll 'Solaris.dll' (errore 127)

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 
joo:
Qual è la differenza tra chiamare funzioni da dll in MT4 e MT5? Compilo una dll, funziona bene in MT5, ma in MT4 genera un errore:

2011.10.06 23:00:34 Esecutore Solaris EURUSDm,M1: impossibile chiamare la funzione 'InfoOfTrading' dalla dll 'Solaris.dll' (errore 127)

Datemi una descrizione del prototipo di funzione, per favore. Molto probabilmente hai usato il progetto _stdcall per MT5.

MT5 ha un meccanismo più flessibile per collegare i nomi delle funzioni DLL - supporta automaticamente sia _stdcall (più avanzato con la decorazione del nome) che _cdecl (vecchio metodo classico). MetaTrader 4 supporta solo le chiamate _cdecl.

Avete letto l'articolo"Come scrivere una DLL per MQL5 e condividere i dati in 10 minuti?"Spiega in dettaglio come chiamare le funzioni della DLL.

 
Renat:

Fornire una descrizione del prototipo di funzione, per favore. Molto probabilmente per MT5 avete usato il design _stdcall.

MT5 ha un meccanismo più flessibile per collegare i nomi delle funzioni DLL - supporta automaticamente sia _stdcall (più avanzato con la decorazione del nome) che _cdecl (vecchio metodo classico). MetaTrader 4 supporta solo le chiamate _cdecl.

Leggi l'articolo"Come scrivere una DLL per MQL5 e scambiare dati in 10 minuti?" - c'è una descrizione dettagliata delle chiamate di funzione della DLL.

Ho cercato di dichiararlo in questo modo:

_DLLAPI void _cdecl InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

E così:

_DLLAPI void InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

invece di quello vecchio:

_DLLAPI void __stdcall InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

Ma ora un errore diverso:

2011.10.07 01:35:05 Solaris executor EURUSDm,M1: funzione 'InfoOfTrading' chiamata dalla dll 'Solaris.dll' errore critico


Ho letto l'articolo.


Nelle impostazioni del progetto ha specificato esplicitamente il modo di chiamare:


E in MT5 funziona ancora senza errori.

 
tol64:
In generale, i segnali sono descritti nella Guida esattamente nel modo in cui ne avete bisogno. Potete vederlo qui. L'immagine mostra le impostazioni dell'indicatore CCI. Quindi, molto probabilmente, il vostro Expert Advisor non si baserà solo sui segnali dell'indicatore Envelopes. C'è anche l'ICC.

Giusto, scusa per questo. Ho postato l'immagine sbagliata. Ma non cambia la questione. Ecco un'immagine dell'EA sulle sole buste.

Cosa faccio, come lo sistemo?

 

A proposito, nell'esempio di surs dalla consegna standard di MT4 la chiamata è fatta tramite __stdcall:

MT4_EXPFUNC double __stdcall GetDoubleValue(const double dpar)
  {
   printf("GetDoubleValue takes %.8lf\n",dpar);
   return(dpar);
  }

e funziona bene.

 
Qualcuno me lo spieghi!!!
 
joo:

A proposito, nell'esempio surs dalla consegna standard MT4 la chiamata tramite __stdcall:

e funziona bene.


Nell'esempio di MT4:

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall sembra essere supportato. Non sono sicuro che sia corretto descrivere il passaggio di parametri tramite & per i quattro.
Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Renat:

L'esempio di MT4:

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall risulta essere supportato. Non sono sicuro che sia corretto descrivere il passaggio dei parametri tramite & per i quattro.

Sono completamente disimparato in due anni con 4. :)

1. si scopre che una variabile passata per riferimento non può essere scritta in una DLL. Devi usare un array per questo.

2. ed è obbligatorio usare il file *.def.

Qui ci sono effettivamente 2 differenze di lavoro con le DLL del 4 e del 5 che ho scoperto, potrebbero essercene altre.

 
Gente, scusate se questo tipo di domanda è già fastidiosa, potete dirmi come compilare correttamente la scheda parametri>mail? Ho la posta su mail.ru, funzionerà? Non so qual è l'indirizzo del server lì ... se non adatto, dove registrare un adatto? Voglio fare notifiche via email...