[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 356
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
Une autre question : comment ajouter des indicateurs à MT4 ?
merci
La documentation et le manuel ne sont-ils pas utiles ?
Merci, je vais vérifier maintenant.
Pouvez-vous me dire pourquoi l'EA ne fonctionne pas ? Mettez-le en démo (sourires) - ça ne marche pas. Il semble avoir supprimé la fonction au début qui n'autorise les échanges que lors des tests.
extern double Lots=1.0 ;
extern int Begin=10 ;
extern inttern Length=4 ;
extern int EOD=24 ;
extern inttern Pips=5 ;
extern int StopLoss=50 ;
extern int BreakEven=30 ;
extern inttern TakeProfit=80 ;
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{
//----
int i,Ticket,LastOrderTime,StartTime,EODTime,Bought=0,Sold=0 ;
double EntryLong, EntryShort, SLLong, SLShort, TPLong, TPShort ;
//Paramètres
si (Symbol()=="EURUSD"){
Début=10 ;
Longueur = 4 ;
EOD=24 ;
Pips=5 ;
StopLoss=50 ;
BreakEven=30 ;
TakeProfit=80 ;
}
else if (Symbol()=="GBPUSD"){
Début=10 ;
Longueur = 4 ;
EOD=24 ;
Pips=5 ;
StopLoss=70 ;
Seuil de rentabilité = 40 ;
TakeProfit=120 ;
}
else {
Début=10 ;
Longueur = 4 ;
EOD=24 ;
Pips=5 ;
StopLoss=50 ;
BreakEven=30 ;
TakeProfit=80 ;
}
//Compter le temps
si(Hour()>=Begin-1)
{
StartTime= StrToTime(Begin+":00") ;
if(DayOfWeek()==5) EODTime = MathMin(StrToTime("22:55"),StrToTime(EOD+":00")) ;
sinon EODTime = StartTime+(EOD-Begin)*3600-60 ;
}
//Set orders
if(CurTime()>= StartTime && CurTime()<StartTime+300){
//Déterminer la gamme
EntryLong =High[Highest(NULL,0,MODE_HIGH,Length*60/Period(),0)]+(Pips+MarketInfo(Symbol(),MODE_SPREAD))*Point ;
EntryShort =Low [Lowest (NULL,0,MODE_LOW, Length*60/Period(),0)]-Pips*Point ;
SLLong =MathMax(EntryLong-StopLoss*Point,EntryShort) ;
SLShort =MathMin(EntryShort+StopLoss*Point,EntryLong) ;
TPLong =EntryLong+TakeProfit*Point ;
TPShort =EntryShort-TakeProfit*Point ;
//Check Orders
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUY)) Acheté++ ;
if(Bought>1){ /plus d'un ordre d'achat
si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red) ;
if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket() ;
}
if(OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELL))) Vendu++ ;
if(Sold>1){ /plus d'un ordre de vente
si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red) ;
if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()) ;
}
}
if(Bought==0){ //pas d'ordre d'achat
si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;
Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,EntryLong,3,SLLong,TPLong,NULL,0,0,Green) ;
si(Ticket<0 && GetLastError()==130)
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLLong,TPLong,NULL,0,0,Green) ;
GlobalVariableSet("LastOrderTime",OrderOpenTime())
}
if(Sold==0){ //pas d'ordre de vente
si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;
Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,EntryShort,3,SLShort,TPShort,NULL,0,0,Green) ;
si(Ticket<0 && GetLastError()==130)
Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLShort,TPShort,NULL,0,0,Green) ;
GlobalVariableSet("LastOrderTime",OrderOpenTime())
}
}
//Gestion des commandes ouvertes
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
si(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000) ;
//uzavšenín pozic na konci dne
si(CurTime()>=EODTime){
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red) ;
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red) ;
if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket()) ;
if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()) ;
GlobalVariableSet("LastOrderTime",CurTime()) ;
}
//déplacement à BE si profit>BE
else {
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){
si(High[0]-OrderOpenPrice()>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green) ;
GlobalVariableSet("LastOrderTime",CurTime()) ;
}
}
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){
si(OrderOpenPrice()-Low[0]>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green) ;
GlobalVariableSet("LastOrderTime",CurTime()) ;
}
}
}
}
//Réinitialiser les variables globales à la fin de la journée
si(CurTime()>=EODTime) GlobalVariablesDeleteAll() ;
retour(0) ;
}
//+------------------------------------------------------------------+
Bonjour à tous. J'ai installé MT4 FIFTY-ZNAK. L'indicateur iMA donne 4 signes, mais comment recevoir 5 signes ? Merci de m'aider à comprendre.
Il a une valeur à cinq chiffres. Pour voir sa valeur, utilisez
string DoubleToStr( double valeur, int chiffres)
Convertit une valeur numérique en une chaîne de texte contenant la représentation en caractères d'un nombre dans un format de précision spécifié.Paramètres :
value - Valeur à virgule flottante.
digits - Nombre de chiffres après le point décimal (0-8).
Roman... C'est bon de vous voir. J'ai essayé, ça ne marche pas, je ne comprends pas ce qui ne va pas, visuellement il y a un historique pour la période ci-dessus, mais quand on le teste il n'y en a pas ??? :/
Comment indiquer au programme que la barre a touché la moyenne mobile ? Vous n'avez pas besoin d'une valeur maximale ou minimale, vous devez indiquer un toucher.
Comment indiquer au programme que la barre a touché la moyenne mobile ? Vous n'avez pas besoin d'une valeur maximale ou minimale, vous devez indiquer un toucher.
Le maximum (actuel) High[0] est au-dessus de la MA, et par conséquent le minimum (actuel) Low[0] est en dessous de la MA (si je comprends bien, nous parlons de la barre 0).
Si seulement c'était aussi simple. Je veux qu'il s'agisse d'un toucher sans référence à un maximum ou un minimum, de sorte que le programme doit décider si un certain nombre de barres ont touché la moyenne mobile ou non, indépendamment de la direction. Pour être plus précis, le corps de la barre doit toucher l'EMA. Je ne sais pas comment faire. J'ai tout regardé.