Errori, bug, domande - pagina 2096

 
elibrarius:

Hmm. Beh lo trovi ))))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }

Allora chi vi ha detto che il campo dello spread della barra attuale è uguale allo spread attuale o, per esempio, al minimo?

UsaSymbolInfoTick, le barre sono un rudimento storico.

 
fxsaber:

Allora chi vi ha detto che il campo dello spread della barra attuale è uguale allo spread attuale o per esempio al minimo?

Usa SymbolInfoTick, le barre sono un rudimento storico.

CopySpread - ricorda il minimo - ha detto la pratica, che nella maggior parte dei casi risulta essere il criterio di verità. Da esso si stabilisce che la barra 2017.10.23 01:00 CopySprea=-3, in quanto non c'era meno quando si controllavano i tick.

Chiamerei le barre - uno strumento molto necessario per analizzare il passato.

SymbolInfoTick è corretto, ma è davvero il motivo per lasciare CopySpread sbagliato? Capisco che 1 pt. - è un'inezia, credo, e fissarlo elementare s=s-1. Questo è tutto )

 
elibrarius:

SymbolInfoTick - mostra correttamente, ma è davvero necessario lasciare CopySpread sbagliato a causa di questo? Capisco che 1 pt. - è un'inezia, penso, che è elementare correggerlo s=s-1. Questo è tutto )

Prima di eseguire il tester, guarda la storia della barra per vedere se ha uno spread negativo. È un campo storto su niente.

Se gli sviluppatori di oggi si inventassero MqlRates, ci sarebbero campi normali invece di questa merda. Ma non hanno tempo per riconsiderare questa struttura e ne hanno già fatto ogni sorta di assurdità. Quindi, abbiamo un rudimento di storia. E ora si tireranno dietro questo fardello per tutto il tempo.

 
elibrarius:

CopySpread - ricorda il minimo - ha detto la pratica, che nella maggior parte dei casi si dimostra essere il criterio di verità. Da esso si stabilisce che la barra 2017.10.23 01:00 CopySprea=-3, poiché non c'era meno quando si controlla per tick.

Chiamerei le barre - uno strumento molto necessario per analizzare il passato.

SymbolInfoTick è corretto, ma è davvero il motivo per lasciare CopySpread sbagliato? Capisco che 1 pt. - è un'inezia, credo, e fissarlo elementare s=s-1. Questo è tutto )

Se fai attenzione, puoi guardare i minuti e vedere che l'ultimo valore di spread viene ricordato quando appare una nuova barra.

 
Alexey Viktorov:

Se fai attenzione, puoi guardare i minuti per vedere che l'ultimo valore di spread viene ricordato quando appare una nuova barra.

Guardando più da vicino - sono d'accordo, ma in parte.

Codice dell'esperto:

void OnTick() { 
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  MqlTick last_tick;
  if(SymbolInfoTick(Symbol(),last_tick)) { Print(last_tick.time,": Bid = ",last_tick.bid, " Ask = ",last_tick.ask,"  SP = ",DoubleToString(last_tick.ask-last_tick.bid,5)); }
}

Ecco una stampa di un minuto - prima la diffusione da CopySpread. Poi calcolato da Ask-Bid

2018.01.01 11:55:00.478 2017.10.23 01:00:00 14
2018.01.01 11:55:00.478 2017.10.23 01:00:00 2017.10.23 01:00:00: Bid = 1.17715 Ask = 1.17729 SP = 0.00014
2018.01.01 11:55:00.494 2017.10.23 01:00:00 9
2018.01.01 11:55:00.494 2017.10.23 01:00:00 2017.10.23 01:00:00: Bid = 1.17715 Ask = 1.17724 SP = 0.00009
2018.01.01 11:55:00.510 2017.10.23 01:00:00 9
2018.01.01 11:55:00.510 2017.10.23 01:00:00 2017.10.23 01:00:00: Bid = 1.17716 Ask = 1.17726 SP = 0.00010
...........
2018.01.01 11:55:01.023 2017.10.23 01:00:30 1
2018.01.01 11:55:01.023 2017.10.23 01:00:30 2017.10.23 01:00:30: Bid = 1.17704 Ask = 1.17705 SP = 0.00001
2018.01.01 11:55:01.876 2017.10.23 01:00:30 -1
2018.01.01 11:55:01.876 2017.10.23 01:00:30 2017.10.23 01:00:30: Bid = 1.17707 Ask = 1.17705 SP = -0.00002
2018.01.01 11:55:01.893 2017.10.23 01:00:31 -3
2018.01.01 11:55:01.893 2017.10.23 01:00:31 2017.10.23 01:00:31: Bid = 1.17707 Ask = 1.17703 SP = -0.00004

2018.01.01 11:55:01.909 2017.10.23 01:00:31 -3
2018.01.01 11:55:01.909 2017.10.23 01:00:31 2017.10.23 01:00:31: Bid = 1.17707 Ask = 1.17704 SP = -0.00003
2018.01.01 11:55:01.925 2017.10.23 01:00:32 -3
...........
2018.01.01 11:55:02.293 2017.10.23 01:00:48 -3
2018.01.01 11:55:02.293 2017.10.23 01:00:48 2017.10.23 01:00:48: Bid = 1.17702 Ask = 1.17707 SP = 0.00005
2018.01.01 11:55:02.309 2017.10.23 01:00:48 -3
2018.01.01 11:55:02.309 2017.10.23 01:00:48 2017.10.23 01:00:48: Bid = 1.17703 Ask = 1.17707 SP = 0.00004
2018.01.01 11:55:02.325 2017.10.23 01:00:49 -3
2018.01.01 11:55:02.325 2017.10.23 01:00:49 2017.10.23 01:00:49: Bid = 1.17707 Ask = 1.17707 SP = 0.00000

Cioè il valore di CopySpread sulla barra corrente = minimo.

Ma nella storia del bar l'ultimo valore è davvero sparito.

<DATA> <ORA> <APERTURA> <ALTO> <BASSO><CHIUSURA> <TICKVOL> <VOL> <SPREAD>
2017.10.23 01:00:00 1.17715 1.17720 1.17693 1.17707 64 0 0

La maggior parte delle volte (min 10 controllati), ma anche qui ci sono degli inconvenienti.
Ecco il problema descritto sopra su 2017.10.23 00:53

Nella storia.

2017.10.23 00:53:00 1.17685 1.17725 1.17685 1.17725 8 0 9

E sulle zecche:

2018.01.01 11:54:59.009 2017.10.23 00:53:43 48
2018.01.01 11:54:59.009 2017.10.23 00:53:43 2017.10.23 00:53:43: Bid = 1.17724 Ask = 1.17733 SP = 0.00009
2018.01.01 11:54:59.025 2017.10.23 00:53:43 48
2018.01.01 11:54:59.025 2017.10.23 00:53:43 2017.10.23 00:53:43: Bid = 1.17725 Ask = 1.17736 SP = 0.00011
2018.01.01 11:54:59.041 2017.10.23 00:53:43 48
2018.01.01 11:54:59.041 2017.10.23 00:53:43 2017.10.23 10.23 00:53:43: Bid = 1.17725 Ask = 1.17737 SP = 0.00012 <<<<<<---------- ultima barra tick
2017.10.23 00:53
2018.01.01 11:54:59.057 2017.10.23 00:54:11 9
2018.01.01 11:54:59.057 2017.10.23 00:54:11 2017.10.23 00:54:11: Bid = 1.17728 Ask = 1.17737 SP = 0.00009 <<<<<<---------- prima barra di tick 2017.10.23 00:54 - qui corrisponde

Controllato la versione che lo spread dal primo tick della barra successiva va nella storia. Non confermato:

Storia
2017.10.23 00:59:00 1.17717 1.17723 1.17709 1.17715 14 0 3

1° tick della barra successiva
2018.01.01 11:55:00.478 2017.10.23 01:00:00 14
2018.01.01 11:55:00.478 2017.10.23 01:00:00 2017.10.23 01:00:00: Bid = 1.17715 Ask = 1.17729 SP = 0.00014

Storia

2017.10.23 01:00:00 1.17715 1.17720 1.17693 1.17707 64 0 0

1° tick della barra successiva
2018.01.01 11:55:02.342 2017.10.23 01:01:03 1
2018.01.01 11:55:02.342 2017.10.23 01:01:03 2017.10.23 01:01:03: Bid = 1.17707 Ask = 1.17708 SP = 0.00001

Tutto sommato - un po' di casino con gli spread (

 
elibrarius:

...

Tutto sommato - un po' di confusione sugli spread (


 

MT4 b1090, molte decine di simboli in Market Watch, diversi grafici aperti. terminal.exe sta mangiando 0-1% di CPU.

MT5 b1730, solo GBPUSD MetaQuotes-Demo in Market Watch, nessun grafico. terminal64.exe sta mangiando 2-3% di CPU.

È normale?

 
fxsaber:

MT4 b1090, molte decine di simboli in Market Watch, diversi grafici aperti. terminal.exe sta mangiando 0-1% di CPU.

MT5 b1730, solo GBPUSD MetaQuotes-Demo in Market Watch, nessun grafico. terminal64.exe sta mangiando 2-3% di CPU.

È normale?

L'argomento è venuto fuori diverse volte. MT5 è un po' più impegnativo per la CPU perché trasmette più informazioni.

Ma non è corretto confrontare entro l'1-2%.

 
Andrey Khatimlianskii:

L'argomento è venuto fuori diverse volte. MT5 è leggermente più intensivo per la CPU perché trasmette più informazioni.

Ma non è corretto confrontare entro l'1-2%.

Diversi browser con decine di schede aperte in modalità di lettura mangiano zero. È strano quando un terminale completamente vuoto consuma come un client torrent. E non cambia se si scollega internet dal computer.

 
fxsaber:

Diversi browser con decine di schede aperte in modalità di lettura mangiano zero. È strano quando un terminale completamente vuoto consuma come un client torrent. E non cambia se lo scolleghi dal computer.

Non è corretto paragonarlo a un browser. Le schede in background, per quanto posso vedere, non consumano affatto risorse.

E il terminale riceve i tick e costruisce una serie temporale, indipendentemente dal fatto che il grafico sia attivo o meno, in modo che quando si passa ad esso, mostra le informazioni attuali senza ritardi.

Ma non sto davvero difendendo MT, solo sottolineando che nessuno si è mai preso la briga di fare un confronto completo con tutti i calcoli per il service-desk.