![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Il a toujours été difficile de gérer les ordres en attente. sur mt4 aussi. essayez peut-être de vous éloigner de cela ? par exemple, faites des ordres en attente virtuels (il suffit de les stocker dans des variables et de les ouvrir sur le marché lorsque le prix a traversé). Le temps est important maintenant...
Je n'ai pas le temps... Je viens de déboguer le code.
au moins avoir le temps de faire des tests et des ajustements.
De telles erreurs isolées n'affecteront pas le sort de votre EA dans le championnat. Mais si, faute d'argent, il tente à plusieurs reprises d'ouvrir une position générant des gigaoctets dans son journal, comme cela s'est produit lors des précédents championnats, il sera disqualifié.
Je ne voudrais pas que mon EA soit exclu de la compétition à cause de ce genre de dépendance à l'égard des fonctions recommandées. Mais alors, comment puis-je connaître le niveau de stop autorisé correct pour un symbole donné en ce moment ?
P.S. Je détesterais utiliser la sélection avec augmentation incrémentale en cas d'erreur, et le nombre d'erreurs dans ce cas va augmenter.J'ai un problème pour déterminer les niveaux d'arrêt pour les ordres en attente. Lorsque le marché est calme et que nous voulons placer un ordre stop à un niveau autorisé, la fonction SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL) fonctionne parfaitementet les ordres sont placés et tout le monde est content, y compris moi. Cependant, si le marché commence à vibrer fortement au début d'une session de trading, cette fonction cesse de fonctionner, les ordres ne sont pas placés et le terminal commence à générer des erreurs concernant des stops invalides.
Je ne voudrais pas que mon EA soit exclu de la compétition à cause de ce genre de dépendance à l'égard des fonctions recommandées. Mais alors, comment puis-je connaître le niveau de stop autorisé correct pour un symbole donné en ce moment ?
P.S. Je détesterais beaucoup utiliser une sélection avec augmentation incrémentale en cas d'erreur, et le nombre d'erreurs dans ce cas augmenterait.Pour les ordres en attente, l'erreur des stops invalides se produit également lorsque le prix ouvert est plus proche du prix actuel.
C'est-à-dire que vous devez vérifier non seulement les stops, mais aussi le prix d'ouverture.
Je pense qu'il y a une erreur dans la fonction HistoryDealsTotal(), si elle est lancée après HistorySelectByPosition() .
Il affiche de manière répétée le nombre de transactions égal à 0, et ce malgré une position ouverte (variante multidevises).
Voici le code :
void GetDealQuantity(string smbl)
{
long pos_id ;
int total, quantité=0 ;
ulong ticket=0 ; newticket ;
PositionSelect(smbl) ;
pos_id=PositionGetInteger(POSITION_IDENTIFIER) ;
bool select=HistorySelectByPosition(pos_id) ;
total=HistoryDealsTotal() ;
Print(__FUNCTION__," select=",select," total=",total) ;
for(int i=HistoryDealsTotal()-1;i>=0;i--)
{
newticket=HistoryOrderGetTicket(i) ;
if(ticket!=newticket) { quantity++ ; ticket=newticket ; }
}
if(smbl==symbol1) quantity1=quantity ;
if(smbl==symbol2) quantity2=quantity ;
Print(__FUNCTION__," quantity=",quantity) ;
}
Imprimez-le dans le journal :
2010.01.04 00:20:05 GetDealQuantity select=true total=0
2010.01.04 00:20:05 GetDealQuantity quantité=0
2010.01.04 00:20:05 EURJPY volume=0.1 quantité=0
2010.01.04 00:20:05 GetDealQuantity select=true total=1
2010.01.04 00:20:05 GetDealQuantity quantity=1
2010.01.04 00:20:05 AUDUSD volume=0.1 quantity=1
Essayez d'insérer le code correctement dans vos messages. Essayez de refaire votre exemple comme ceci :
Existe-t-il un script d'exemple quelque part pour écrire la dernière citation dans le presse-papiers ou quelque chose de similaire ?
Le presse-papiers de Windows ?
Je dois regarder dans msdn pour voir dans quelle dll se trouvent les fonctions requises...