[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 163

 
MikeM:
C'è una funzione: TimeCurrent().
Quando aprite una posizione, ricordate il valore di questa funzione, e quando volete aprire una nuova posizione, controllate la differenza tra il valore attuale e il valore ricordato di questa funzione.
Sii più specifico. Forse volete aprire una nuova posizione dopo un certo tempo, per esempio 15 min / 4 ore / 10 ore, 17 minuti e 38 secondi?
 
Questo non è il mio desiderio. È una risposta alla sua domanda delle 12:08.
 
MikeM:
Questo non è il mio desiderio. È una risposta alla sua domanda delle 12:08.
Ok. sul post clicca su "rispondi" non avevo capito che era una risposta alla mia domanda. Ma un buon consiglio, farò come hai suggerito. Grazie.
 
paladin80:
Ok. Clicca su "rispondi" nel post, non avevo capito che era una risposta alla mia domanda. E il consiglio è buono, farò come avete suggerito. Grazie.

La mia comprensione è che se hai più di un EA e non c'è sovrapposizione nell'invio di ordini commerciali,

potete usare questo:

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

inserirlo prima di OrderSend();

 

Meglio ancora, ecco una funzione per aprire le posizioni.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
  }
}
 
Buon giorno! Domanda sul trawl: ho messo un trailing stop di 25 pip. La sera torno a casa dal lavoro, e l'affare non è stato chiuso, anche se il prezzo del giorno era a 70 pip.
 
demid61:
Buon giorno! Domanda sul trawl: ho messo un trailing stop di 25 pip. La sera torno a casa dal lavoro, ma l'affare non è stato chiuso, anche se il prezzo era a 70 pip nel pomeriggio.

Dov'è il codice? Senza il codice - qui.
 
demid61:

Ho impostato un trailing stop di 25 pips.

Probabilmente qui c'è un piccolo opus "e spengo il computer".

 
sergeev:

c'è probabilmente una piccola opera "e lo spegnimento del computer" in corso qui




:)) Ho pensato che avrebbe funzionato senza un computer
 
gawara:
Salve a tutti i signori... Ho cercato su Google per molto tempo ma non l'ho trovato... Ho una domanda, c'è una dichiarazione in html, ha bisogno di essere visualizzata su un grafico per chiarezza, mi sembra dal punto di vista della programmazione è possibile, chi ha incontrato qualcosa di simile si prega di consigliare ... Penso che ci deve essere una sorta di script che fa il lavoro ... grazie in anticipo...

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