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

 
MikeM:
Il existe une fonction : TimeCurrent().
Lorsque vous ouvrez une position, mémorisez la valeur de cette fonction, et lorsque vous voulez ouvrir une nouvelle position, vérifiez la différence entre la valeur actuelle et la valeur mémorisée de cette fonction.
Soyez plus précis. Vous voulez peut-être ouvrir un nouveau poste après un certain temps, par exemple : 15 min / 4 heures / 10 heures, 17 minutes et 38 secondes ?
 
Ce n'est pas mon souhait. C'est une réponse à votre question de 12:08.
 
MikeM:
Ce n'est pas mon souhait. C'est une réponse à votre question de 12:08.
Ok. sur le post cliquer sur "répondre" je n'avais pas réalisé que c'était une réponse à ma question. Mais bon conseil, je vais faire comme vous l'avez suggéré. Merci.
 
paladin80:
Ok. Cliquez sur "répondre" dans le message, je n'avais pas réalisé que c'était une réponse à ma question. Et les conseils sont bons, je vais faire comme vous l'avez suggéré. Merci.

Si je comprends bien, si vous avez plus d'un EA et qu'il n'y a pas de chevauchement dans l'envoi des ordres de transaction,

vous pouvez utiliser ceci :

if(IsTradeContextBusy())Sleep(5000);//Торговый поток занят. Подождите 5 ceкунд

l'insérer avant OrderSend() ;

 

Mieux encore, voici une fonction pour ouvrir des positions.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.04.2008                                                     |
//|  Описание : Открывает позицию по рыночной цене.                            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//|    co - комментарий                                                        |
//+----------------------------------------------------------------------------+
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0, string co="") {
  color    clOpen;
  datetime ot;
  double   pp, pa, pb;
  int      dg, err, it, ticket=0;

  if (sy=="" || sy=="0") sy=Symbol();
  if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
  if (co=="") co=WindowExpertName()+" "+GetNameTF(Period());
  for (it=1; it<=NumberOfTry; it++) {
    if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
      Print("OpenPosition(): Остановка работы функции");
      break;
    }
    while (!IsTradeAllowed()) Sleep(5000);
    RefreshRates();
    dg=MarketInfo(sy, MODE_DIGITS);
    pa=MarketInfo(sy, MODE_ASK);
    pb=MarketInfo(sy, MODE_BID);
    if (op==OP_BUY) pp=pa; else pp=pb;
    pp=NormalizeDouble(pp, dg);
    ot=TimeCurrent();
    if (MarketWatch)
      ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, co, mn, 0, clOpen);
    else
      ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, co, mn, 0, clOpen);
    if (ticket>0) {
      if (UseSound) PlaySound(SoundSuccess); break;
    } else {
      err=GetLastError();
      if (UseSound) PlaySound(SoundError);
      if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy);
      // Вывод сообщения об ошибке
      Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
      Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
            " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
      // Блокировка работы советника
      if (err==2 || err==64 || err==65 || err==133) {
        gbDisabled=True; break;
      }
      // Длительная пауза
      if (err==4 || err==131 || err==132) {
        Sleep(1000*300); break;
      }
      if (err==128 || err==142 || err==143) {
        Sleep(1000*66.666);
        if (ExistPositions(sy, op, mn, ot)) {
          if (UseSound) PlaySound(SoundSuccess); break;
        }
      }
      if (err==140 || err==148 || err==4110 || err==4111) break;
      if (err==141) Sleep(1000*100);
      if (err==145) Sleep(1000*17);
      if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
      if (err!=135) Sleep(1000*7.7);
    }
  }
  if (MarketWatch && ticket>0 && (sl>0 || tp>0)) {
    if (OrderSelect(ticket, SELECT_BY_TICKET)) ModifyOrder(-1, sl, tp);
  }
}
 
Bonjour ! Question sur le chalut : J'ai mis un stop suiveur de 25 pips. Le soir, je rentre du travail, et la transaction n'a pas été conclue, bien que le prix du jour soit à 70 pips.
 
demid61:
Bonjour ! Question sur le chalut : J'ai mis un stop suiveur de 25 pips. Le soir, je rentre du travail, et la transaction n'a pas été conclue, bien que le prix du jour soit à 70 pips.

Où est le code ? Sans le code - ici.
 
demid61:

Bonjour ! Question sur le trawl. J'ai mis un trailing stop de 25 pips.

Il y a probablement un petit opus "et j'éteins l'ordinateur" qui se passe ici.

 
sergeev:

il y a probablement un petit opus de "et d'éteindre l'ordinateur" ici




:)) Je pensais que ça marcherait sans ordinateur
 
gawara:
Bonjour à tous, messieurs... J'ai cherché sur Google pendant longtemps mais je n'ai pas trouvé... J'ai une question, il y a une déclaration en html, elle doit être visualisée sur un graphique pour plus de clarté, il me semble que du point de vue de la programmation c'est possible, qui a rencontré quelque chose comme ça s'il vous plaît conseillez ... Je pense qu'il doit y avoir une sorte de script qui fait le travail... Merci d'avance...

https://www.mql5.com/ru/code/10425