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
Que fait cette fonction de manière claire pour tout le monde ?
int OpenSell(double volume,int slippage=10,string comment="Open Short EUR/USD (Sell)",int magic0=102406)
{
MqlTradeRequest my_trade ;
MqlTradeResult mon_trade_result ;
mon_trade.action=TRADE_ACTION_DEAL ;
mon_marché.symbole=Symbole() ;
my_trade.volume=NormalizeDouble(volume,1) ;
my_trade.price=NormalizeDouble(Bid,_Digits) ;
my_trade.sl=NormalizeDouble(Bid+StopLoss*_Point,_Digits) ;
my_trade.tp=NormalizeDouble(Bid-TakeProfit*_Point,_Digits) ;
mon_trade.deviation=slippage ;
mon_trade.type=ORDER_TYPE_SELL ;
mon_trade.type_filling=ORDER_FILLING_AON ;
mon_trade.comment=comment ;
mon_trade.magic=magique ;
ResetLastError() ;
if(OrderSend(my_trade,my_trade_result))
{
time_oc=TimeLocal() ;
md=0 ;
Print( " Code de résultat de l'opération - " ,my_trade_result.retcode) ;
}
sinon
{
Print("Code de résultat de l'opération - ",my_trade_result.retcode) ;
Print("Erreur d'ouverture de commande = ",GetLastError()) ;
}
retour(0) ;
}
Dans la procédure OnTick()
...
OpenSell(Lots,10, "EUR/USD (Sell)",102406) ;
...
Au tout début :
double StopLoss=250,
TakeProfit=1400 ;
extern double Lots = 0.1 ;
Pourquoi diable 220 $ figurent-ils dans les résultats des tests ?
<DATE> <BALANCE> <ÉQUITÉ> <NIVEAU DE MARGE
01,01,2010 0 :00:00 10000 10000 0
11,01,2010 2 :57:00 9779,29 9841,92 6827
15,01,2010 16:00:00 9829,8 9941,9 6857
22,01,2010 14:32:00 10124,1 10135,9 7167
26,01,2010 2 :14:00 10048,6 10048,6 0
26,01,2010 4 :06:00 10048,6 10038,4 7099
27,01,2010 21:12:00 10188,5 10188,5 0
29,01,2010 2 :16:00 10188,5 10308 7346
29,01,2010 7 :14:00 10188,5 10277,4 7324
04,02,2010 22:05:00 10418,63 10480,83 7592
Si j'ai tort, frappez-moi dans le nez.
Je ne vous laisserai pas voir l'ensemble de l'EA. La fonction sur Buy est similaire...
Je ferme la position avec l'ordre opposé.
Très bien. J'ai crié comme un fou. J'apprends juste la langue. Si j'ai offensé quelqu'un, je m'en excuse. Je vais travailler et chercher le problème. Je l'ai probablement fait moi-même, mais je veux vraiment apprendre comment faire de bons EAs en utilisant mql5. C'est un très bon système, mais . J'ai des problèmes avec elle jusqu'à présent.
Bien que j'aie 20 conseillers experts sur mql4 sans aucun problème.
...
J'ai commencé à étudier petit à petit la section "Opérations sur les fichiers". Savez-vous s'il existe des tutoriels sur la façon de travailler avec des fichiers dans MQL5 ?
Quelle est la bonne façon de supprimer toutes les commandes avec un certain mode ?
J'ai deux fonctions pour cela, check_orders vérifie les commandes avec un certain mode, et remove_sl les supprime :
Le problème est que ces lignes apparaissent dans le journal de l'EA :
2011.05.11 21:40:19 Trades '726238' : échec de l'annulation de l'ordre #4375237 buy 0.00 at 0.00000 [Requête invalide].
C'est-à-dire qu'il y a des demandes redondantes au serveur de négociation pour supprimer l'ordre ; la demande de suppression a déjà été envoyée.
Je pense que j'ai un problème avec les positions de fermeture et d'ouverture.
D'une manière ou d'une autre, au lieu d'avoir une position pour 0,1 lot, j'ai en fait plusieurs lots. Apparemment, les positions d'un symbole se chevauchent et le volume de la position augmente. C'est la seule façon d'expliquer les problèmes mentionnés ci-dessus avec les grandes valeurs d'arrêt et la grande différence lors des tests. Cela signifie que j'analyse mal la présence de transactions ouvertes ou que je ferme mal les pistes.
C'est la procédure que j'utilise pour déterminer s'il y a une position ouverte par un symbole :
int Total()
{
compte=0 ;
for (i=0 ; i<=PositionsTotal() ; i++)
{
si (PositionGetSymbol(i)==_Symbol) {count++;}
}
return(count) ;
}
Bien entendu, la fonction renvoie soit 0 soit 1.
J'utilise l'entrée suivante pour ouvrir des ordres
si (Total()<1)
{
if (# some check on indicators#) OpenBuy(Lots,10, "EUR/USD (Buy)",102406) ;
if (#some check on indicators#) OpenSell(Lots,10, "EUR/USD (Sell)",102406) ;
}
J'ai ouvert l'achat et la vente, on dirait :
int OpenSell(double volume,int slippage=10,string comment="Open Short EUR/USD (Sell)",int magic0=102406)
{
MqlTradeRequest my_trade ;
MqlTradeResult mon_trade_result ;
mon_trade.action=TRADE_ACTION_DEAL ;
mon_marché.symbole=Symbole() ;
my_trade.volume=NormalizeDouble(volume,1) ;
my_trade.price=NormalizeDouble(Bid,_Digits) ;
my_trade.sl=NormalizeDouble(Bid+StopLoss*_Point,_Digits) ;
my_trade.tp=NormalizeDouble(Bid-TakeProfit*_Point,_Digits) ;
mon_trade.deviation=slippage ;
mon_trade.type=ORDER_TYPE_SELL ;
mon_trade.type_filling=ORDER_FILLING_AON ;
mon_trade.comment=comment ;
mon_trade.magic=magique ;
ResetLastError() ;
if(OrderSend(my_trade,my_trade_result))
{
time_oc=TimeLocal() ;
md=0 ;
Print( " Code de résultat de l'opération - " ,my_trade_result.retcode) ;
}
sinon
{
Print("Code de résultat de l'opération - ",my_trade_result.retcode) ;
Print("Erreur d'ouverture de commande = ",GetLastError()) ;
}
retour(0) ;
}
Je ferme les transactions dans la procédure principale de la même manière :
si (Total()>0) TryToClose() ;
TryToClose est comme ça :
}
L'indicateur vérifie que s'il doit y avoir une position d'achat et qu'il y a une position de vente, alors nous faisons un achat.
Où j'ai fait une erreur. Pourquoi est-ce que j'ai des positions élargies.
Insérez le code via le bouton SRC
Connaissez-vous la différence entre un ordre MT4 et un ordre MT5 ?Dans mql4, les ordres sont soit négociés, soit en attente.
En mql5, un ordre est une transaction en attente. L'entrée sur le marché est l'ouverture d'une position. Lorsque l'ordre est déclenché, une position est ouverte. Il ne peut y avoir qu'une seule position pour un symbole, et il peut y avoir autant de commandes que l'on veut.
Tout le monde n'arrête pas de faire allusion au fait que je suis stupide. Je suis peut-être stupide. Eh bien, trouvez mes erreurs pour que je puisse les corriger.
Je sens comme un soupçon de stupidité. Je suis peut-être stupide. Eh bien, trouvez mes erreurs pour que je puisse les corriger.
Je ne fais aucune allusion, je suis juste passé par là et j'ai demandé quelle était la raison la plus fréquente, je ne connais pas votre niveau d'entraînement.
Je suis ici depuis longtemps, je me suis déjà fait une opinion sur beaucoup de gens (chacun est fort à sa manière), je ne vous connais pas encore, alors je ne vais pas faire d'allusion.
Je ne vois pas la stratégie dans son ensemble. A en juger par la façon dont vous passez les positions, la stratégie est multi-devises.
Mais vous n'avez prescrit qu'un seul outil, si l'outil est unique, pourquoi passer par toutes les positions ?
Si vous connaissez l'instrument, vous n'avez pas besoin de parcourir toutes les positions pour les trouver, il vous suffit d'utiliser cette fonction :