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

 
Bicus:

Qu'est-ce que c'est ? Il passe par tous les ordres de l'histoire, n'est-ce pas ? Il est clair que le corps de la boucle peut en quelque sorte être limité par des dates, etc.

Ce que je voulais dire dans ma question, c'est qu'il existe une astuce pour stocker uniquement les derniers ordres fermés dans l'historique du testeur, c'est-à-dire de la même manière que dans l'historique réel.

Dans l'histoire réelle, cela fonctionne de la même manière. Toutes les commandes de l'historique du compte sont recherchées.

L'histoire n'est pas corrigée. Il est le même pour ce compte et ne peut être mis à jour qu'avec de nouveaux événements.

 
artmedia70:

On dirait que c'est déjà ennuyeux... C'est élémentaire, Watson :

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine")<0) ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+
Merci pour cette réponse tant attendue ! Je n'arrive pas à comprendre comment cela va m'aider à résoudre mon problème ? Comment faire pour que les lignes se dessinent au-dessus et au-dessous de Ask et à partir de la même EA en même temps ?
 
globad:
Merci pour cette réponse tant attendue ! Je ne vois pas comment cela va m'aider à résoudre mon problème ? Comment faire pour que les lignes se dessinent au-dessus et au-dessous de Ask et à partir de la même EA en même temps ?
Donnez des noms différents aux lignes.
 
Vovo4ka:

Les gars aidez, la condition est la suivante : trois bougies haussières, puis il y a un "takeover" .... J'ai ouvert une position pour vendre de même pour acheter...voici le code où se trouve l'erreur ?

Où est l'erreur ?
 
sergeev:
Quel est le problème ?

cela ne fonctionne pas de cette façon....... n'ouvre pas les positions.... bien que je vois dans l'historique qu'il devrait s'ouvrir, mais il n'ouvre pas les positions... il reste juste silencieux et aucune erreur.
 
Comment faire pour qu'une transaction ne s'ouvre pas plus que, disons, une par heure ?
 
artmedia70:
Donnez des noms différents aux lignes.

En quelque sorte... ?

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}
//+------------------------------------------------------------------+
 
Vovo4ka:
Les gars, comment faire pour qu'un échange ne s'ouvre pas plus que, disons, une fois par heure ?

Par exemple, comme ceci :

//+----------------------------------------------------------------------------+
datetime SecondsAfterOpenLastPos(string sy, int op, int mn) 
{
   datetime t;
   int      i, k=OrdersTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue; 
         if (OrderMagicNumber()!=mn)   continue; 
         if (t<OrderOpenTime()) t=OrderOpenTime();
         }
      }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+

Appelez comme ça :

if (SecondsAfterOpenLastPos(NULL, OP_SELL, Magic)>=(Period()*3)*60) {
   // --- код, если прошло три минуты и более с момента открытия ... 
   // ... последней позиции Sell  с магиком Magic  на текущем символе ---
   }
J'espère que vous pourrez transformer les minutes en heures... :)
 
globad:

En quelque sorte... ?

Ne demandez pas, vérifiez avec un testeur... :)
 
globad:

En quelque sorte... ?

if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0,0, Ask+20*Point);
                                     ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0,0, Ask-20*Point);
                                     ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point); 
ObjectFind renvoie -1 si la ligne n'a pas encore été créée, c'est-à-dire que vous devez également écrire ObjectFind("MyPriceLine2")<0 dans le second if.
Raison: