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
Ich habe eine DLL in Delphi gemacht, ich rufe sie von MT4 aus auf. Alles funktioniert, außer einfachen Parametern, die als Referenz übergeben werden. In Delphi wie folgt deklariert:
procedure Test2(var i: integer); stdcall;
begin
if addr(i) = nil then ShowMessage('What the hell?');
end;
stop to call it as
#import "DLL1.dll"
void Test2(int& i);
Ich rufe
int init() {
int x = 5;
Test2(x);
return(x);
}
beim Aufruf sollte ein Verweis auf die Variable integer im Stack sein, aber null ist da
wie kann man also einen int-Parameter per Verweis übergeben?
Bei der Übergabe von Arrays wird der Array-Wert als Referenz übergeben
unter Verwendung von
MetaEditor 4.00 build 183
MetaTrader 4.00 build 186
eine weitere Frage: Wenn ich einen String als Referenz übergebe, wie groß ist der String-Puffer?
eine weitere Frage:
Wenn ich einen String als Funktionsergebnis übergebe, wo sollte der Speicherbereich für den String zugewiesen werden? Sollte ich einen Zeiger auf eine globale Variable in der DLL übergeben? In diesem Fall kann ich sicher sein, dass die DLL nicht von verschiedenen Threads gleichzeitig in jedem Modus von Metatrader aufgerufen werden?
Vielen Dank im Voraus
zu Beginn des Tages zwei schwebende Aufträge
Sobald eine (beliebige) ausgelöst - die zweite entfernt wird
Fünf Minuten vor dem Schließen der Bar (sagen wir eine tägliche), um die ausgelöste schließen (wenn es nicht von SL oder TP geschlossen wurde)
Wenn keine schwebende Bestellung ausgelöst, fünf Minuten vor dem Schließen der Bar löschen sie beide
Vielen Dank
2) Wenn ich die Zeichenfolge als Funktionsergebnis übergebe, wo sollte der Speicherbereich für die Zeichenfolge zugewiesen werden? Sollte ich einen Zeiger auf eine globale Variable in der DLL übergeben? In diesem Fall kann ich sicher sein, dass die DLL nicht von verschiedenen Threads gleichzeitig in jedem Modus des Metatraders aufgerufen werden?
Vielen Dank im Voraus
Wenn eine (beliebige) ausgelöst - die zweite gelöscht wird
Fünf Minuten vor dem Schließen der Bar (sagen wir eine tägliche) zu schließen, die ausgelöst (wenn es nicht von SL oder TP geschlossen wurde)
Wenn keine schwebende Bestellung ausgelöst, fünf Minuten vor dem Schließen der Bar löschen sie beide
Vielen Dank im Voraus
Sie setzen die ausstehenden Aufträge zum richtigen Zeitpunkt (das ist einfach). Und Sie fangen an, Bestellungen zu überprüfen. Sobald ein Kauf- oder Verkaufsauftrag auftaucht, arbeiten Sie sich durch die Entfernung des schwebenden Auftrags (noch einfacher). Und dann, zum richtigen Zeitpunkt, arbeiten Sie daran, alle Aufträge abzuschließen (das ist ganz einfach).
в начале дня устанавливаем два отложенных ордера
После того как один(любой) сработал - второй удаляется
За пять минут до закрытия бара(допустим дневного) закрыть сработавший (если он не был закрыт по SL или TP)
Если ни один отложенный ордер не соработал то за пять минут до закрытия бара удаляем их обоих
Заранее спасибо
So setzen Sie es um: Sie stellen die ausstehenden Aufträge zum richtigen Zeitpunkt ein (das ist ganz einfach). Und dann fangen Sie an, die Aufträge zu prüfen. Sobald ein Kauf- oder Verkaufsauftrag erscheint, entfernen Sie den schwebenden Auftrag (dies ist noch einfacher). Und dann, zum richtigen Zeitpunkt, arbeiten, um alle Aufträge zu schließen (es ist sehr einfach).
Ich habe nach einem funktionierenden Code gefragt (vielleicht hat ihn jemand implementiert).
Alles, was ich gemacht habe, hat nicht funktioniert ... Der Vorgang des Odrerdelete ist irgendwie verwirrend.
Eine weitere Frage: manchmal friert der Preis (keine Ticks) für einige Minuten ein, d.h. wir können eine Order nicht schließen, da der int start()-Körper nicht ausgeführt wird, obwohl Ticks für andere Symbole empfangen werden, ist es möglich, den Curetime-Wert von jedem Symbol mit Ticks zu übergeben?
Einfach ausgedrückt, sollte der Curetime-Wert praktisch nicht einfrieren
Und was bewirkt dieses Codefragment?
Löscht die beiden ausstehenden Aufträge, die noch nicht ausgelöst wurden