Domande da un "manichino" - pagina 66

 
Yedelkin:

Tutto dipende dalla logica dell'indicatore personalizzato. In linea di principio, può ricalcolare i suoi valori una volta al giorno, saltando tutti gli altri tic. Secondo la volontà dell'autore, per così dire.

Fondamentalmente, alcune persone cercano di usare questo approccio mostruoso: creare una copia dell'indicatore tramite iCustom, copiare i dati necessari, cancellare la copia dell'indicatore. La procedura viene ripetuta secondo necessità.

C'è anche la funzione OnTimer(). Non ci ho lavorato personalmente, ma forse puoi adattarla al tuo compito.

Grazie. Lo immaginavo. L'OnTimer non è adatto.

C'è una situazione in cui l'indicatore è su M5 ma viene chiamato una volta all'ora, per esempio. Risulta che l'indicatore sarà calcolato nell'Expert Advisor inattivo ogni 5 minuti per il gusto di chiamarlo una volta all'ora. Per questo mi sto chiedendo se c'è la possibilità di mettere in pausa il ricalcolo dell'indicatore.

 
masharov:

C'è una situazione in cui l'indicatore è su M5, ma viene chiamato una volta all'ora per esempio. Risulta che l'indicatore sarà calcolato nell'Expert Advisor oziosamente ogni 5 minuti per il gusto di chiamarlo una volta all'ora.

E non si può riscrivere l'indicatore in modo che si chiami orario?
 
Yedelkin:
Posso riscrivere l'indicatore in modo che calcoli anche l'ora?
Il commercio è su M5. Non si sa quando l'indicatore sarà chiamato. Può essere una volta ogni due ore o tre volte all'ora. L'indicatore viene utilizzato per confermare la decisione di effettuare un trade.
Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
masharov:
il commercio sta andando su M5. Non si sa quando l'indicatore sarà chiamato. Potrebbe essere una volta ogni due ore o tre volte in un'ora. L'indicatore viene utilizzato per confermare la decisione di fare trading.
La logica è chiara. In questi casi, l'ho fatto in un modo intelligente e semplice: ho trasferito il blocco di calcoli dall'indicatore direttamente nell'Expert Advisor. Cioè, invece della fonte di dati esterna (indicatore), l'Expert Advisor usava una delle sue funzioni - quella che riproduceva l'algoritmo di calcolo dell'indicatore. In questo caso, questa funzione è stata chiamata secondo necessità, con un ricalcolo completo dei valori necessari.
 

Ciao, potresti per favore dirmi,

1)Cosa fare con errori comeTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENe in quale caso la richiesta è bloccata o la posizione/ordine è congelata?

2)Inoltre mi chiedo cosa fare conTRADE_RETCODE_INVALID_FILLe in quale caso si verifica?

 
PunkBASSter:

Ciao, potresti per favore dirmi,

1)Cosa fare con errori comeTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENe in quale caso la richiesta è bloccata o la posizione/ordine è congelata?

2)Mi chiedo anche cosa fare con TRADE_RETCODE_INVALID_FILLe in quale caso si verifica?

1) Controlla la ricerca nel forum. È stato discusso circa un anno fa.

2) Guarda nel riferimento ENUM_ORDER_TYPE_FILLING . Probabilmente c'è una mancata corrispondenza nella richiesta di compravendita per il "tipo di ordine di esecuzione" specificato nella modalità di esecuzione e risulterà nel codice di ritorno specificato.

Per esempio ORDER_FILLING_FOK e SYMBOL_TRADE_EXECUTION_MARKET.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin, grazie mille)
 
masharov:

Ho il sospetto che se l'indicatore è attivato tramite iCustom, viene calcolato su ogni tick. E non dipende dalle chiamate ad esso attraverso il CopyBuffer. È corretto?

Se è corretto, allora è possibile disabilitare il calcolo dell'indicatore e abilitarlo solo prima di chiamare il CopyBuffer?

Se ho capito bene, allora puoi provare a limitare i calcoli sui prossimi tick con l'esempio dell'aiuto di iFractals (vedi condizioni multiple in OnCalculate).

Forse, si può anche segnalare in OnCalculate l'esecuzione iniziale dei calcoli dell'indicatore per tutte le barre necessarie e controllare l'ora del server del terminale, e dopo che ciò accade, resettare la bandiera a false, permettendo così il ricalcolo, e impostarla di nuovo a true... e così via.

O anche così: scrivere una funzione esterna con calcoli, chiamarla in OnInit, dove verrà eseguita una volta al primo avvio dell'indicatore (così come quando si cambiano i TF e ecc., che avviene su iniziativa dell'utente), e poi chiamare la stessa funzione in OnCalculate nel secondo modo (al tempo specificato sul server e tramite flagging).

Ma il primo metodo è buono, non solo non carica il processore con ricalcoli completi (che spesso portano a nessun nuovo risultato) ad ogni tick, ma non farà nemmeno ricalcoli completi ad un dato intervallo di tempo, e calcolerà solo le barre più recenti (se ad ogni tick, allora una nuova, e se una volta t, allora diverse accumulate durante questo tempo)... Anche se questa versione è meglio da controllare personalmente, posso sbagliarmi... Inoltre, tutto dipende dallo scopo specifico dell'indicatore. Se dipende da una grande o addirittura dall'intera storia del mercato, allora non si può evitare di ricalcolare l'intera storia.

 

Non ha capito l'umorismo della battuta (scrivere un indicatore, anche se non fa differenza):

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[4];

Compila senza errori o avvertimenti.

int elements=4;

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[elements];

Compilato con1 errore(i), 0 avviso(i): 'elements' - valore indice non valido.

Cosa può esserci oltre l'ovvio buon senso qui?

 
x100intraday:


Cosa può esserci oltre l'ovvio buon senso qui?

il numero di elementi dell'array è specificato da una costante

Se il numero di elementi non è noto in anticipo, usate ArrayResize per impostare la dimensione usando delle variabili.

Queste sono le basi del c++.

Quindi o

#define  elements 4