Errori, bug, domande - pagina 1778

 
Evgeny Chernyshev:
Buon pomeriggio!

Questo è un comportamento standard. Il conto alla rovescia inizia dalla barra attuale che è in costruzione. Di conseguenza, all'apparire di una nuova barra, in assenza di scorrimento automatico, il suo numero viene incrementato di uno.
Ok, allora aggiungete da qualche parte nella documentazione che non è la "prima barra visibile", ma la prima barra a partire da quella attuale (non finita).
 

Errore durante l'esecuzione come risultato della compilazione

#define MACRO( x )      #x
void OnStart()
{
        Print( MACRO( "1\0" )); //равносильно Print( "\"1\\0\"" );
}

Risultato: 1

Atteso: "1\0".

2 errori: mancano le virgolette " e il carattere \ mal interpretato

e poi

void OnStart()
{
        Print( MACRO( 1\0 )); //Error: '\' - illegal escape sequence
}
errore di compilazione mentre il risultato atteso era "10".
 
Vladislav Andruschenko:

Sì, ma non puoi spiegarlo ai clienti, vero?

Immaginate che l'esperto stia lavorando, funziona, andate a dormire, andate a dormire, vi svegliate e l'esperto non funziona, perché?

Aiuta a ripartire con un breve ritardo, qualcosa del genere:

int err=-1;
      int count=5;
      {while((err!=0)&&(count>0))
      {
         ResetLastError();
         EventSetMillisecondTimer(MSTimerSet);                    //Установка таймера XXX миллисекунд
         err=GetLastError();
         Print("EventSetMillisecondTimer n=",count," err >>",err);
         {if(err!=0){Sleep(50);}}
      }}//while((err!=0)&&(count>0))
 
Yury Kirillov:

Aiuta a ripartire con un leggero ritardo, per così dire:

int err=-1;
      int count=5;
      {while((err!=0)&&(count>0))
      {
         ResetLastError();
         EventSetMillisecondTimer(MSTimerSet);                    //Установка таймера XXX миллисекунд
         err=GetLastError();
         Print("EventSetMillisecondTimer n=",count," err >>",err);
         {if(err!=0){Sleep(50);}}
      }}//while((err!=0)&&(count>0))
Ho scoperto per esperienza che il timer si blocca quando internet si blocca. Il terminale si blocca e il timer si blocca. Cioè può riagganciare senza motivo. Quando Internet è lento.

Quindi l'ho fatto in modo diverso, cioè. Eseguire il timer in un tick.
 

Errore di esecuzione

typedef void (*fn)();
class A { public:
        fn a;
};
class B : public A { public:
        void a() { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        B b;
        b.a();
}

Risultato: chiamata di puntatore a funzione non valida; ci si aspettava l'esecuzione di B::a()

e qui -> errore di compilazione

typedef void (*fn)( int );
class A { public:
        fn a;
};
class B : public A { public:
        void a() { Print( __FUNCSIG__ );  }
};
void OnStart()
{
        B b;
        b.a(); //Error: 'a' - wrong parameters count
}
 
MT4 salta gli eventi utente nei pacchetti. È una caratteristica o un bug?
 
Andrey Dik:
MT4 sta saltando gli eventi utente nei pacchetti. Si tratta di un bug o di un'anomalia?


Ho appena controllato sul cruscotto - tutto è ok, tutti gli eventi funzionano bene

 
Vladislav Andruschenko:

Ho appena controllato sul cruscotto - tutto è OK, tutti gli eventi funzionano normalmente

Ho eseguito delle spie su alcuni simboli e l'EA riceve eventi da queste spie quando arrivano i tick. Su MT5 tutti gli eventi hanno il tempo di arrivare, ma su MT4 posso vedere blocchi a volte per un secondo o più.
Non c'è niente di pesante, un grafico è aperto.
 
Non riesco ad ottenere un valore adeguato del margine richiesto per aprire una posizione. Ottengo lo stesso valore per tutti i simboli, diversi broker hanno valori diversi, uno mostra 0,0 per tutti i simboli, un altro mostra 100000,0.

Cosa sta succedendo con MT4? Win 10 64, MT4 build 1031

farlo:

void OnStart()
{
  Print(MarketInfo (Symbol (), MODE_MARGININIT));
  Print(MarketInfo (Symbol (), MODE_MARGINMAINTENANCE));
  Print(MarketInfo (Symbol (), MODE_MARGINHEDGED));
  Print(MarketInfo (Symbol (), MODE_MARGINREQUIRED));
  Print(SymbolInfoDouble (Symbol (),SYMBOL_MARGIN_INITIAL));
}
O MT4 è totalmente incasinato, o io sono completamente disimparato e non capisco più MT4.

Ecco i valori ottenuti da 2 broker:


2017.01.31 22:15:59.312 Script MarginReq AUDCHF,M15: rimosso
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:15:59310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.309 MarginReq AUDCHF,M15: inizializzato
2017.01.31 22:15:59.300 MarginReq AUDCHF,M15 ingressi: Input1=0;
2017.01.31 22:15:57.899 Script MarginReq AUDCHF,M15: caricato con successo
2017.01.01.31 22:13:38.077 Script MarginReq AUDCHF,M15: rimosso
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: inizializzato
2017.01.01.31 22:13:38.066 MarginReq AUDCHF,M15 ingressi: Input1=0;
2017.01.31 22:13:36.806 Script MarginReq AUDCHF,M15: caricato con successo
Questa è una stronzata.
 
Andrey Dik:
Non riesco ad ottenere un valore adeguato di margine richiesto per aprire una posizione. Ottengo lo stesso valore per tutti i simboli, diversi broker hanno valori diversi, uno mostra 0,0 per tutti i simboli, un altro mostra 100000,0.

Cosa sta succedendo con MT4? Win 10 64, MT4 build 1031

farlo:

void OnStart()
{
  Print(MarketInfo (Symbol (), MODE_MARGININIT));
  Print(MarketInfo (Symbol (), MODE_MARGINMAINTENANCE));
  Print(MarketInfo (Symbol (), MODE_MARGINHEDGED));
  Print(MarketInfo (Symbol (), MODE_MARGINREQUIRED));
  Print(SymbolInfoDouble (Symbol (),SYMBOL_MARGIN_INITIAL));
}
O MT4 è totalmente incasinato, o io sono completamente disimparato e non capisco più MT4.

Ecco i valori ottenuti da 2 broker:


2017.01.31 22:15:59.312 Script MarginReq AUDCHF,M15: rimosso
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:15:59310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.309 MarginReq AUDCHF,M15: inizializzato
2017.01.31 22:15:59.300 MarginReq AUDCHF,M15 ingressi: Input1=0;
2017.01.31 22:15:57.899 Script MarginReq AUDCHF,M15: caricato con successo
2017.01.01.31 22:13:38.077 Script MarginReq AUDCHF,M15: rimosso
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: inizializzato
2017.01.01.31 22:13:38.066 MarginReq AUDCHF,M15 ingressi: Input1=0;
2017.01.31 22:13:36.806 Script MarginReq AUDCHF,M15: caricato con successo
Questa è una stronzata.

prova

AccountFreeMarginCheck