Errori, bug, domande - pagina 2066

 
fxsaber:

Questo sembra essere il comportamento sbagliato per la lingua, poiché limita le possibilità.

Ho bisogno di definire un campo const come struttura. Pensavo che l'operatore di copia avrebbe funzionato, ma il compilatore vuole invece un costruttore, perché la sintassi è simile. Ma è sbagliato.

È corretto perché non è ambiguo (è sempre un costruttore nella lista di inizializzazione, non un operatore), è sbagliato in un altro modo:

struct S {
        S()                        { Print( __FUNCSIG__ ); }
        void operator=( const S& ) { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        S s;
        S s1 = s;

}

Risultato:

void S::S() (1)
void S::S() (2)
void S::operator=(const S&) (3)

mentre il C++ non produce le righe (2) e (3), e quindi non sostituisce il costruttore di copia mancante con una simbiosi del costruttore predefinito e dell'operatore di assegnazione

 

Se un oggetto BMP ha avuto la sua risorsa cancellata e poi creata di nuovo, l'oggetto BMP non vede più la sua risorsa. Questo è un errore. Ora dovete cancellare l'oggetto e ricrearlo di nuovo.

 
fxsaber:

Se un oggetto BMP ha avuto la sua risorsa cancellata e poi creata di nuovo, l'oggetto BMP non vede più la sua risorsa. Questo è un errore. Ora devi cancellare l'oggetto e ricrearlo di nuovo.

Puoi mostrarci il codice? Perché avete bisogno di cancellare una risorsa, potete sovrascriverla/modificarla senza cancellarla.
 

Situazione:

Una posizione di mercato di un Expert Advisor di terzi è stata selezionata con successo da OrderSelect(ticketNumber,SELECT_BY_TICKET) e viene fatto un tentativo nel ciclo per chiuderla (la selezione dell'ordine sul ticket è stata fatta prima del ciclo del tentativo di chiusura).


Ricevo un errore:

2017.11.10 06:00:33.806 ExpertName EURCAD,H1: unknown ticket 1846978258 for OrderClose function

Il biglietto è ok.


È naturale che il nostro EA possa chiudere quell'ordine in modo indipendente, quindi

ad ogni iterazione del ciclo, controlliamo

if(OrderCloseTime()!=0) break;


che non dà il risultato desiderato e il messaggio sul numero di biglietto sbagliato viene visualizzato tutte le 30 volte del ciclo.

Una brutta mano o è un bug con una perdita di un ordine selezionato?

Oppure il numero di errore potrebbe non riflettere esattamente la situazione/problema?


Aggiornamento:

Ho scoperto che la posizione non viene chiusa dall'EA nativo, ma da quello che chiudiamo noi.

Tuttavia, prima dell'errore ciclico 4108 otteniamo un errore una tantum 3 (anche se prima che l'errore 3 venga registrato l'ordine è stato chiuso).

 
Kirill Belousov:

Naturalmente, l'EA nativo potrebbe chiudere questo ordine in modo indipendente, quindi

Ad ogni iterazione del ciclo, il controllo viene fatto.

Dobbiamo fare anche OrderSelect.

 
Andrey Barinov:
Puoi mostrarmi il codice? Perché cancellare la risorsa, puoi riscaricarla/modificarla senza cancellarla.

Ricaricato senza cancellazione senza problemi, ovviamente. Dopo la cancellazione, problemi.

#define  WIDTH 100
#define  ARGB(a,r,g,b)  ((uchar(a)<<24)|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))

bool Set( const string Name, const uint &Data[], const uint Width )
{
  return(ResourceCreate(Name, Data, Width, (Width == 0) ? ArraySize(Data) : ArraySize(Data) / Width, 0, 0, Width, COLOR_FORMAT_ARGB_NORMALIZE));
}

void Test( const string Name )  
{
  static uint Data[WIDTH * WIDTH];
  
  for (uchar i = 0; i < 100; i++)
  {
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    
    Set(Name, Data, WIDTH);
    
    ChartRedraw();
    
    Sleep(50);
  }
  
  ResourceFree(Name);  
}

void OnStart()
{  
  const string ObjName = __FILE__;
  const string Name = "::" + ObjName;
  
  ObjectCreate(0, ObjName, OBJ_BITMAP_LABEL, 0, 0, 0);
  ObjectSetString(0, ObjName, OBJPROP_BMPFILE, Name);
  
  // Видна работа
  Test(Name);
  
  // Нет результата на экране
  Test(Name);
  
  ObjectDelete(0, ObjName);
}
 

Nessun messaggio da

Messaggi di sistema


Nessun messaggio, incluso il messaggio del prodotto, la vendita del prodotto, le osservazioni del moderatore, il messaggio di convalida del prodotto.

 
Vladislav Andruschenko:

Nessun messaggio da

Messaggi di sistema


Nessuno. compreso il messaggio del prodotto, la vendita del prodotto, le note del moderatore, il messaggio di convalida del prodotto.

Buon pomeriggio.

L'errore è stato risolto, dobbiamo aspettare l'aggiornamento del sito.

Ci scusiamo per l'inconveniente.

 
Julia Test:

Buon pomeriggio.

L'errore è stato corretto, dobbiamo aspettare che il sito venga aggiornato.

Ci scusiamo per l'inconveniente.


Grazie. già risposto alla SD. :-) in attesa...

P.S. Non è mai stato così tranquillo prima.... silenzio diretto .........

 
fxsaber:

Dovete fare anche OrderSelect.

Possiamo avere dettagli sul perché di questo?

Abbiamo selezionato con successo un ordine su un biglietto.

Abbiamo inviato un comando di chiusura nell'iterazione 1.

In questa iterazione #1, abbiamo ricevuto l'errore 3 (Parametri commerciali non validi). L'ordine è comunque chiuso. Come è stato chiuso?

Poi otteniamo l'errore 4108 all'iterazione 2. Non possiamo chiuderlo usando OrderCloseTime!=0.


In quale fase, secondo la documentazione, si perde la connessione con l'ordine selezionato dal biglietto?

Non è un caso in cui dopo aver inviato il comando di chiusura l'ordine avrebbe dovuto essere bloccato e si sarebbe dovuto generare l'errore 139 invece del 4108?