Questions des débutants MQL4 MT4 MetaTrader 4 - page 255
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
Comment calculez-vous tp ?
Je spécifie dans la variable double tp=50 ;
Je spécifie dans la variable double tp=50 ;
écrit maintenant
2021.12.04 13:56:09.509 TestGenerator : erreur de données non concordantes (la valeur haute 1.13110 à 2021.12.03 23:45 n'est pas atteinte depuis la période la plus basse, le prix haut 1.13104 ne concorde pas)
mettez-le pendant une minute... ça marche...
mais le niveau d'arrêt est différent -
1 2021.09.16 05:59 vendre 1 0.01 1.18190 51.18192 1.18140 0.00 10000.00
écrit maintenant
2021.12.04 13:56:09.509 TestGenerator : erreur de données non concordantes (la valeur haute 1.13110 à 2021.12.03 23:45 n'est pas atteinte depuis la période la plus basse, le prix haut 1.13104 ne concorde pas)
Toutes les règles sont en ligne, alors vérifiez-les vous-même.
Les règles sont toutes en ligne, alors vérifiez par vous-même.
Merci !
Bonsoir messieurs, pourriez-vous nous dire pourquoi le conseiller donne une erreur lors de l'ouverture du deuxième ordre ?
Le texte du conseiller lui-même
//+----------------------Параметры-----------------------------------+
input int TakeProfit = 100 ; // Profit en pips
input int StopLoss = 50 ; // Perte en pips
input double Lot = 0.01 ; // Lot de départ
entrée double Multilot = 1.95 ; // multiplicateur pour le lot de départ
input int Slippage =30 ; // Slippage
input int MagicNumber = 333 ; // Numéro unique
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
double tp=0 ;
double sl=0 ;
int OnInit()
{
tp=NormalizeDouble(TakeProfit*Point(),Digits()) ;
sl=NormalizeDouble(StopLoss*Point(),Digits()) ;
return(INIT_SUCCEED) ;
}
//+------------------------------------------------------------------+
//| Fonction tick expert |
//+------------------------------------------------------------------+
void OnTick()
{
//- la boucle vérifie les ordres ouverts lorsque l'Expert Advisor est activé et les calcule.
int buy=0 ; //Nombre d'ordres BUY
int sell=0 ; //Nombre d'ordres de VENTE
for(int i = OrdersTotal()-1 ; i>=0 ; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
si(OrderSymbol()==Symbol())
si(OrderMagicNumber()== MagicNumber)
{
si(OrderType()==OP_BUY)
acheter++ ;
si(OrderType()==OP_SELL)
vendre++ ;
}
//- la boucle reçoit les données du dernier ordre fermé lorsque l'EA est activé.
int type=-1 ; //le type d'un ordre fermé
int history_close_orders=0 ; //nombre d'ordres fermés
double lot=0 ; //Lot du dernier ordre fermé
double profit=0 ; //Profit auquel le dernier ordre a été fermé
datetime time=0 ; //Heure de clôture de la dernière commande
for(int i = OrdersHistoryTotal()-1 ; i>=0 ; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY))
si(OrderSymbol()==Symbol())
si(OrderMagicNumber()== MagicNumber)
si(OrderCloseTime()>time)
{
historique_close_ordres++ ;
time = OrderCloseTime();//l'heure de clôture de la dernière commande
lot= OrderLots();//Lot du dernier ordre fermé
type=OrderType();// Type du dernier ordre clôturé
profit=OrderProfit()*OrderSwap()*OrderCommission();//Profit du dernier ordre clôturé
}
//calculer le lot avec lequel l'EA va fonctionner
double Lots_Work=0;// lot de travail
if(history_close_orders==0 || profit>0)// s'il n'y a pas d'ordres fermés ou si le dernier ordre a été fermé sur le profit.
Lots_Work=Lot;// le lot de travail est égal au lot initial
if(history_close_orders>0 && profit<0) // si le dernier ordre a clôturé dans le rouge
Lots_Work=1;// le lot de travail sera égal au lot de la dernière commande multiplié par le multiplicateur.
//ouvrir le premier ordre d'achat
si(buy==0 || profit>0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "Expert Advisor Test fair",MagicNumber,0,clrGreen) ;
si(ticket<0)
Print("OrderSend a échoué avec l'erreur #",GetLastError()) ;
sinon
Print("OrderSend completed successfully") ;
}
// Ouverture du deuxième ordre d'achat et des suivants
si(buy==0 && type==OP_BUY && profit<0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "EA Test fair",MagicNumber,0,clrGreen) ;
si(ticket<0)
Print("OrderSend a échoué avec l'erreur #",GetLastError()) ;
sinon
Print("OrderSend completed successfully") ;
}
// Ouverture du premier ordre de vente
si(vendre==0 || profit>0)
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "EA Test fair",MagicNumber,0,clrRed) ;
si(ticket<0)
Print("OrderSend a échoué avec l'erreur #",GetLastError()) ;
sinon
Print("OrderSend completed successfully") ;
}
// Ouverture du deuxième ordre d'achat et des suivants
if(sell==0 && (type==OP_SELL && profit<0))
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "Expert Advisor Test fair",MagicNumber,0,clrRed) ;
si(ticket<0)
Print("OrderSend a échoué avec l'erreur #",GetLastError()) ;
sinon
Print("OrderSend completed successfully") ;
}
//--Modifier l'ordre en ajoutant le Take Profit et le Stop Loss.
for(int i = OrdersTotal()-1 ; i>=0 ; i--)
if(OrderSelect(i, SELECT_BY_POS))
si(OrderSymbol()==Symbol())
si(OrderMagicNumber()== MagicNumber)
{
si(OrderType()==OP_BUY)
{
si(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits(),NormalizeDouble(OrderOpenPrice()+tp,Digits(),0,clrGreen))
Print("OrderModify OK !") ;
sinon
Print("OrderModify BUY failed #", GetLastError()) ;
}
si(OrderType()==OP_SELL)
{
si(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits(),NormalizeDouble(OrderOpenPrice()-tp,Digits(),0,clrRed))
Print("OrderModify OK !") ;
sinon
Print("OrderModify SELL failed #", GetLastError()) ;
}
}
}
//+------------------------------------------------------------------+
Mon ancien ordinateur portable avec processeur i3 avait encore WinXP 32 bits installé, MT5 non pris en charge. J'ai récemment augmenté ma mémoire à 6 Go et je souhaite installer un système d'exploitation 64 bits qui puisse faire fonctionner MT4 et MT5. Lequel est préférable - Win7 ou Win8.1 ?
10
10