Neue API MetaTrader 4 VERFÜGBAR - Seite 6

[Gelöscht]  
yewnix:

Ich verstehe hier etwas nicht.

Ich kann Order Sends den ganzen Tag lang machen...

Aber ich habe ein großes Problem mit OrderClose...


Können Sie bitte ein Beispiel dafür geben.


Ich glaube wirklich nicht, dass es an meiner .NET Wrapper DLL liegt.

Hallo yewnix!


Sie können einen Blick auf <Programmdateien>\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip werfen


dieser einfache mql Code, schließt alle offenen Orders, sobald Sie <orderproxy.mqh> einschließen


int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

int Total = TZ_OrdersTotal();


for(i=0;i<Total;i++)

{

TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

}

Mit freundlichen Grüßen.

[Deleted]  
TradeZone:

Hallo yewnix!


Sie können einen Blick auf C:\Arquivos de programas\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip werfen


dieser einfache mql Code, schließt alle offenen Aufträge, sobald Sie <orderproxy.mqh> einschließen


int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

int Total = TZ_OrdersTotal();


for(i=0;i<Total;i++)

{

TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

}

Mit freundlichen Grüßen.

Ich versuche, dies in C# zu tun.

Ich habe Ihre Funktionen genommen und einen DLL-Wrapper für .NET geschrieben

ie:


double askprice = MT4ApiNet.MarketInfo_MT4(h, "GBPUSD", (int)MT4ApiNet.MarketInfoType.MODE_ASK)

MT4ApiNet.OrderSend_MT4(h, "GBPUSD", (int)MT4ApiNet.OrderType.OP_BUY, 1, askprice, 3, (askprice - 0.0050), (askprice + 0.0050), "Mein Programm", 100, 0);


Dies funktioniert perfekt. Dieser Auftrag wird perfekt angezeigt.

Wenn ich nun die Auftragsnummer von MetaTrader erhalte (z.B. mit 1234 als Auftragsnummer)


MT4ApiNet.OrderClose_MT4(h, 1234, 1, MT4ApiNet.OrderClosePrice_MT4(h,1234), 20);


Dadurch wird die Order nicht storniert...

Auch wenn ich die Aufträge durchlaufe und ein MT4ApiNet.OrderGet_MT4 ausführe, funktioniert es nicht.

[Deleted]  

ZU IHRER INFORMATION.

Wenn ich nach dem OrderClose den letzten Fehler erhalte...

MessageBox.Show(MT4ApiNet.ErrorDescription_MT4(MT4ApiNet.GetLastError_MT4(h)));


Diese Rückgabe General Erro



Kannst du wenigstens einen richtigen OrderClose in Delphi anzeigen?

Selbst in Delphi bleibt mein Code hängen

[Deleted]  
TradeZone:

Hallo juso,


<Programmdateien>\TradeZone\TZMT4API\Developer\MetaTrader4 API.txt enthält, was Sie wollen.


Mit freundlichen Grüßen.

Hallo TradeZone


vielen Dank für die schnelle Antwort. Das letzte Mal, dass ich mich aktiv mit C++-Entwicklung beschäftigt habe, ist 8 Jahre her und damals brauchte man die *.h und *.lib der dll, um api natürlich ausüben zu können. Wenn man die *.h-Datei hat, aber nicht die *.lib, kann man es immer noch tun, indem man die Funktionsadressen dynamisch auflöst, obwohl der Prozess mühsamer ist. Ich kann also die *.h-Datei selbst erstellen, obwohl die *.lib noch fehlt. Vielleicht gibt es eine einfache Möglichkeit, die lib aus der dll selbst zu erstellen, die mir nicht bekannt ist.


Mach's gut

Juso

[Deleted]  

TradeZone,


Könnten Sie bitte ein funktionierendes Beispiel für einen OrderClose_MT4-Befehl posten, der von einer Delphi-Anwendung gesendet wird.

Wie bereits erwähnt, kann ich dies nicht zum Laufen bringen.


Danke!

[Deleted]  
stoßen... stoßen...
[Deleted]  

Nun, da ich keine Antwort darauf erhalten habe, habe ich angefangen zu recherchieren, wie Ihre DLL eigentlich funktioniert.

Eigentlich eine ziemlich gute Idee.

Laden Sie 10 Charts, die jeweils mit einem anderen EA verbunden sind.

Diese EAs laufen und erstellen Dateien im Verzeichnis experts/files.

Die DLL liest diese Dateien wieder ein, um Daten in Ihrer programmierten Anwendung anzuzeigen.

EA prüft, ob Dateien vorhanden sind (die von den DLL-Aufrufen erzeugt wurden), und wenn sie vorhanden sind, werden die Transaktionen verarbeitet, dann werden andere Dateien erstellt, um die Antwortdaten zurückzugeben, und dann wird die von der DLL erstellte Datei gelöscht, damit wir wissen, dass die Transaktion entweder abgeschlossen oder fehlgeschlagen ist.


Wenn ich mich nicht irre, ist der vom Login_MT4-Befehl zurückgegebene Handle nur ein Index für den zufällig generierten Verzeichnisnamen. Auf diese Weise wissen Sie, welchen terminal.exe-Prozess Sie steuern und wo Sie Ihre generierten Dateien ablegen müssen.


Ich könnte mit all dem falsch liegen, ich möchte nur das OrderClose-Problem beheben, das ich habe...


Wie auch immer, anstatt Dateien immer und immer wieder zu erstellen... Ich würde dringend empfehlen, Memory Mapping zu verwenden (Create / Open Memory Map basierend auf Pair Name_Handle)

Gute Arbeit durch die Art und Weise.. nur die Sie könnte mir sagen, über die OrderClose, so dass ich nicht haben, um meine eigenen EAs und die Memory Map DLL-Schnittstelle zu programmieren.


Da habt ihr es, Leute, meine Analyse dieser API.


Prost!

[Gelöscht]  

Leute,

Ich habe eine Integration wie diese arbeiten schön und getestet (nicht dieser Code). Es ist durch einen Experten getan, und stellt Funktionalität durch eine C++ / Managed C++ zu einem .NET-Modul. Es ermöglicht eine reibungslose Verwaltung der Trades, meldet Fehler, gibt Echtzeit-Kurse, etc. Die Kommunikation erfolgt über TCP, ist also schnell und zuverlässig.

Es wird als Teil einer neuen Open-Source-Handelsplattform (.NET-basiert, es kann MT4 verwenden, um Daten zu empfangen oder Aufträge auszuführen) völlig kostenlos als Open-Source veröffentlicht werden. Sie können wählen, ob Sie die Plattform oder nur einen kleinen Teil der Integration nutzen wollen - es liegt an Ihnen.

Wenn Sie interessiert sind, melden Sie sich, und ich werde Ihnen weitere Einzelheiten mitteilen :)

Der Start der Plattform ist in wenigen Tagen geplant (ca. 15.Okt).

[Deleted]  

Peer2k,


Schön, ja, ich habe auch schon daran gedacht, TCP anstelle von Memory Mapping zu verwenden.

Wenn du mir einen Link zu dem Code schicken möchtest, würde ich ihn mir gerne ansehen.

Das liegt aber ganz bei dir :)


Prost!

yewnix@gmail.com

[Deleted]  
Hey, peer2k, das wäre sehr cool, bitte poste mir die Details, yuryrub@gmail.com.