L'EA que j'ai écrit il y a trois mois ne peut pas passer le test de stratégie maintenant, mais il fonctionnait bien il y a deux ou trois mois !
Essayez d'ajouter ZeroMemory(sell).
if (condition1) { ZeroMemory(sell); sell.action = TRADE_ACTION_DEAL; sell.type = ORDER_TYPE_SELL; sell.symbol = _Symbol;Nous avons corrigé ce problème, attendez la prochaine version, s'il vous plaît.
Essayez d'ajouter ZeroMemory(sell).
Nous avons corrigé ce problème, attendez la prochaine version, s'il vous plaît.Rosh, je viens de mettre à jour en .565 et j'ai eu le même message #4756.
ZeroMemory(struct) aide. Donc c'est corrigé ou pas encore ?
Merci
Essayez d'ajouter ZeroMemory(sell).
Nous avons corrigé ce problème, attendez la prochaine version, s'il vous plaît.J'ai la même erreur bien que j'aie suivi la manière exacte de composer l'ordre. Comment cela se fait-il ? J'utilise le build 597.
2012.02.26 20:08:18 Core 1 2012.02.23 08:00:00 Alert : The Buy order request could not be completed -error:4756
2012.02.26 20:08:18 Core 1 2012.02.23 08:00:00 Échec de l'achat sur le marché de 0,10 EURUSD sl : 1.32438 tp : 1.33738 [Mode de remplissage non pris en charge].
if(Buy_Condition_3 && Buy_Condition_4)
{
// une position d'achat ouverte ?
if(Buy_opened)
{
Alert("Nous avons déjà une position d'achat !!!") ;
return ; // Ne pas ouvrir une nouvelle position d'achat.
}
ZeroMemory(mrequest) ;
mrequest.action = TRADE_ACTION_DEAL ; // exécution immédiate de l'ordre
mrequest.type = ORDER_TYPE_BUY ; // Ordre d'achat
mrequest.symbol = _Symbol ; // paire de devises
mrequest.deviation=0 ; // Déviation du prix actuel
mrequest.price = NormalizeDouble(latest_price.ask,_Digits) ; // Dernier prix demandé
mrequest.volume = Lot ; // nombre de lots à négocier
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits) ; // Prise de bénéfice (Take Profit)
mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits) ; // Stop Loss
mrequest.type_filling = ORDER_FILLING_AON; // Type d'exécution de l'ordre
//--- envoyer l'ordre
OrderSend(mrequest,mresult) ;
// Obtenez le code de résultat
if(mresult.retcode==10009 || mresult.retcode==10008) //Requête terminée ou commande passée
{
Alert("Un ordre d'achat a été placé avec succès avec le Ticket# :",mresult.order," !!") ;
}
else
{
Alert("La demande d'ordre d'achat n'a pas pu être complétée -erreur :",GetLastError()) ;
ResetLastError() ;
retour ;
}
- www.mql5.com
Je remarque que dans la référence MQL5 (dernière version qui vient d'être mise à jour aujourd'hui), il n'y a plus de ORDER_FILLING_AON, mais même si j'utilise ORDER_FILLING_FOK, je rencontre toujours l'erreur 4756. Veuillez me conseiller.
Identificateur | Description |
ORDER_FILLING_FOK | L'opération peut être exécutée exclusivement avec un volume spécifié au prix égal ou supérieur au prix spécifié dans l'ordre. S'il n'y a pas de volume suffisant d'offres sur le symbole de l'ordre, l'ordre ne sera pas exécuté. Ce type de remplissage est utilisé dans les modes d'exécution SYMBOL_TRADE_EXECUTION_INSTANT ouSYMBOL_TRADE_EXECUTION_REQUEST. |
ORDRE_REMPLISSAGE_IOC | Un accord pour exécuter la transaction avec le volume maximal du marché à un prix égal ou supérieur au prix spécifié dans l'ordre. Dans ce cas, un ordre supplémentaire pour le volume non rempli ne sera pas placé. Ce type de remplissage est utilisé dans les modes d'exécution SYMBOL_TRADE_EXECUTION_MARKET etSYMBOL_TRADE_EXECUTION_EXCHANGE selon les paramètres du symbole sur un serveur de négociation. |
ORDRE_REMPLISSAGE_RETOUR | Un accord pour exécuter la transaction avec le volume maximal du marché à un prix égal ou supérieur au prix spécifié dans l'ordre. Dans ce cas, un ordre supplémentaire pour le volume non rempli sera placé. Ce type de remplissage est utilisé uniquement pour les ordres en attente (TRADE_ACTION_PENDING). |
Bonjour, un commentaire avant d'abandonner MT5 et de revenir à MT4 ? Merci beaucoup ! Je suis en fait nouveau sur les deux, mais j'essaierais d'abord MT5, même si je sais qu'il est très récent.
Ajoutez ceci avant la demande de modification :
ZeroMemory(mrequest); ZeroMemory(mresult);
J'ai eu exactement le même problème que vous et cela l'a réglé pour moi.
J'ai le même problème maintenant.
Mes conseillers experts fonctionnaient très bien. Mais maintenant, ils ne passent pas tous le testeur.
Lorsque je compile les fichiers, le message suivant s'affiche :
ORDER_FILLING_AON' - identifiant non déclaré.
Comment résoudre ce problème ?
Est-ce le résultat d'une mise à jour du terminal ? (Version 5.00 Build 642)
(24 avril 2012)
J'espère que quelqu'un pourra m'aider
- www.mql5.com
Lorsque je compile les fichiers, le message suivant s'affiche :
ORDER_FILLING_AON' - identifiant non déclaré.
Comment résoudre ce problème ?
Remplacer ORDER_FILLING_AON par ORDER_FILLING_FOK (voir les propriétés de l'ordre).
Ajoutez ceci avant la demande de modification :
J'ai eu exactement le même problème que vous et ça l'a réglé pour moi.
Bonjour, j'ai ajouté ces 2 lignes dans le code mais l'erreur 4756 est toujours présente (Trade request sending fail).
Pouvez-vous préciser où je dois ajouter ces 2 lignes ? Celle concernant mrequest est déjà présente. L'ajout des deux lignes ne change rien pour moi. Merci pour l'aide que vous m'apporterez.
J'utilise rel.5 build 842.
ZeroMemory(mrequest); ZeroMemory(mresult);
Bonjour, J'ai ajouté ces 2 lignes dans le code mais l'erreur 4756 est toujours présente (Trade request sending fail).
Pouvez-vous préciser où je dois ajouter ces 2 lignes ? Celle concernant mrequest est déjà présente. L'ajout des deux lignes ne change rien pour moi. Merci pour l'aide que vous m'apporterez.
J'utilise rel.5 build 842.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
-----------------------------------------------------------------------------------
if (condition1)
{
sell.action = TRADE_ACTION_DEAL ;
sell.type = ORDER_TYPE_SELL ;
sell.symbol = _Symbol ;
sell.deviation = 0 ;
sell.price = NormalizeDouble(mtick.bid,_Digits) ;
sell.volume = 0.1 ;
sell.tp = NormalizeDouble(sell.price - mtp*_Point,_Digits) ;
sell.sl = NormalizeDouble(sell.price + msl*_Point,_Digits) ;
sell.type_filling = ORDER_FILLING_AON;
si(OrderSend(sell,result_sell)==false)
{
Print("OrderSend a échoué avec l'erreur #",GetLastError()) ;
ResetLastError() ;
}
}