Questions des débutants MQL4 MT4 MetaTrader 4 - page 256
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
Sur mon vieil ordinateur portable avec processeur i3, j'ai encore WinXP 32 bits, non pris en charge par MT5. Récemment, j'ai augmenté la mémoire à 6 Go, je voudrais installer un système d'exploitation 64 bits pour MT4 et MT5. Quel est le meilleur choix - Win7 ou Win8.1 ?
Je préfère le 7. Le bureau a un 8, un 10 et un 7. Les terminaux sur 7 sont plus stables. Pour des raisons inconnues, les testeurs en 7 sont plus rapides sur les ordinateurs faibles. 8ka n'est pas du tout transitoire. Il consomme le plus de ressources. 10 exige plus de ressources pour lui-même.
Mon ancien ordinateur portable avec processeur i3 avait encore WinXP 32 bits installé, non pris en charge par MT5. Récemment, j'ai augmenté la mémoire à 6 Go, je voudrais installer un système d'exploitation 64 bits qui supporterait MT4 et MT5. Lequel est préférable - Win7 ou Win8.1 ?
Rendez-vous sur le site Web du fabricant de votre ordinateur portable et voyez pour quel système d'exploitation maximal les pilotes officiels sont destinés. Si les pilotes sont pour Win 8.1, vous pouvez essayer Win 10. Si les pilotes se retrouvent dans Win 7, il n'y a pas beaucoup de choix.
Bonjour, pouvez-vous m'aider ?
J'ai besoin d'ajouter un take profit à cet EA et d'afficher des paramètres à modifier lorsque l'EA fonctionne.
il y a deux avertissements la valeur de retour de 'OrderClose' devrait être vérifiée aussi s'il vous plaît corriger
extern double Lots = 0.1 ;
extern double MaximumRisk = 0.3 ;
extern double DecreaseFactor = 100 ;
double st1,st2 ;
//+------------------------------------------------------------------+
//| Calculer les positions ouvertes |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0 ;
//----
for(int i=0;i<OrdersTotal();i++)
{
si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
si(OrderSymbol()==Symbol())
{
si(OrderType()==OP_BUY) achète++ ;
si(OrderType()==OP_SELL) vend++ ;
}
}
//---- volume des commandes de retour
if(buys>0) return(buys) ;
sinon retour(-vendues) ;
}
//+------------------------------------------------------------------+
//| Calculer la taille optimale du lot |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots ;
int orders=HistoryTotal() ; // total des commandes historiques
int pertes=0 ; // nombre d'ordres de pertes sans pause
//---- sélectionner la taille du lot
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3) ;
//---- calcule le nombre d'ordres de pertes sans rupture.
si(Facteur de diminution>0)
{
for(int i=ordres-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Erreur dans l'historique !") ; break ; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continuer ;
//----
si(OrderProfit()>0) break ;
si(OrderProfit()<0) pertes++ ;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1) ;
}
//---- retourner la taille du lot
si(lot<0.1) lot=0.1 ;
retour(lot) ;
}
//+------------------------------------------------------------------+
//| Vérifier les conditions d'un ordre ouvert |
//+------------------------------------------------------------------+
void CheckForOpen()
{
int res ;
si(Volume[0]>1) retour ;
//---- acheter -----------------------
si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]<Open[1])&&(Close[0]<Close[1])
//
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0,",0,0,Blue) ;
retour ;
}
//---- vendre ------------------------
Si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if((Open[0]>Open[1])&&(Close[0]>Close[1]))
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,15,0,",0,0,Red) ;
retour ;
}
}
//------------Закрытие позиций----------------------------------------
void CheckForClose2()
{
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White) ;
Si(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue) ;
//CheckForOpen() ;
}
//
//+------------------------------------------------------------------+
//| Vérifier les conditions d'ordre de fermeture |
//+------------------------------------------------------------------+
void CheckForClose1()
{
si(Volume[0]>1) retour ;
//vérifier les pertes
si ((AccountProfit()<0)&&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk)))
{
CheckForClose2() ;
Print("perte", AccountProfit()) ;
}/**/
//---- type d'ordre de contrôle
si(OrderType()==OP_BUY)
{
Si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]>Open[1])&&(Close[0]>Close[1]))
CheckForClose2() ;
}
si(OrderType()==OP_SELL)
{
si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]<Open[1])&&(Close[0]<Close[1]))
CheckForClose2() ;
}
}
//+------------------------------------------------------------------+
//| Démarrer la fonction |
//+------------------------------------------------------------------+
void start()
{
//---- calculer les ordres ouverts par le symbole actuel
si(CalculateCurrentOrders(Symbol())==0) CheckForOpen() ;
sinon CheckForClose1() ;
//---
}
//+-----------------------------------------------+
Ajout des calculs SL et TP, mais il serait bien d'ajouter une vérification pour eux. Vous pouvez lire comment faire dans l'articlehttps://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position.
Votre avertissement n'est pas critique. Le résultat de OrderClose est simplement ignoré, d'où l'avertissement. Vous pouvez, par exemple, faire en sorte que la fonction CheckForClose2 renvoie le résultat de OrderClose. Ou vous pouvez le laisser tel quel.
J'ai également remarqué que les noms des fonctions CheckForClose2,CheckForOpen, etc. étaient étranges .Et vous les faites effectuer des opérations commerciales.
Bonjour à tous. Quelqu'un peut-il m'aider à modifier l'EA ? Je dois supprimer la fonction d'ouverture des ordres pour que l'EA n'ouvre pas les ordres par lui-même mais ne fonctionne qu'avec des ordres ouverts manuellement. Merci d'avance.
Supprimez la fonction d'ouverture des commandes et réglez magic sur 0. Le robot récupère les commandes ouvertes manuellement et les suit. Si nous voulons que le robot ne suive que des ordres individuels, et non pas tous les ordres d'un coup, il faut alors effectuer l'entrée dans Achat et Vente, par exemple, en appuyant sur le bouton approprié que le robot doit créer et traiter dans l'événement CHARTEVENT_OBJECT_CLICK du OnChartEvent de chacun d'eux. La magie dans ce cas doit être supérieure à 0 afin de ne travailler qu'avec ses propres ordres.
https://www.mql5.com/ru/forum/131859/page9#434297
isTradeTimeString()
isTradeTimeInt()
Bonjour.
Un tel pépin... Je suis en train d'en tester un ! Expert sur 3 ordinateurs. Deux d'entre eux fonctionnent correctement, tandis que l'un d'entre eux présente toujours une sorte de bogue dans les calculs - en général, il ne calcule pas correctement le stop loss ou le faux déclenchement.
Le matériel n'est pas nouveau, mais pas vieux non plus.
Quelqu'un a-t-il déjà rencontré un tel problème ?
Le matériel n'est pas nouveau, mais pas vieux non plus.
Quelqu'un a-t-il eu des problèmes avec cela ?
Les trois sont connectés au même serveur de courtage/dealer ? (Je veux dire, est-ce la même histoire ?) Si ce n'est pas le cas, c'est le premier endroit à regarder.