Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 818

 
Vladimir Karputov:

Spero che creiate le maniglie dell'indicatore UNA volta in OnInit()?

La profondità di calcolo dipende dall'indicatore. Rari indicatori limitano forzatamente la profondità - di regola, tutti calcolano l'intera storia. Pertanto, può essere utile la seguente variante: introdurre la variabile responsabile della profondità nell'indicatore e poi passare questo parametro attraverso iCustom nell'Expert Advisor.

1. Sì, capisco che in un buon modo dovrebbe essere fatto una volta nell'init. Ma il problema è che i parametri di input dell'indicatore possono variare. Per esempio, nell'analisi dello spettro si calcolano le frequenze di risonanza e il risultato del calcolo è il periodo della MA utilizzata. E se si richiedono dati MA per una nuova dimensione, si tratta di un nuovo manico. Praticamente le frequenze non cambiano su ogni barra, quindi la stessa maniglia MA è usata abbastanza a lungo (~ minuti). Ma comunque, arriva un momento in cui la maniglia cambia. E allora devo usare un mucchio di maniglie, o usare una sola maniglia, ma ricalcolarla periodicamente. È qui che entra in gioco l'economia.

2. iCustom che ho imparato. Ma come limitare la profondità di calcolo nell'indicatore? Non posso farlo in quello tecnico. A quanto pare, dovrò creare molti cloni personalizzati di indicatori tecnici. Certo, è fastidioso ma dovrebbe essere efficace. Grazie per il suggerimento. È una buona idea. Grazie.

 
User_mt5:

1. Sì, ho capito che questo viene fatto normalmente una volta nell'inite. Ma la questione è che i parametri di input degli indicatori possono cambiare.

Gli sviluppatori possono scrivere SB dove gli indicatori possono essere gestiti in stile MQL4 senza perdere la loro efficienza. Cioè tutte le cache e le maniglie sono nascoste in SB.

 
User_mt5:

1. Sì, ho capito che questo viene fatto normalmente una volta nell'inite. Ma il problema è che i parametri di input degli indicatori possono variare. Per esempio, nell'analisi spettrale si calcolano le frequenze di risonanza e il risultato del calcolo è il periodo della MA utilizzata. E se si richiedono dati MA per una nuova dimensione, si tratta di un nuovo manico. Praticamente le frequenze non cambiano su ogni barra, quindi la stessa maniglia MA è usata abbastanza a lungo (~ minuti). Ma comunque, arriva un momento in cui la maniglia cambia. E allora devo usare un mucchio di maniglie, o usare una sola maniglia, ma ricalcolarla periodicamente. È qui che entra in gioco l'economia.

2. iCustom che ho imparato. Ma come limitare la profondità di calcolo nell'indicatore? Non posso farlo in quello tecnico. A quanto pare, dovrò creare molti cloni personalizzati di indicatori tecnici. Certo, è fastidioso ma dovrebbe essere efficace. Grazie per il suggerimento. È una buona idea. Grazie.


1. In questo caso è probabilmente meglio uccidere un handle inutilizzato e crearne uno nuovo (la cosa principale è controllare, in modo da non schiaffare un milione di handle in OnTick() :) ).

2. Creare una copia dell'indicatore incorporato, ma con un nome diverso (per esempio, aggiungere "profondità della storia" al suo nome) e introdurre un nuovo parametro: InpDepthHistory. Cioè, è necessario scrivere nuovi indicatori personalizzati.

 
User_mt5:

1. Sì, ho capito che questo viene fatto normalmente una volta nell'inite. Ma il problema è che i parametri di input degli indicatori possono variare. Per esempio, nell'analisi spettrale si calcolano le frequenze di risonanza e il risultato del calcolo è il periodo della MA utilizzata. E se si richiedono dati MA per una nuova dimensione, si tratta di un nuovo manico. Praticamente le frequenze non cambiano su ogni barra, quindi la stessa maniglia MA è usata abbastanza a lungo (~ minuti). Ma comunque, arriva un momento in cui il manico cambia. E allora devo usare un mucchio di maniglie, o usare una sola maniglia, ma ricalcolarla periodicamente. È qui che entra in gioco l'economia.

2. iCustom che ho imparato. Ma come limitare la profondità di calcolo nell'indicatore? Non posso farlo in quello tecnico. A quanto pare, dovrò creare molti cloni personalizzati di indicatori tecnici. Certo, è fastidioso ma dovrebbe essere efficace. Grazie per il suggerimento. È una buona idea. Grazie.

Per quanto ho capito tu vuoi ottenere solo 1 valore usando iCustom() come in mql4, ma non consideri che mql4 ricalcola anche l'indicatore per tutta la profondità della storia al primo utilizzo. Allo stesso modo viene ricalcolato ad un cambiamento di almeno un parametro.

Pertanto, concludiamo: non dovreste preoccuparvi. Se il "vecchio" indicatore non è necessario, potete semplicemente cancellarlo e ottenere un handle dell'indicatore con altri parametri.

 
fxsaber:

Gli sviluppatori possono scrivere un SB in cui gli indicatori possono essere gestiti in stile MQL4 senza perdere efficienza. Cioè tutte le cache e le maniglie sono nascoste nel SB.

Mi dispiace, non capisco. La parola Sviluppatori qui è quella che ha creato MT o sono un'applicazione peccaminosa? E SB è...?

 
Vladimir Karputov:

1. In questo caso, è probabilmente meglio uccidere un handle inutilizzato e crearne uno nuovo (la cosa principale è assicurarsi di non schiaffare un milione di handle in OnTick() :) ).

2. Creare una copia dell'indicatore incorporato, ma con un nome diverso (per esempio, aggiungere "profondità della storia" al suo nome) e introdurre un nuovo parametro: InpDepthHistory. Cioè, dovreste scrivere nuovi indicatori personalizzati.

1. Sì, finora ho un array tridimensionale di sole maniglie. Ma ora, a quanto pare, riorganizzerò tutto.

2. Sì, ci sono quasi tutti i codici di indicatori tecnici. E puoi scrivere il tuo.

Grazie.

 
User_mt5:

Mi dispiace, non capisco. Sono gli sviluppatori della parola qui che hanno creato MT o sono io un applicatore peccaminoso? E SB è...?

MetaQuotes può creare una tale libreria standard, se lo si desidera. La grande domanda è: è necessario?

 
Alexey Viktorov:

Per come la vedo io, tu vuoi ottenere solo 1 valore usando iCustom() come in mql4, ma non consideri che mql4 ricalcola anche l'indicatore per tutta la profondità della storia al primo utilizzo. Allo stesso modo, viene ricalcolato quando viene cambiato almeno un parametro.

Da qui la conclusione: non c'è bisogno di preoccuparsi. Se un indicatore "obsoleto" non è più necessario, potete semplicemente cancellarlo e ottenere un indicatore gestito con parametri diversi.

Forse, voglio farlo. Ma ora non voglio. Hai ragione. Se non hai bisogno di un indicatore obsoleto, dovresti schiacciarli come scarafaggi :)

Una buona soluzione è limitare la profondità dei cloni tecnici. Risparmierà risorse e tempo. Quindi, questo è quello che farò ora.

Grazie.

 
fxsaber:

MetaQuotes può creare una tale libreria standard, se lo si desidera. La grande domanda è: è necessario?

Questo è per le generazioni future. Ho guardato alcuni esempi dalla biblioteca. Migliaia di linee di codice non commentato. Non so nessuno, ma io non posso farlo. Quindi grazie per l'idea, ma non è accettabile nel mio caso.
 
User_mt5:
Questo è per le generazioni future. Ho guardato alcuni esempi in biblioteca. Migliaia di righe di codice non commentato. Non so nessuno, ma io non so come fare. Quindi grazie per l'idea, ma non è accettabile nel mio caso.

Questo funziona ora in MT5

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

Caratteristiche del linguaggio mql5, sottigliezze e trucchi

fxsaber, 2018.01.09 10:20

Per gli adepti di MQL4 c'è un modo antico per lavorare con i TF in MQL5 in uno stile familiare

Forse qualcuno troverà l'approccio MQL4 utile anche per lavorare con la storia dei tick

if (Tick[0].bid > Tick[100].bid) // сравниваем текущий и исторический тики
  Print("Hello World!");

if (High[0] > Close[100]) // https://www.mql5.com/ru/forum/42122/page24#comment_2904023
  Print("Hello World!");

Tecnicamente, nulla vi impedisce di fare la stessa cosa UNA volta con gli indicatori (senza perdita di efficienza) e mettere la soluzione in SB.

Motivazione: