Auguri per MQL5 - pagina 99

 
Henry_White >> :

Cosa mi piacerebbe vedere nelle future versioni:

  1. Capacità di eseguire le sue procedure al di fuori del contenuto del tick handler (per MT4 questo è start()) (per esempio in una traccia separata, per il calcolo delle statistiche, l'ottimizzazione, ecc,)
  2. Le funzioni più semplici per la gestione del mouse. Per esempio, sull'evento "OnClick" è possibile ottenere le coordinate del puntatore nella dimensione MT (su X - indice della barra, su Y - coordinata y della finestra corrente.

1. Cosa lo impedisce ora?

2. In MQL5, gli EA saranno in grado di gestire gli eventi della finestra (EMNIP).

 
TheXpert >> :

1. Cosa c'è nel mezzo in questo momento?

Beh, se sai come fare, ti sarei molto grato se potessi condividere questa abilità/conoscenza.

 
TheXpert >> :

2. In MQL5 gli Expert Advisors saranno in grado di elaborare gli eventi della finestra (EMMNIP).

Il gestore di eventi ChartEvent sarà disponibile solo negli EA, a proposito... Una strana discriminazione ))) Penso che la necessità sia la stessa negli indicatori (gli Expert Advisors non ne hanno bisogno).

 
Henry_White >> :

Beh, se sai come fare, ti sarei molto grato se potessi condividere questa abilità/conoscenza.

Non come due dita sull'asfalto, ma è possibile. Collegare la dll, chiamare i calcoli in un nuovo thread - WinAPI aiuterà qui, terminazione tramite timer o callback.

Henry_White >> :

Il gestore di eventi ChartEvent sarà disponibile solo in Expert Advisors, a proposito... Una discriminazione piuttosto strana ))

Non piace neanche a me. Ma ora gli indici non sono legati al grafico.

 
TheXpert >> :

Non come due dita sull'asfalto, ma è possibile. Collegare la dll, fare i calcoli in un nuovo thread - WinAPI aiuterà qui, finire con un timer o un callback.

Stavo pensando alla variante DLL, ma non mi è del tutto chiaro come ottenere un accesso CORRETTO alle serie temporali, più i valori di più di 10 indicatori diversi, e tutto questo a una profondità decente sulla storia. E se consideriamo che il tempo di calcolo richiede più di un minuto (io lavoro con i minuti), allora non è assolutamente chiaro, dove i puntatori DLL faranno riferimento dopo aver aggiunto una nuova barra nel terminale client. E abbiamo anche bisogno di restituire un paio di dozzine di parametri calcolati e aggiungere vari grafici alla serie di prezzi. Non è banale, tutto sommato...

Avendo esaminato tutto questo e stimato quanto tempo avrei speso in esperimenti e vari controlli e debug, ho scritto un'elaborazione di cluster temporali in MQL... Funziona, ma... Non è bello. Ma la mia anima lo esige! ))) Ed è già il 21° secolo... E tu vuoi essere all'altezza dell'età. ))

 

Propongo di chiarire (definire) il concetto di "punto".

Un pip è la quinta cifra significativa: 1,2345.

Se una quotazione è rappresentata da un'altra cifra (1,23456) e spread = 0,00018, allora lo spread in pip è 1,8 p, non 18 p.

Questo introdurrà uniformità nella terminologia ed eviterà la confusione.

 
SK. >> :

Propongo di chiarire (definire) il concetto di "punto".

Un pip è la quinta cifra significativa: 1,2345.

Se una quotazione è rappresentata da un'altra cifra (1,23456) e spread = 0,00018, allora lo spread in pip è 1,8 p, non 18 p.

Permetterà di introdurre l'uniformità nella terminologia ed evitare la confusione.

Hai assolutamente ragione - i broker scrivono "spread 1.8" sui loro siti web, non 18 - sanno esattamente cosa fanno :)

 

Функция OnCalculate() вызывается только в пользовательских индикаторах
при необходимости произвести расчет значений индикатора по событию Calculate.

Non ho ancora idea di come posso fare un indicatore con oggetti e senza conoscere il numero di barre cambiate

 

Vedo che c'è una funzione printf

e quanto sarebbe bello avere un altro sprintf



 
Roffild >> :

Non ho ancora idea di come posso fare un indicatore con oggetti e senza conoscere il numero di barre modificate

L'aiuto di MQL5 afferma:

int OnCalculate (const int rates_total, // la dimensione della serie temporale di input
const int prev_calculated, // barre elaborate alla chiamata precedente
const datetime& time[], // tempo
const double& open[], // Open
const double& high[], // High
const double& low[], // Low
const double& close[], // Chiudi
const long& tick_volume[], // Tick Volume
const long& volume[], // Volume reale
const int& spread[] // Spread
);

La relazione tra il valore restituito da OnCalculate() e il secondo parametro di input prev_calculated dovrebbe essere notato. Il parametro prev_calculated quando si chiama la funzione contiene un valorerestituito da OnCalculate() nella chiamata precedente. Questo permette algoritmi economici per il calcolo dell'indicatore personalizzato al fine di evitare calcoli ripetuti per quelle barre che non sono cambiate dalla precedente chiamata di questa funzione.

Per questo, di solito è sufficiente restituire il valore del parametro rates_total, che contiene il numero di barre nella chiamata di funzione corrente. Se dall'ultima chiamata di OnCalculate() i dati sui prezzi sono cambiati (è stata caricata una storia più profonda o sono stati riempiti gli spazi vuoti della storia), il valore del parametro di input prev_calculate sarà impostato a zero dal terminale.