
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
int TikKot(char *kotx, double *bid, double *ask, TDateTime *tim);
diese Zeile unterstützt keine Daten wie "TDateTime *tim" in Omega.
Das bedeutet, dass nur die Funktionen für den Start und das Ende des Terminals funktionieren, für die keine Parameter festgelegt wurden. Wo Parameter gesetzt werden, müssen wir wissen, welche Parameter von der DLL genommen werden, es wäre schön, wenn wir Beispiele hätten.
Ich denke, Sie müssen sich ein Beispiel in Delphi mit einem Programmierer ansehen, der Ihnen genau sagen kann, was Sie brauchen, und dann nach Omega-Tools suchen, um die erforderlichen Parameter an die DLL zu liefern. Wenn SIE eine Version der DLL speziell für Omega herausgeben wollten, würde dies das schnelle Testen und die Nutzung ungemein erleichtern. Ich denke, es gäbe viele Benutzer mit Omega. Es gibt bereits einige interessierte Nutzer. Hier ist ein kleiner Auszug aus der Omega-Hilfe:
Ein wichtiger Punkt ist die Liste der unterstützten Datentypen, siehe unten.
DLL-Funktionsdefinition
Bevor Sie eine DLL-Funktion aus EasyLanguage heraus aufrufen können, müssen Sie die DLL mit der Anweisung DLL-Funktionsdeklaration deklarieren.
Syntax:
DefineDLLFunc: "DLLNAME.DLL", Rückgabetyp, "Funktionsname", Parameter;
DLLNAME.DLL ist der Name der DLL, in der sich die Funktion befindet, Rückgabetyp ist der Typ des Ausdrucks, den die Funktion zurückgibt, Funktionsname ist der Funktionsname, wie er in der DLL definiert ist, Parameter ist die Liste der von der Funktion erwarteten Parameter (jeder Parameter durch Komma getrennt).
Es ist sehr wichtig, daran zu denken, dass 32-Bit-DLLs exportierte, unter Berücksichtigung der Groß- und Kleinschreibung deklarierte Funktionen mit _cdecl, stdcall oder fastcall verwenden. Damit DLLs mit EasyLanguage kompatibel sind, müssen exportierte Funktionen in Großbuchstaben erstellt und als _stdcall deklariert werden. Diese Exportfunktionen müssen im Abschnitt EXPORTS .DEF der DLL-Datei aufgeführt sein. Die Verwendung von "_declspec (dllexport)" im Funktionsprototyp reicht nicht aus, damit EasyLanguage die exportierten DLL-Funktionen finden kann.
Die folgende Anweisung deklariert beispielsweise eine Funktion namens MessageBeep, die sich dauerhaft in einer DLL namens USER32.DLL befindet. Sie gibt einen booleschen Wert (wahr/falsch) zurück und erwartet einen einzigen Parameter, int.
DefineDLLFunc: "USER32.DLL", bool, "MessageBeep", int;
Datentypen
EasyLanguage unterstützt viele gültige Datentypen, die zum Senden und Empfangen von Informationen an in DLLs enthaltene Funktionen verwendet werden können. Hier ist eine Liste der Datentypen, die von EasyLanguage unterstützt werden:
Grundlegende Datentypen:
BYTE
1 Byte Ganzzahl-Datentyp.
char
1 Byte ganzzahliger Datentyp.
int
Datentyp 4 Byte Ganzzahl mit Vorzeichen.
WORD
Datentyp 2 Byte Ganzzahl ohne Vorzeichen.
long
Datentyp 4 Byte Ganzzahl mit Vorzeichen.
DWORD
Datentyp 4 Byte Ganzzahl ohne Vorzeichen.
float
4-Byte-Gleitkommadatentyp.
double
8-Byte-Gleitkommadatentyp.
BOOL
4 Byte boolescher Datentyp.
Varianten:
UNSIGNED LONG
Dasselbe wie DWORD.
VOID
Bedeutet "Kein Rückgabewert".
Zeigertypen:
LPBYTE
Zeiger auf ein BYTE.
LPINT
Zeiger auf einen int.
LPWORD
Zeiger auf ein WORD.
LPLONG
Zeiger auf einen LONG.
LPDWORD
Zeiger auf ein DWORD.
LPFLOAT
Zeiger auf einen Float (in float FAR).
LPDOUBLE
Zeiger auf ein Double (in double FAR).
LPSTR
Zeiger auf ein Zeichen.
Alle Zeiger sind 32-Bit-Zeiger und EasyLanguage behandelt sie alle auf die gleiche Weise.
Es ist auch sehr wichtig, sich daran zu erinnern, dass alle Werte in EasyLanguage Fließkommazahlen sind, mit Ausnahme von Open, High, Low und Close, die Ganzzahlen sind. Um diese Preise zu steuern, müssen Sie die Funktion Preisskala an das Symbol senden, aus dem der Chart besteht.
Wenn zum Beispiel ein Wertpapier eine Preisskala von 1/1000 hat und der Endpreis 105,125 beträgt, wird dieser Preis als 105125 an die DLL gesendet. Damit die DLL weiß, wie sie diesen Preis lesen kann, müssen Sie den Wert im reservierten Wort PriceScale senden, das in diesem Fall den Wert 1.000 zurückgibt.
in dieser Zeile werden Daten vom Typ "TDateTime *tim" von Omega nicht unterstützt.
Jetzt ergibt alles einen Sinn. Um dieses Problem zu umgehen, versuchen Sie, den Double-Typ in Omega anstelle von TDateTime anzugeben - d.h. int TikKot(char, double, double, double);
Eigentlich sind diese Typen leicht austauschbar und verwenden jeweils 8 Byte Speicher. Viel Glück!
Warum? Das steht in der Beschreibung:
Zeiger auf ein Zeichen.
Das ist das Gleiche. Gibt es in der Omega-Dokumentation Beispiele für diese Arten von Variablen? Sie müssen dort sorgfältig nach ähnlichen Varianten suchen. Viel Glück!
Dies ist aus der DLL-Hilfe:
Hinweis: 32-Bit-DLLs verwenden exportierte Funktionen, die mit _cdecl, _stdcall oder fastcall deklariert werden, unter Berücksichtigung der Groß-/Kleinschreibung. Damit DLLs mit EasyLanguage kompatibel sind, sollten exportierte Funktionen in Großbuchstaben erstellt und als _stdcall deklariert werden. Diese exportierten Funktionen müssen im Abschnitt EXPORTS der DEF-Datei der DLL aufgeführt sein. Die Verwendung von "_declspec (dllexport)" im Funktionsprototyp reicht nicht aus, damit EasyLanguage die exportierten Funktionen einer DLL finden kann.
Hier steht also, dass Omega nur mit Funktionen arbeitet, die in großen Buchstaben geschrieben sind. Ich habe überprüft, wie es in einer anderen DLL geschrieben ist, wirklich nur in GROSSBUCHSTABEN.
Wenn Sie den Aufruf der Funktionen ändern (Namen in Großbuchstaben), können wir weitere Tests durchführen.
Ich persönlich bin sehr an Ihrem Produkt interessiert und meine Bitte an Sie ist, die DLL an Omega anzupassen. Ich hoffe, es wird funktionieren... Viel Glück!
Wenn nicht, dann posten Sie bitte hier, ich muss an einer anderen Lösung zur Handelsautomatisierung arbeiten. Ich danke Ihnen.
Ich persönlich bin sehr an Ihrem Produkt interessiert und meine Bitte an Sie ist, die DLL an Omega anzupassen. Ich hoffe, es wird funktionieren... Viel Glück!
Ich habe eine Variante mit großen Funktionsbuchstaben erstellt und an Ihren Posteingang geschickt. Viel Glück!