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

 
tommy27:
Merci, je l'ai fait avec Close et comme vous l'avez conseillé :
mais le résultat n'est mis à jour que lorsqu'une nouvelle barre apparaît et je veux voir et enregistrer les changements à chaque tick.

Si l'EA n'est pas bouclé, le résultat changera à chaque tick.
 

Merci à tous, séparément tout fonctionne :

//+------------------------------------------------------------------+
//|                                                        Delta.mq4 |
//|                                                          tommy27 |
//|                                                  tommy27@mail.ru |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27@mail.ru"

double 
       StartPrice1,
       Delta1,
       Price00;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   Price00 = 5000;
StartPrice1 =  iClose(0,0,0);
//StartPrice1 = Close[0];
Delta1 = MathAbs (Price00 - StartPrice1);
//if (Delta1>1000) Delta1=0;
Comment (Delta1);
Print ("Raznica= ",Delta1);
//----
   return(0);
  }
//+------------------------------------------------------------------+

Mais le code principal ne compte que sur la fermeture des barres, je vais y réfléchir.

 
PapaYozh:

Si l'EA n'est pas bouclé, le résultat changera à chaque tick.
Merci.
 
Il existe deux options dans OrderSelect() :
MODE_TRADES - l'ordre est sélectionné parmi les ordres ouverts et en attente,
MODE_HISTORY - l'ordre est sélectionné parmi les ordres fermés et supprimés.

- Ai-je raison de comprendre que MODE_TRADES est utilisé uniquement avec OrdersTotal(), et MODE_HISTORY - uniquement avec OrdersHistoryTotal() ?
- Si oui, pourquoi sont-ils nécessaires ?
Merci !
 
chief2000:
Il existe deux options dans OrderSelect() :
MODE_TRADES - l'ordre est sélectionné parmi les ordres ouverts et en attente,
MODE_HISTORY - l'ordre est sélectionné parmi les ordres fermés et supprimés.

- Ai-je raison de comprendre que MODE_TRADES est utilisé uniquement avec OrdersTotal(), et MODE_HISTORY - uniquement avec OrdersHistoryTotal() ?
- Si oui, pourquoi sont-ils nécessaires ?
Merci !


Vous comprenez bien.

Votre deuxième question n'est pas claire. Si vous sélectionnez un ordre par sa position, vous devez connaître le nombre total d'ordres.

 
PapaYozh:


Vous comprenez bien.

Votre deuxième question n'est pas claire. Si vous sélectionnez un ordre par sa position, vous devez connaître le nombre total d'ordres.

Ces deux paramètres (MODE_TRADES et MODE_HISTORY) ne sont utilisés que dans le cas de SELECT_BY_PO, mais vous pouvez les supprimer complètement (utilisez celui par défaut dans MT4 - pour OrdersTotal() et OrdersHistoryTotal() respectivement).
Ce n'est pas une question de principe, l'essentiel pour moi était la réponse à la première question.
Merci !
 

alsu, achat ouvert si le prix a augmenté de plus de 20 pips dans les 10 dernières minutes ; vente ouverte si le prix a baissé de plus de 20 pips dans les 10 dernières minutes.

Et si ce n'est pas un problème : ouvrez un achat si le prix actuel est supérieur au maximum de la barre précédente, ouvrez une vente si le prix actuel est inférieur au minimum de la barre précédente.

P.S. Le code pour ouvrir l'achat et la vente est déjà dans le tableau, donc je n'ai pas besoin de les décrire... Je suis plus intéressé par la façon d'écrire correctement les conditions d'ouverture décrites ci-dessus...

 
oDin48:

alsu, achat ouvert si le prix a augmenté de plus de 20 pips dans les 10 dernières minutes ; vente ouverte si le prix a baissé de plus de 20 pips dans les 10 dernières minutes.

Est-ce que j'ouvre exactement au moment où le niveau est franchi ou après 10 minutes) ?


Et si cela ne pose pas trop de problèmes : ouvrir l'achat si le prix actuel est un peu plus élevé que le haut de la barre précédente, ouvrir la vente si le prix actuel est un peu plus bas que le bas de la barre précédente.

extern int level = 10; //в пунктах

....
int start()
{
...

   RefreshRates();

   if(Bid>High[1]+level*Point)
   {
      //BUY
   }

   if(Bid<Low[1]-level*Point)
   {
      //SELL
   }
...
}
 

alsu, au moment exact du croisement, vérifiez le temps et si cela tombe dans la fourchette de temps, faites un trade.

Merci. Je vais l'essayer maintenant.

 
oDin48:

alsu, au moment exact où vous croisez, vérifiez l'heure et si elle tombe dans la fourchette de temps, faites un trade.

Dans une telle variante, il faut se souvenir de l'historique des tics pour les 10 dernières minutes... le code n'est pas trivial