[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 - 2. - page 174

 

C'est la zone où l'ordre de marché est déclenché si la limite ne peut être fixée. C'est peut-être là que réside le problème ? Cela a fonctionné dans le testeur :(

ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,blue) ;
if(ticket<1){// traitement des erreurs
err=GetLastError() ;
if(err==147){// timeout
Err147=vrai ;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue) ;
if(ticket>0){
WriteOrder(ticket,timecl) ;
}sélection{
err=GetLastError() ;
si(err==130){
if(Set_order_from_market){
RefreshRates() ;
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue) ;
if(ticket<1){
err=GetLastError() ;
Print("Error setting order from market # ",err,
"Type de commande = BUY ",
"Prix ouvert =",Ask,
" Prix = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp) ;
}
}sélection{
}
}
}
}
si(err==130){
if(Set_order_from_the_market){
RefreshRates() ;
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue) ;
if(ticket<1){
err=GetLastError() ;
Print("Error setting order from market # ",err,
"Type de commande = BUY ",
"Prix ouvert =",Ask,
" Prix = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp) ;
}
}sélection{
}
}
Print("4 Order setting error # ",err) ;
}
}
}
}
 

mis au début de la fonction
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)) ; tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS))

 
alsu:

mettre
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)) ; tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS)) ;



Les stands comme ça. Malheureusement, je ne suis pas trop versé dans le code...

si(typ>0){
si(CountOpOrd(4,magic)<1){
si(buy!=0){
if(OpPrise(buy){RefreshRates() ;
if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(buy-((buy-sell)*(sl/(-100)))),Digits);}
if(sl>0){sll=NormalizeDouble(buy-sl*Point*mno,Digits);}
if(tp>){tpp=NormalizeDouble(buy+tp*Point*mno,Digits);}
if(tp<0){tpp=NormalizeDouble(buy+((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,Blue) ;
if(ticket<1){// traitement des erreurs
err=GetLastError() ;
if(err==147){// interdire le délai d'expiration
Err147=vrai ;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue) ;
if(ticket>0){
WriteOrder(ticket,timecl) ;
}sélection{
err=GetLastError() ;
si(err==130){
if(Set_order_from_market){
RefreshRates() ;
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue) ;
if(ticket<1){
err=GetLastError() ;
Print("Error setting order from market # ",err,
"Type de commande = BUY ",
"Prix ouvert =",Ask,
" Prix = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp) ;
}
}sélection{
}
}
}
}
si(err==130){
if(Set_order_from_the_market){
RefreshRates() ;
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue) ;
if(ticket<1){
err=GetLastError() ;
Print("Error setting order from market # ",err,
"Type de commande = BUY ",
"Prix ouvert =",Ask,
" Prix = ",Ask,
"Stop Loss = ",sll,
" TakeProfit = ",tpp) ;
}
}sélection{
}
}
Print("4 Erreur de paramétrage de la commande # ",err) ;
}
}
}
}
 

La logique est confuse, vous ne pouvez pas la comprendre.

Cette ligne ne fait rien du tout :

if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);

Ceux qui l'ont écrit doivent d'abord le comprendre :))

En général, mettez mes lignes juste avant d'ouvrir des ordres. Cela n'aggravera pas la situation de toute façon, mais si l'erreur persiste, il sera évident qu'elle a été causée par une violation du niveau d'arrêt, car 130 est la seule façon de faire une erreur.

 
alsu:

La logique est confuse, vous ne pouvez pas la comprendre.

Cette ligne ne fait rien du tout :

Ceux qui l'ont écrit doivent d'abord le comprendre :))

En général, mettez mes lignes juste avant d'ouvrir des ordres. Cela n'aggravera pas la situation de toute façon, mais si l'erreur persiste, il sera évident qu'elle a été causée par une violation du niveau d'arrêt, car 130 est la seule façon de faire une erreur.

https://www.mql5.com/ru/code/10111 - ici. Il y a peut-être une réponse ici...
 

L'informateur est un peu tordu...

Vous feriez mieux de demander à l'auteur, montrez-moi ma ligne, qui ne fait rien. xrust est un homme d'expérience, il trouvera comment corriger cela.

 
alsu:

Un peu tordu EA...

Vous feriez mieux de demander à l'auteur, montrez-moi ma ligne, qui ne fait rien. xrust est un homme expérimenté, il trouvera comment le modifier.


Au moins, il le fait :)

Il y a des bugs, mais pas mortels...

xrust ne prend pas contact :(

J'attends moi-même une version sans bogues. Peut-être qu'il va le sortir...

 
comment s'appelle le signe ALERT ? parce qu'il y a des bips et des gargouillis quand le signal est donné et je ne le trouve pas ((...))
 
Rossi:
comment s'appelle la table ALERT ? parce qu'elle émet des bips et des gargouillis quand le signal est donné et je ne la trouve pas ((...
)
Alerte()
 
Pouvez-vous me dire comment sélectionner un ordre fermé ? Le fait est que je veux fermer une position(si je l'ai ouverte manuellement et que la position sera toujours de un - c'est le maximum), donc la musique jouera si l'ordre était dans le plus, puis l'autre s'il était dans le moins, puis la troisième s'il n'était rien. Vous pouvez entrer les conditions par le biais d'OrderProfit, mais je ne sais pas comment supprimer le dernier ordre clôturé de l'historique.
Raison: