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).
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.
typedefvoid (*fn)(); class A { public: fn a; }; class B : public A { public: void a() { Print( __FUNCSIG__ ); } }; voidOnStart() { 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
typedefvoid (*fn)( int ); class A { public: fn a; }; class B : public A { public: void a() { Print( __FUNCSIG__ ); } }; voidOnStart() { B b; b.a(); //Error: 'a' - wrong parameters count }
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
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
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.
Errore durante l'esecuzione come risultato della compilazione
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
{
Print( MACRO( 1\0 )); //Error: '\' - illegal escape sequence
}
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 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))
Aiuta a ripartire con un leggero ritardo, per così dire:
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))
Errore di esecuzione
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
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 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
Ho appena controllato sul cruscotto - tutto è OK, tutti gli eventi funzionano normalmente
Non c'è niente di pesante, un grafico è aperto.
Cosa sta succedendo con MT4? Win 10 64, MT4 build 1031
farlo:
{
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));
}
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
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:
{
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));
}
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
prova
AccountFreeMarginCheck