Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 503

 
Vitaly Muzichenko:

Funziona brillantemente!

Tra due posizioni ha scelto l'ultima, cioè l'undicesima barra, che potete vedere nello screenshot:


Codice di convalida

Ho deciso di cambiare la condizione per entrare nella posizione, basta impostare Limit a Low[2] ha funzionato, ma quando la condizione come nella mia prima chiamata oggi, non funziona, quindi è nella condizione stessa prima che la funzione viene chiamata

 
Вадим Мотеюнас:

Ho deciso di cambiare la condizione per entrare in una posizione, appena impostato il limite a Low[2] ha funzionato, ma quando la condizione come nella mia prima chiamata oggi, non funziona, quindi il problema è nella condizione stessa prima che la funzione venga chiamata

Sei tu che imposti un ordine e non un'entrata di posizione (Buy, Sell).

Ok, quindi è una buona cosa.

 
Vitaly Muzichenko:

Sei tu che hai impostato l'ordine, non l'entrata in posizione (Buy, Sell).

Ok, l'abbiamo capito - quindi va bene.

Volevo dire che prima c'era una condizione per entrarese(Open[2]>Close[2] && Open[1]>Close[1] && Close[1]<Low[2]

poi ho chiamato questa funzione per restituire l'indice della barra, ma ora l'ho appena rimossa e ho messo Low[2] in OrderSend e funziona

Dopo tutto, non ci ho perso un giorno, è un po' uno spostamento dal punto morto

 
Ho superato il problema, grazie a tutti per il vostro feedback
 
if(takelimit=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
      Print(takelimit,GetLastError());//здесь возвращает число 11, получается ошибка код 11, но не нашел расшифровку нигде?
      {if(iBarShift(Symbol(),0,OrderOpenTime())==1)
        
      deletelimit=OrderDelete(ticket);
      if(!deletelimit)
         Comment(GetLastError());
         }
 
Вадим Мотеюнас:

forse 1 e 1 ?/i.e. vero e codice di errore 1

ERR_NO_RESULT1Nessun errore, ma il risultato è sconosciuto
bool takelimit;

if(takelimit=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
      Print(string(takelimit)+"   :",GetLastError());//здесь возвращает число 11, получается ошибка код 11, но не нашел расшифровку нигде?
      {if(iBarShift(Symbol(),0,OrderOpenTime())==1)
        
      deletelimit=OrderDelete(ticket);
      if(!deletelimit)
         Comment(GetLastError());
         }
 
Вадим Мотеюнас:

Tutto il tuo codice è sbagliato.

bool takelimit;

if(takelimit?=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
      Print(string(takelimit)+"   :",GetLastError());//здесь возвращает число 11, получается ошибка код 11, но не нашел расшифровку нигде?
      {if(iBarShift(Symbol(),0,OrderOpenTime())==1) // <<< что это, почему сравнивать с единицей? OrderOpenTime() может вернуть "1"???
        
      deletelimit=OrderDelete(ticket);
      if(!deletelimit)
         Com
 
Vitaly Muzichenko:

Tutto il tuo codice è sbagliato.

controlla il numero della barra rispetto all'ora...

int ticket;

void Fn()
  {
   ResetLastError();
   if(!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){Print(GetLastError());}
   else
     {
      if(iBarShift(Symbol(),0,OrderOpenTime())==1 && !OrderDelete(ticket)){Comment(GetLastError());}
     }
  }
 
Nikolay Gaylis:

controlla il numero del bar rispetto all'ora...

Sì, non ho notato la staffa.

 
Nikolay Gaylis:

controlla il numero della barra in base al tempo...

Nikolay Gaylis:

forse 1 e 1 ?/i.e. vero e codice di errore 1

ERR_NO_RESULT1Non c'è nessun errore, ma il risultato è sconosciuto

Print(takelimit,GetLastError()) restituisce due valori perché la 1° variabile è di tipo bool e non ha bisogno di GetLastError, e perché ha una virgola, GetLastError restituisce l'ultimo errore nel codice al momento di chiamare GetLastError?