[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 595

 
Wanderer1000:
Installation de MetaTrader 4, ouverture d'un compte de démonstration. J'ai essayé d'ouvrir/fermer des ordres. Comment puis-je maintenant faire en sorte que le terminal lui-même déclenche un ordre de vente lorsque le prix monte et un ordre d'achat lorsqu'il descend, en utilisant des informations telles que "vous avez besoin d'une différence de 2 bougies pour fermer l'ancien ordre et en ouvrir un nouveau" ?
.
Rédiger une évaluation environnementale, peut-être)
 
nadya:

Bonsoir. Question : Lorsque je ferme une partie d'une transaction, l'EA ouvre en quelque sorte une nouvelle transaction avec un nouveau ticket. La magie du nouvel ordre reste-t-elle la même ?


Oui
 

QUELQU'UN PEUT-IL EXPLIQUER POURQUOI TOUTES LES TRANSACTIONS SONT UNIQUEMENT À L'ACHAT ? Je n'ai pas de transactions sur SELL, l'indicateur de drapeau avant if() sur SELL est toujours 1 pour une raison quelconque, WHY ???? est long&short dans les paramètres.

JE VEUX AUSSI DEMANDER POURQUOI JE LAISSE MON EA MANQUER CERTAINES POSITIONS QUE JE POURRAIS OUVRIR ? JE NE PEUX PAS ENTRER !

Voici le code(la déclaration des variables est tronquée) :
double upfr,dnfr=0.0;//niveaux des dernières fractales
int flag=0 ;

int start() //s'ouvre à la pause de la fractale et se ferme après s chandelles
{
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4) !=0)
{
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4) ;
}
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)==0)
{
upfr=0 ;
}
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)!=0)
{
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4) ;
}
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)==0)
{
dnfr=0 ;
}
//OUVRIR DES ORDRES PAR PROBIT
H=iHigh(Symbol(),PERIOD_H1,1) ;
L=iLow(Symbol(),PERIOD_H1,1) ;
tOpen=iTime(Symbol(),PERIOD_H1,1) ;
if(H>upfr && flag==0) //si la fractale est en hausse et que le niveau de fractale est dépassé
{
tClose=tOpen+s*stime*60 ;
OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,NULL,NULL) ;
flag=1 ;
}
if(L<dnfr)
Print(L," -L dnfr- ",dnfr," flag- ",flag) ;
if(L<dnfr && flag==0)//si la fractale est en baisse et que le niveau de la fractale est en baisse
{
tClose=tOpen+s*stime*60 ;
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,NULL,NULL) ;
flag=1 ;
}
// FERMER LES ORDRES PAR LA FIN DU TEMPS
if(Time[1]>=tClose && flag==1)// si le temps désigné est passé
{
Print("CLOSE FUNCTION") ;
OrClose() ;
flag=0 ;
upfr=0 ;
dnfr=0 ;
}
return(0) ;
}

Dossiers :
 

Je suis tombé sur ce...

Lors de la suppression d'un EA, il doit supprimer les ordres en cours.

Il existe deux variantes

1. Ça supprime tout...

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2. Sélectivement...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

Le problème, c'est que sur la démo, cela fonctionne bien dans les deux cas... Mais dans la vraie vie... un seul lot en attente est supprimé pour une raison quelconque... Question - qui sait pourquoi ?

 
DOCTORS:

Je suis tombé sur ce...

Lors de la suppression d'un EA, il doit supprimer les ordres en cours.

Il existe deux variantes

1. Ça supprime tout...

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2. Sélectivement...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

Maintenant, le problème est que dans la démo, cela fonctionne bien dans les deux cas... Mais dans la vraie vie... un seul lot en attente est supprimé pour une raison quelconque... La question - qui sait pourquoi ?

IMHO "n'a pas assez de temps" :

La durée d'exécution d'une fonction spéciale deinit() est limitée à 2,5 secondes. Si le code d'une fonction spéciale deinit() est exécuté pendant plus longtemps que le temps spécifié, le terminal client mettra fin de force à la fonction spéciale deinit() et au programme dans son ensemble.

 
ilunga:

A mon avis, "pas à temps" :

La fonction spéciale deinit() a un temps d'exécution de 2,5 secondes. Si le code de la fonction spéciale deinit() dépasse ce délai, le terminal client interrompt de force la fonction spéciale deinit() et le programme dans son ensemble.

:(

C'est-à-dire qu'il n'y a pas d'espoir ? En gros, nous commençons par utiliser le script pour fermer les ordres en attente... Et ensuite nous fermons la chouette... Joli auto-trading...

Une autre question - l'assistant a placé les pendentifs https://forum.mql4.com/ru/42300/page588.

Lorsque je change d'horizon temporel, les ordres sont supprimés pour une raison quelconque...

 
DOCTORS:

:(

Il n'y a donc aucun espoir ? Grosso modo, nous commençons par un script pour fermer les pendentifs... et ensuite nous fermons la chouette... Joli auto-trading...

Une autre question - l'assistant a placé les pendentifs https://forum.mql4.com/ru/42300/page588.

Lorsque vous changez d'horizon temporel, les ordres sont supprimés pour une raison quelconque...

Soit le script, soit un autre moyen d'ordonner à l'EA de mettre fin à son fonctionnement (par exemple, via une variable globale).

changement de cadre temporel = redémarrage du conseiller expert

 
ilunga:

soit un script, soit un autre moyen de commander à l'EA de se terminer (par exemple, via une variable globale)

changement de cadre temporel = redémarrage du conseiller expert

La variable fonctionne - merci beaucoup !
Hmm... pas de moyen de contourner le changement de calendrier ?
 
Membres du forum, aidez-nous à modifier les commandes
 
Question : dans le mode de test visuel, les lignes de l'indicateur sont dessinées seulement à la fin du test, est-ce le cas pour tout le monde ou est-ce que je fais quelque chose de mal ?
Raison: