[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 226

 
doon:

Comment faire pour qu'un EA achète ou vende à un moment donné(sommeil à ne pas utiliser) ?

Les fonctions date-heure vous aideront : https://book.mql4.com/ru/functions/datetime
 
Fam:
Les fonctions date-heure vous aideront : https://book.mql4.com/ru/functions/datetime

Merci, mais tu devras quand même insérer un slip à cet endroit.

 
Les gens ! J'essaye de faire, qui échangerait beaucoup en fonction du risque.... ce qui ne marche pas.... écrit
 EURUSD,M15: OrderSend error 4051

dis-moi où se trouve l'erreur....

void OpenBuy() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossBuy(); 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenBuy); 
   if (UseSound) PlaySound(NameFileSound); 
} 
void OpenSell() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 

   ldLot = GetSizeLot(); 
   ldStop = GetStopLossSell(); 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenSell); 
   if (UseSound) PlaySound(NameFileSound); 
} 
string GetCommentForOrder() {   return(Name_Expert); } 
double GetSizeLot() { 
   double ldlot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
   ldlot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) ldlot=NormalizeDouble(ldlot-ldlot*losses/DecreaseFactor,1);
     }
   if(ldlot<0.1) ldlot=0.1;
                         } 
double GetStopLossBuy() {       return (Bid-sStopLoss*Point);} 
double GetStopLossSell() {      return(Ask+sStopLoss*Point); } 
double GetTakeProfitSell() {    return(Bid-sTakeProfit*Point); } 
double GetTakeProfitBuy() {     return(Bid+sTakeProfit*Point); } 

return(0);
 

Merci à tous, je vais l'essayer...
 
charter:

Je crains que cela ne soit vrai que pour les séries chronologiques.

Dans mon cas, il n'y a même pas d'endroit où le piquer.

Votre idée est correcte, c'est-à-dire que l'ordre doit être inversé d'une manière ou d'une autre, mais je ne sais pas encore comment faire.


Ne vous inquiétez pas, ça marche.
 
Vovo4ka:
Les gens ! J'essaye de faire, qui échangerait beaucoup en fonction du risque.... ce qui ne marche pas.... écrit

dis-moi où se trouve l'erreur....


a oublié de mettre une ligne dans le lot.
return (ldlot);
 
todem:

J'ai oublié de mettre une ligne dans le lot.

droite...... oublié.... merci beaucoup.... j'ai déjà vérifié 20 fois, je n'arrivais pas à comprendre ce qui se passait...)
 

Aide avec une question sur la requote+slippage.

La situation est la suivante : j'envoie une demande de transaction par Expert Advisor, Slippage=3 pt, l'erreur 138 Requote se produit. J'ai essayé de RefreshRates() et j'ai réessayé avec une nouvelle demande, mais le prix du serveur est meilleur que la demande que j'ai envoyée (deuxième fois après RefreshRates()), et logiquement je dois accepter, mais parce que l'écart du prix du serveur est plus grand que le glissement dans la demande - cette demande est rejetée. (((

Comment pouvez-vous contrôler cette situation ? Par exemple, si le prix du serveur est meilleur, il faut déplacer le slippage ou autre, pour que la demande soit acceptée par le serveur. Ou bien ce n'est pas possible ?

 
ZZZEROXXX:

Aide avec une question sur la requote+slippage.

La situation est la suivante : j'envoie une demande de transaction par Expert Advisor, Slippage=3 pt, l'erreur 138 Requote se produit. J'ai essayé de RefreshRates() et j'ai réessayé avec une nouvelle demande, mais le prix du serveur est meilleur que la demande que j'ai envoyée (deuxième fois après RefreshRates()), et logiquement je dois accepter, mais parce que l'écart du prix du serveur est plus grand que le glissement dans la demande - cette demande est rejetée. (((

Comment pouvez-vous contrôler cette situation ? Par exemple, si le prix du serveur est meilleur, il faut déplacer le slippage ou autre, pour que la demande soit acceptée par le serveur. Ou ce n'est pas possible ?


Augmentez le glissement. Les transactions doivent avoir été ouvertes sur un marché rapide. Il arrive parfois après des nouvelles importantes que l'Eurobucks soit si rapide en 1-2 ticks que c'est un cauchemar. Et pendant que le serveur traite l'ordre du conseiller, le prix change très fortement.
 
Zhunko:
MT4 dispose d'un convertisseur intégré. Service -> Archives de citations.

Merci ! Mais l'objectif est le suivant. Décalé de barres quotidiennes (chandeliers), mis à jour avec l'arrivée des cotations, le graphique se comporte comme un graphique normal : vous pouvez y accrocher d'autres indicateurs, des EA, construire des canaux, des niveaux, etc. Il devrait s'agir de quelque chose comme des délais non standard, mais non standard dans le décalage des barres (chandeliers) par rapport au temps terminal : H4 - à -3, -2, -1, 1, 2 ou 3 heures ; D1 - à -23, -22, ... 1, 2, ... ou 23 heures ; W1 - pour -6, -5, ... ou 6 jours et ainsi de suite. Le décalage doit être réglé dans les paramètres d'entrée de l'indicateur.

Est-ce que ça existe ?

Je vous remercie d'avance.

Raison: