Funzione ICustom - pagina 15

 

c'è qualche esempio per usare la funzione icustom per ottenere due buffer di time frame uguali?

dal momento che 2 tf buffer hanno lo stesso nome, come sono in grado di determinare il diverso time frame?

attuale time frame

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

time frame superiore

doppio trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

 
Prova in questo modo:
double trend1minute = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0); double trend5minute = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

E poi usate le 2 variabili come vi serve (per esempio: se (trend1minute == ... && trend5minute ==... ) fate qualcosa)

mtuppers:
c'è qualche esempio per l'utilizzo di icustom fuction per ottenere due time frame stesso buffer?

dato che 2 tf buffer hanno lo stesso nome, come posso determinare il diverso time frame?

time frame corrente

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

time frame superiore

double trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);
 

Utilizzo di iCustom in un EA, istanza singola

Ciao a tutti,

Sto lavorando alla scrittura di un EA per utilizzare un indicatore personalizzato, quando faccio il backtest, ho notato che sembra caricare una nuova istanza dell'indicatore ogni volta che viene chiamata la funzione iCustom. Qualcuno conosce un modo per caricare l'indicatore Custom una volta e il riferimento ad esso su ogni successione?

void OnBar()

{

RSIPL = iCustom(NULL,0,"NCH_DI",0,4,BarIndex);

TSL = iCustom(NULL,0,"NCH_DI",0,5,BarIndex);

HAOpen = iCustom(NULL,0,"HeikenAshi",0,2,BarIndex);

HAClose = iCustom(NULL,0,"HeikenAshi",0,3,BarIndex);

PACHigh = iMA(NULL,0,5,0,MODE_SMMA,PRICE_HIGH,BarIndex);

PACLow = iMA(NULL,0,5,0,MODE_SMMA,PRICE_LOW,BarIndex);

// DO MY OTHER STUFF HERE

}

Il codice di cui sopra carica una nuova istanza di NCH_DI ad ogni chiamata........

Grazie

 

Non può fare

Questo è il modo in cui funziona MT4. La soluzione migliore è ridurre al minimo il numero di chiamate iCustom() nel vostro codice. HA di solito deve essere chiamato solo quando si forma una nuova barra. Chiamarlo ogni tick non è ottimale.

 
CodeMeister:
Questo è il modo in cui funziona MT4. La soluzione migliore è ridurre al minimo il numero di chiamate iCustom() nel tuo codice. HA di solito deve essere chiamato solo quando si forma una nuova barra. Chiamarlo ogni tick non è ottimale.

Ho tutte le mie chiamate su una nuova formazione di barre. L'NCH_DI è purtroppo un pezzo di codice che richiede molta memoria. Avete qualche suggerimento su come posso scaricare le vecchie istanze?

 

Prova questo

Iltester di strategia non è l'obiettivo finale di questo EA. Eseguirlo dal vivo su un grafico lo è. Credo che il caricamento di iCustom() avvenga una volta sola su un grafico, a condizione di avere sufficiente memoria, quindi non spenderei molto tempo a lavorare su qualcosa che si adatti alle peculiarità di Strategy Tester. L'unica altra alternativa a iCustom() è quella di codificare l'indicatore direttamente nell'EA.

 

Ho pensato di ricodificarlo nell'EA.... Ho deciso che non sarebbe stato pratico in questo caso. Ho scoperto che se commento #property indicator_separate_window nell'indicatore, questo verrà caricato e scaricato una volta che la chiamata è completa, ho intenzione di finire la codifica principale e la demo per una settimana o giù di lì e monitorare il mio utilizzo della memoria. Grazie ragazzi, vi farò sapere come va.

 

Problemi con l'indicatore iCustom

Ciao a tutti,

il mio EA utilizza un proprio indicatore con iCustom.

All'apertura di una nuova candela l'indicatore viene chiamato da iCustom.

Ora mi sono accorto che il valore di iCustom[1] non è uguale a iCustom[0] della barra precedente.

Il valore è simile ma non esattamente lo stesso che dovrebbe essere e che ho verificato per l'RSI.

Qualche idea su dove potrebbe essere basato il problema?

Grazie per ogni suggerimento in merito.

Camilo

 

Dipende dal prezzo che viene utilizzato dall'indicatore personalizzato. Se il vostro indicatore personalizzato sta usando la chiusura, il massimo, il minimo o qualsiasi altro prezzo che sta cambiando durante lo sviluppo della candela corrente, allora il valore dell'indice [0] sarà cambiato.

Per esempio se chiamerete l'indicatore che sta usando il prezzo personalizzato e confronterete il valore [0] e dopo che la barra è chiusa lo confronterete con il risultato a [1] è quasi sicuro come l'uovo che il valore sarà diverso. Ma, se si imposta l'indicatore personalizzato per utilizzare il prezzo OPEN invece di close, allora il valore sarà uguale (semplicemente perché il prezzo open non cambia durante lo sviluppo della candela)

 

Thx risposta rapida, Kalenzo.

Ho controllato i valori per [2] e mi sono reso conto che per [1] -> [2] tutto sembra ok

Qui ho un esempio dei valori del mio indicatore

.... [0]..........[1].........[2]

t4 31,8711 42,6700 52,1915

t3 44,6881 52,1915 60,3014

t2 53,0572 60,3014 67,6553

t1 59,8860 67,6553 74,5797

Quindi sembra che il problema sia l'identificazione dell'apertura della barra.

Sto usando come controllo prima

if(Volume[0]>1) return;

Non va bene?

Motivazione: