Sequenza di esecuzione di Init() e DeInit() - pagina 17

 
fxsaber:

Risulta che i servizi avranno quasi tutte le funzioni On: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...


E se non hai bisogno dei buffer degli indicatori e non vuoi affrontare le stampelle degli indicatori/consigli, scrivi in un nuovo tipo di programma - Servizi - che non soffre delle limitazioni (stiracchiate dalle versioni precedenti di MT).

Esattamente.

Non ci sarà nessun OnCalculate.

Ancora nessuna soluzione con OnChartEvent

 
Slawa:

Proprio così.

Queste stampelle devono essere fastidiose per molte persone

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Non riesco a ottenere i dati dell'indicatore dall'alto TF

Sergey Dzyublik, 2017.04.14 10:55

L'utente aveva un indicatore che misurava la "forza" del mercato.
L'indicatore ha lavorato sul timeframe corrente e sulla coppia di valute.

Il compito era quello di mostrare i risultati di 8 valute popolari su un grafico con la possibilità di selezionare un TF indipendente da visualizzare.
Non importa in quale TF si trovi l'utente - dovrebbe mostrare i risultati di quello che è stato impostato nei parametri.

Il problema di caricare il traffico da altre valute con il TF richiesto è stato risolto con la seguente stampella:

   for (int i = ArraySize(symbols_load) - 1; i >= 0; --i){
      int counter = 0;
      int max_count = 10;
      while(counter < max_count){
         RefreshRates();
         double tmp_arr[];
         int res = CopyClose(symbols_load[i] + Suffix, int(TF), 0, 3, tmp_arr);
         if (res == 3)
            break;
         RefreshRates();
         ++counter;
      }
   }

dove:

symbols_load- elenco delle valute necessarie per il caricamento
Suffisso- possibile prefisso al nome delle coppie di valute
TF- periodo di tempo richiesto

È possibile aggiungere una sottoscrizione/abbonamento ai dati storici (barre e tick) per un determinato volume? In modo che ci sia sempre una cache (di barre e tick freschi) di una certa dimensione al Servizio per i simboli dati.


Quanto sarebbe più facile allora scrivere, per esempio, degli screeners di mercato.

 
Slawa:

Gli indicatori dovrebbero essere usati per lo scopo previsto.

In altre parole, la sequenza di esecuzione dell'indicatore OnInit e OnDeinit quando si cambia il simbolo-periodo delgrafico non dovrebbe disturbare nessuno

Questo approccio spiega molte cose.

Quindi, dovremmo accettarlo così com'è, l'importante è esserne consapevoli.

 
Slawa:

No.

Rileggete quali sono gli indicatori. Akelis. Colby. Chiedi a Yandex quali sono gli indicatori di mercato.

In MT3 quando abbiamo introdotto il concetto di indicatori personalizzati abbiamo permesso di operare con oggetti sui grafici perché c'erano solo 2 buffer di indicatori.

Facciamo un po' di storia. All'inizio c'era FXCharts, non l'ho colto perché sono entrato nell'azienda solo nell'ottobre 2002. Poi c'era MetaTrader. Sono entrato nell'azienda per sviluppare MQL II (FXCharts aveva già un linguaggio per le strategie di trading). Quando abbiamo fatto MQL II e EAs, abbiamo cambiato il nome in MetaTrader 2. Quando abbiamo permesso di scrivere indicatori personalizzati, MetaTrader 3 è diventato MetaTrader 3.

Poi è arrivata MetaTrader 4 e MQL4. Gli indicatori personalizzati hanno la possibilità di operare con 8 buffer di indicatori. È stata mantenuta la possibilità di lavorare con oggetti sul grafico. Ma siccome gli indicatori erano calcolati nel thread dell'interfaccia, c'erano poche persone che abusavano del lavoro con gli oggetti.

E ora abbiamo MT5. L'architettura è completamente diversa, ma siamo ostaggi di MT4 in termini di capacità di operare con oggetti grafici sul grafico. Sì, siamo stacanovisti, abbiamo anche aggiunto, come eroi, possibilità quasi illimitate di gestione del grafico dagli indicatori. Siamo arrivati. L'illustrazione - 16 pagine di discussioni sul nulla.

Passiamo ai servizi

La cartella Services è apparsa nell'Editor MQL5, ma non è ancora chiaro come usare questo strumento. https://www.mql5.com/ru/forum/190129


Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
  • www.mql5.com
Хотелось бы подробней с примерами использования обсудить новый функционал...
 
Slawa:

Gli indicatori dovrebbero essere usati per lo scopo previsto.

In altre parole, la sequenza di OnInit e OnDeinit dell'indicatore quando si cambia il simbolo-periodo delgrafico non dovrebbe disturbare nessuno

E perché tutti gli argomenti si sono spostati sugli oggetti grafici? Ci sono altre risorse globali come variabili globali, file, ecc. (possono essere usati negli indicatori secondo il loro scopo?) che saranno fonte di errori, se"l'ordine di esecuzione di OnInit e OnDeinit dell'indicatore al cambio del periodo-simbolo delgrafico non dovrebbe disturbare nessuno". Ancora una volta, si noti che il kernel è ora implementato in modo tale che l'ordine dovrebbe preoccupare il programmatore MQL, per evitare il rake causato dall'incertezza della sequenza delle chiamate OnInit/Deinit. Per non preoccupare MQL, è necessario un kernel che internamente si occupa di risolvere l'incertezza.
 
Stanislav Korotky:
Perché tutto l'argomento cade sugli oggetti grafici? Ci sono altre risorse globali come variabili globali, file, ecc. (si possono usare negli indicatori? (possono essere usati negli indicatori secondo il loro scopo?) che saranno fonte di errori, se"l'ordine di esecuzione di OnInit e OnDeinit dell'indicatore al cambio del simbolo-periodo delgrafico non disturba nessuno". Ancora una volta, si noti che il kernel è ora implementato in modo tale che l'ordine dovrebbe preoccupare il programmatore MQL, per evitare il rake causato dall'incertezza della sequenza delle chiamate OnInit/Deinit. Per non preoccupare MQL, è necessario un kernel che internamente si occupa di risolvere l'incertezza.
Ecco una buona domanda sui file. Se qualcosa deve essere resettato alla disinizializzazione e letto all'inizializzazione successiva, ci potrebbero essere dei problemi.
 
Stanislav Korotky:

Come possono i servizi o la capacità di eseguire più EA su un singolo grafico non coprire completamente i problemi che stiamo discutendo?

Immaginate che al posto degli indicatori menzionati nel thread, ci sarebbe un servizio in esecuzione che conterrebbe una parte completamente calcolata dell'indicatore. E metterà l'indicatore sul grafico che visualizzerà i dati, calcolati dal Servizio nei buffer dell'indicatore.


Gli indicatori dovrebbero essere usati secondo il loro scopo e non farne qualcosa di universale, solo perché ci sono diversi indicatori da lanciare in un grafico. In questo modo potete iniziare a lamentarvi del divieto di OrderSend negli indicatori.

 
fxsaber:

Come possono i servizi o la capacità di eseguire più EA su un singolo grafico non coprire completamente i problemi che stiamo discutendo?

Immaginate che al posto degli indicatori menzionati nel thread, ci sarebbe un servizio in esecuzione che conterrebbe una parte completamente calcolata dell'indicatore. E metterà l'indicatore sul grafico, che visualizzerà i dati calcolati dal servizio nei buffer dell'indicatore.

Cioè sarà possibile creare un indicatore attraverso il servizio?
 
Alexey Kozitsyn:
Cioè sarà possibile creare un indicatore attraverso il servizio?
Questo è già possibile da un EA (con alcune limitazioni).
 
fxsaber:
Questo è ancora possibile dall'EA (con alcune limitazioni).
Intende dire che usa le stampelle? Posso fare un esempio?
Motivazione: