Nouvelle API MetaTrader 4 DISPONIBLE - page 6

[Supprimé]  
yewnix:

Il y a quelque chose que je ne comprends pas...

Je peux faire des envois d'ordres toute la journée...

Cependant, j'ai un gros problème pour faire un OrderClose...


Pouvez-vous me donner un exemple ?


Je ne pense vraiment pas que ce soit ma DLL de wrapper .NET.

Bonjour yewnix !


Vous pouvez jeter un coup d'oeil sur <Program Files>\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip


ce simple code mql, ferme tous les ordres ouverts, une fois que vous incluez <orderproxy.mqh>.


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);

}

Cordialement.

[Удален]  
TradeZone:

Salut yewnix !


Vous pouvez jeter un coup d'oeil sur C:\Arquivos de programas\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip


ce simple code mql, ferme tous les ordres ouverts, une fois que vous incluez <orderproxy.mqh>


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);

}

Cordialement.

J'essaie de faire cela en C#.

J'ai pris vos fonctions et écrit un wrapper dll pour .NET.

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), "My Program", 100, 0) ;


Cela fonctionne parfaitement. Cet ordre s'affiche parfaitement.

Maintenant, si je récupère le numéro d'ordre de MetaTrader (en utilisant 1234 comme numéro d'ordre par exemple)


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


Cela n'annule pas l'ordre...

Même si je passe en revue les ordres et que je fais un MT4ApiNet.OrderGet_MT4, cela ne fonctionne toujours pas.

[Удален]  

FYI.

Après avoir effectué l'OrderClose, si j'obtiens la dernière erreur...

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


Ce retour Erro général



Pouvez-vous au moins montrer un OrderClose correct dans Delphi ?

Même en delphi, mon code se bloque

[Удален]  
TradeZone

Salut juso,


<Program Files>\TradeZone\TZMT4API\Developer\MetaTrader4 API.txt contient ce que vous voulez.


Bien à vous.

Bonjour TradeZone


Merci pour cette réponse rapide. La dernière fois que j'ai développé activement du c++, c'était il y a 8 ans et à cette époque, il fallait avoir *.h et *.lib de la dll pour pouvoir exercer l'API naturellement. Si vous avez le fichier *.h mais pas le *.lib, vous pouvez toujours le faire en résolvant l'adresse de la fonction dynamiquement, bien que le processus soit plus fastidieux. Ainsi, je peux créer le fichier *.h moi-même bien que *.lib soit toujours manquant. Il existe peut-être un moyen simple de créer une librairie à partir de la dll elle-même, mais je n'en ai pas connaissance.


Prenez soin de vous

Juso

[Удален]  

TradeZone,


Pourriez-vous afficher un exemple de commande OrderClose_MT4 envoyée depuis une application Delphi ?

Comme indiqué précédemment, je n'arrive pas à la faire fonctionner.


Merci.

[Удален]  
bump... bump...
[Удален]  

Comme je n'ai pas reçu de réponse à ce sujet, j'ai commencé à creuser sur le fonctionnement de votre DLL.

Plutôt bonne idée en fait.

Chargez 10 graphiques, chacun attaché à un EA différent.

Ces EAs s'exécutent et créent des fichiers dans le répertoire experts/files.

La DLL relit ces fichiers pour afficher les données dans votre application programmée.

L'EA vérifie l'existence des fichiers (produits par les appels DLL) et s'ils existent, ils traitent les transactions, puis créent d'autres fichiers pour renvoyer les données de réponse, puis suppriment le fichier créé par la DLL, ce qui nous permet de savoir si la transaction a abouti ou échoué.


Si je ne me trompe pas, le Handle renvoyé par la commande Login_MT4 est juste un index du nom de répertoire généré de manière aléatoire. De cette façon, vous savez quel processus terminal.exe contrôler et où placer vos fichiers générés.


Je peux me tromper, je veux juste résoudre le problème de OrderClose que j'ai rencontré...


Cependant, au lieu de créer des fichiers encore et encore... Je recommande fortement d'utiliser le Memory Mapping (Create / Open Memory Map basé sur Pair Name_Handle).

Bon travail d'ailleurs... juste ce que vous pourriez me dire sur l'OrderClose pour que je n'aie pas à coder mes propres EAs et l'interface Memory Map DLL.


Voilà les gars, mon analyse de cette API.


A la vôtre !

[Supprimé]  

Les gars,

J'ai une intégration comme celle-ci qui fonctionne bien et qui a été testée (pas ce code). Elle est faite par un expert, et expose la fonctionnalité à travers un C++/ Managed C++ à un module .NET. Il permet une gestion fluide des transactions, signale les erreurs, donne des cotations en temps réel, etc. La communication se fait par TCP, ce qui la rend rapide et fiable.

Il sera mis en ligne en tant que source ouverte entièrement gratuite dans le cadre d'une nouvelle plateforme de trading open source (basée sur .NET, elle peut utiliser MT4 pour recevoir des données ou exécuter des ordres). Vous pouvez choisir d'utiliser la plateforme, ou simplement une petite partie de l'intégration - c'est à vous de décider.

Si vous êtes intéressé, levez la main et je vous donnerai plus de détails :)

Le lancement de la plateforme est prévu dans quelques jours (environ le 15 octobre).

[Удален]  

Peer2k,


Joli, j'avais pensé à utiliser le TCP au lieu du Memory Mapping.

Si tu veux envoyer un lien vers le code, ça ne me dérangerait pas de le regarder.

Mais c'est à toi de voir :)


Merci !

yewnix@gmail.com

[Удален]  
hey, peer2k, ce serait très cool, s'il vous plaît envoyez-moi les détails, yuryrub@gmail.com.