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

 
ALXIMIKS:

+ Ho letto da qualche parte che è utile controllare anche l'OrderClosetime dei biglietti aperti quando si seleziona (lo hanno = 0).
Questo è per la selezione per biglietto. Qui è la selezione per indice.
 

Ciao!

Come al solito ho bisogno di aiuto, non riesco a capire come selezionare correttamente gli ordini in sospeso per numero magico. Qualcuno può mandarmi il codice per vedere come farlo con un esempio. Grazie in anticipo).

 
zaqwsx123:

Ciao!

Come al solito ho bisogno di aiuto, non riesco a capire come selezionare correttamente gli ordini in sospeso per numero magico. Qualcuno può mandarmi il codice per vedere come farlo con un esempio. Grazie in anticipo).


ALXIMIKS 11.09.2013 21:36 #

void DeletePendingOrders()
{
    int NumberOfTry,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
         NumberOfTry=0;

         while (NumberOfTry < 5)
         {
            while (!IsTradeAllowed()) Sleep(5000);
      
            if (OrderDelete(ticket, Red))
                breake;
            else
                err = GetLastError();
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000);  NumberOfTry++;
            }
         }
      }
   }
}

qualcuno una volta ha chiesto aiuto con questo codice, è un esempio di come rimuovere tutti gli ordini in sospeso

Non posso essere sicuro che sarà sempre adeguato nel tester, non dirò nulla su quello reale

 
ALXIMIKS:

qualcuno una volta ha chiesto aiuto con questo codice, ecco un esempio di come cancellare tutti gli ordini in sospeso

Non so se il codice sarà sempre adeguato nel tester, figuriamoci nel mondo reale

Non capisco, se non siete sicuri del codice, perché lo mostrate ad un interrogante? La risposta dovrebbe essere sempre corretta, non "forse funzionerà - ho fatto qualche errore lì"...
 
zaqwsx123:

Ciao!

Come al solito ho bisogno di aiuto, non riesco a capire come selezionare correttamente gli ordini in sospeso per numero magico. Qualcuno può mandarmi il codice per vedere come farlo con un esempio. Grazie in anticipo)

Seleziona qualsiasi ordine aperto per ultimo e restituisce il suo biglietto. Se non c'è un tale ordine, restituisce -1 :

//-----------------------------------------------------------------------------+
int GetTicketLastOpenOrder(string sy, int op, int mn) {
   int   i, j=-1, t=0, k=OrdersTotal()-1;
   for (i=k; i>=0; i--) {                       // цикл от конца к началу
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()!=mn)   continue;// если магик не тот - переходим к следующему
         if (OrderSymbol()!=sy)        continue;// если символ не тот - переходим к следующему
         if (OrderType()!=op)          continue;// если тип не тот - переходим к следующему
         if (t<OrderOpenTime()) {   // выбран нужный, ...
            t=OrderOpenTime();      // ... ищем последний ...
            j=i;                    // ... открытый ордер
            }
         }
      else Print("FUNC GetTicketLastOpenOrder() ошибка выбора ордера "+GetLastError());
      }
   if (OrderSelect(j,SELECT_BY_POS)) return(OrderTicket()); // если найден ордер, вернём его тикет
   return(-1);                                              // иначе - возвращаем -1
}
//-----------------------------------------------------------------------------+
 
artmedia70:
Amico, non capisco, se non sei sicuro nel codice, perché lo mostri alla persona che fa la domanda? La risposta dovrebbe essere sempre corretta, non "forse funzionerà - ho fatto qualche errore lì"...

Beh, questo è il modo in cui l'uomo si afferma.

Qui ha già mostrato la sua arroganza.

 
PapaYozh:

Beh, questo è il modo in cui l'uomo si afferma.

Qui ha già mostrato la sua arroganza.

Beh... c'è chi picchia la moglie, chi chiacchiera sui forum, chi fa le rivoluzioni... Le persone sono diverse. A ciascuno il suo.
 
artmedia70:
Beh... qualcuno picchia la moglie, qualcuno blatera sui forum, qualcuno fa delle rivoluzioni .... Le persone sono diverse. A ciascuno il suo.

Se una persona fa una domanda di notte, la cui risposta non è così complicata, ma a causa della mia inesperienza, per puro principio, non posso garantire la correttezza al 100% del codice,

è meglio aspettare 8 ore per una risposta da un professionista?

O potrebbero dare un aiuto rapido per ottenere il mio codice giusto (se uno sviluppatore non è senza speranza...).

Ho scelto la seconda opzione, e penso che sia giustificata, pensa quello che vuoi e sii felice.

 
ALXIMIKS:
artmedia70:
Beh... c'è chi picchia la moglie, chi chiacchiera sui forum, chi fa le rivoluzioni... Le persone sono diverse. A ciascuno il suo.

Se una persona fa una domanda di notte, la cui risposta non è così complicata, ma a causa della mia inesperienza, per puro principio, non posso garantire la correttezza al 100% del codice,

è meglio aspettare otto ore per una risposta da un professionista?

Naturalmente un novizio farebbe meglio ad aspettare fino al mattino per cercare errori nel codice di qualcun altro piuttosto che farsi una bella dormita e ottenere una risposta competente.

Quello che voglio dire è che quando rispondete a un principiante, pensate al fatto che potrebbe non avere molta esperienza.

 

C'è una libreria hoz_LoggingToAnywhere@Library.mq4, che viene chiamata dal file header hoz_Base@Include.mqh

Quando compilo la libreria hoz_LoggingToAnywhere@Library.mq4 lo vedo nel log:

'StringConcatenate' - incompatible types        D:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\include\hoz_Base@Include.mqh (75, 12)

Ci vado... E lì vedo:

   //---- Контролируем возможные ошибки
   fPrint (StringConcatenate ("fInitBase() => ", fErrorToString (bi_Err)));

Chiamando questa funzione fPrint da altre librerie, niente viene incolpato da nessuna parte, ma dal file di intestazione... viene incolpato. Perché è così? È già copiato da personaggio a personaggio...