Fragen von einem "Dummy" - Seite 75

 
kirill-demo:
Ich habe meinen Expert Advisor im Assistenten erstellt. Ich kenne mql nicht sehr gut. Könnten Sie mir bitte anhand des Beispiels der Umschläge erklären, was zu tun ist?

Die Klasse CSignalEnvelopes verfügt nicht über ein solches Marktmodell.

Fazit: Wir müssen die Klasse verbessern (oder unsere eigene Klasse schreiben).

 
Was ist der Unterschied zwischen dem Aufruf einer Funktion aus einer DLL in MT4 und MT5? Ich kompilieren dll, es funktioniert gut in MT5, aber in MT4 es gibt mir Fehler:

2011.10.06 23:00:34 Solaris Executor EURUSDm,M1: kann Funktion 'InfoOfTrading' aus dll 'Solaris.dll' nicht aufrufen (Fehler 127)

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 
joo:
Was ist der Unterschied zwischen dem Aufruf von Funktionen aus einer DLL in MT4 und MT5? Ich kompiliere eine dll, es funktioniert gut in MT5, aber in MT4 erzeugt es einen Fehler:

2011.10.06 23:00:34 Solaris Executor EURUSDm,M1: kann Funktion 'InfoOfTrading' aus dll 'Solaris.dll' nicht aufrufen (Fehler 127)

Geben Sie mir bitte eine Beschreibung des Funktionsprototyps. Wahrscheinlich haben Sie _stdcall für MT5 verwendet.

MT5 hat einen flexibleren Mechanismus für die Verknüpfung von DLL-Funktionsnamen - er unterstützt automatisch sowohl _stdcall (fortschrittlicher mit Namensdekoration) als auch _cdecl (alte klassische Methode). MetaTrader 4 unterstützt nur _cdecl-Aufrufe.

Haben Sie den Artikel"How to write a DLL for MQL5 and share data in 10 minutes" gelesen?"Er erklärt ausführlich, wie man DLL-Funktionen aufruft.

 
Renat:

Geben Sie bitte eine Beschreibung des Funktionsprototyps an. Wahrscheinlich haben Sie für MT5 das Design _stdcall verwendet.

MT5 hat einen flexibleren Mechanismus für die Verknüpfung von DLL-Funktionsnamen - er unterstützt automatisch sowohl _stdcall (fortschrittlicher mit Namensdekoration) als auch _cdecl (alte klassische Methode). MetaTrader 4 unterstützt nur _cdecl-Aufrufe.

Lesen Sie den Artikel"Wie schreibt man eine DLL für MQL5 und tauscht Daten in 10 Minuten aus?"Dort finden Sie eine detaillierte Beschreibung der DLL-Funktionsaufrufe.

Ich habe versucht, es so zu deklarieren:

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

Und so:

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

anstelle des alten:

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

Aber jetzt ein anderer Fehler:

2011.10.07 01:35:05 Solaris executor EURUSDm,M1: Funktion 'InfoOfTrading' Aufruf von dll 'Solaris.dll' kritischer Fehler


Ich habe den Artikel gelesen.


In den Einstellungen des Projekts wird die Art des Aufrufs explizit angegeben:


Und in MT5 funktioniert immer noch ohne Fehler.

 
tol64:
Im Allgemeinen werden die Signale in der Hilfe genau so beschrieben, wie Sie sie brauchen. Sie können es hier sehen. Die Abbildung zeigt die Einstellungen des CCI-Indikators. Daher wird Ihr Expert Advisor höchstwahrscheinlich nicht nur auf den Signalen des Hüllkurven-Indikators basieren. Es gibt auch die CCI.

Richtig, das tut mir leid. Ich habe das falsche Bild gepostet. Aber das ändert nichts an der Sache. Hier ist ein Bild vom EA nur für Umschläge.

Was muss ich tun? Wie bringe ich es in Ordnung?

 

Übrigens, im surs-Beispiel aus der Standard-MT4-Auslieferung erfolgt der Aufruf über __stdcall:

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

und es funktioniert gut.

 
Kann mir das mal jemand erklären!!!
 
joo:

Übrigens, im surs-Beispiel aus der Standard MT4-Auslieferung erfolgt der Aufruf über __stdcall:

und es funktioniert gut.


Im MT4-Beispiel:

#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 scheint unterstützt zu werden. Ich bin mir nicht sicher, ob es korrekt ist, die Parameterübergabe durch & für Vierer zu beschreiben.
Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Renat:

Das MT4-Beispiel:

#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 wird unterstützt. Ich bin mir nicht sicher, ob es richtig ist, die Parameterübergabe durch & für die vier zu beschreiben.

Ich bin nach zwei Jahren mit 4 völlig verunsichert. :)

1. Es stellt sich heraus, dass eine als Referenz übergebene Variable nicht in eine DLL geschrieben werden kann. Dafür müssen Sie ein Array verwenden.

2. und es ist obligatorisch, die *.def-Datei zu verwenden.

Hier sind eigentlich 2 Unterschiede bei der Arbeit mit 4er und 5er dlls, die ich entdeckt habe, es kann noch mehr geben.

 
Leute, entschuldigt, wenn diese Art von Frage schon lästig ist, könnt ihr mir sagen, wie ich die Parameter>Registerkarte E-Mail richtig ausfülle? Ich habe eine E-Mail auf mail.ru, wird sie funktionieren? Ich weiß nicht, was ist die Adresse des Servers gibt ... wenn nicht geeignet, wo ein geeigneter zu registrieren? Ich möchte E-Mail-Benachrichtigungen versenden...
Grund der Beschwerde: