Funzione ICustom - pagina 4

 
TheRumpledOne:
Se è "spazzatura", allora perché pubblicarlo?

Ho avuto un pensiero simile....

 

Una domanda su iCustom.

Puoi spiegare e fare qualche esempio riguardo alle variabili Line e Shift con i comandi iCustom?

Grazie, grazie

 
matrixebiz:
Una domanda su iCustom.

Potete spiegare e dare qualche esempio riguardo alle variabili Line e Shift con i comandi iCustom?

Grazie

iCustom - Documentazione MQL4

mode - Indice di linea. Può essere da 0 a 7 e deve corrispondere all'indice usato da una delle funzioni SetIndexBuffer. shift - Indice del valore preso dal buffer dell'indicatore (spostamento relativo alla barra corrente il dato numero di periodi fa).

Usa MODE per dire al tuo indicatore quale buffer vuoi. Gli indicatori di resistenza al supporto possono usare il buffer 0 ( MODE=0 ) per la resistenza e il buffer 1 ( MODE=1 ) per il supporto.

SHIFT dice di usare il valore di Bar(SHIFT) dell'indicatore chiamato da iCustom.

Questo aiuta?

 
TheRumpledOne:
iCustom - Documentazione MQL4

mode - Indice della linea. Può essere da 0 a 7 e deve corrispondere all'indice usato da una delle funzioni SetIndexBuffer. shift - Indice del valore preso dal buffer dell'indicatore (spostamento relativo alla barra corrente il dato numero di periodi fa).

Usa MODE per dire al tuo indicatore quale buffer vuoi. Gli indicatori di resistenza al supporto possono usare il buffer 0 ( MODE=0 ) per la resistenza e il buffer 1 ( MODE=1 ) per il supporto.

SHIFT dice di usare il valore di Bar(SHIFT) dell'indicatore chiamato da iCustom.

Questo aiuta?

Ok, ho capito Shift, dovrò leggere di più su Mode.

Codifichi? Ho questo indicatore che chiamo dal mio EA ma non sono sicuro di come impostarlo correttamente. Vedi foto.

Ha solo due linee e quando il blu cambia e si allinea con l'altra linea, viene generato il segnale Long (stessa idea con il rosso)

Ho provato alcuni codici diversi come quello che ho usato con l'indicatore VQ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);

Solo che non fa trading nel modo giusto.

Grazie

File:
ci.jpg  66 kb
 
matrixebiz:
Ok, ho capito Shift, dovrò leggere di più su Mode.

Codifichi? Ho questo indicatore che chiamo dal mio EA ma non sono sicuro di come impostarlo correttamente. Vedi foto.

ha solo due linee e quando il blu cambia e si allinea con l'altra linea, viene generato il segnale Long (stessa idea con il rosso)

Ho provato alcuni codici diversi come quello che ho usato con l'indicatore VQ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);

Semplicemente non fa trading nel modo giusto.

Grazie

Se ti riferisci all'indicatore inferiore, che sembra chiamarsi "#MTF CI", allora penso che forse quell'indicatore ha 4 buffer: uno ciascuno per i due colori di ogni linea. Puoi aprire la Finestra Dati (ctrl-D) per vedere quali buffer hanno gli indicatori, così come i loro indici (l'argomento MODE alla chiamata iCustom).

 
matrixebiz:
Ok, ho capito Shift, dovrò leggere di più su Mode.

Codifichi?

Grazie

Sono stato conosciuto per codificare un indicatore o 2 ( CENTINAIA ) nel mio tempo....LOL!

 
ralph.ronnquist:
Se ti riferisci all'indicatore in basso, che sembra chiamarsi "#MTF CI", allora penso che forse quell'indicatore ha 4 buffer: uno ciascuno per i due colori di ogni linea. Puoi aprire la Finestra dati (ctrl-D) per vedere quali buffer hanno gli indicatori, così come i loro indici (l'argomento MODE alla chiamata iCustom).

Sì, hai ragione, come faccio a iCustomarli e creare il Trade?

Per gli altri due (QQEA 4 buffer e VQ 2 buffer) che funzionano uso questo;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//Acquisto

qqe0_0>qqe1_0 && qqe0_1Entry2 && ....

Grazie Ralph

File:
data.jpg  24 kb
 
matrixebiz:
Sì, hai ragione, come faccio a iCustomarli e creare il Trade?

Per gli altri due (QQEA 4 buffer e VQ 2 buffer) che funzionano uso questo;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//Acquisto

qqe0_0>qqe1_0 && qqe0_1Entry2 && ....

Grazie Ralph

Generalmente, quando vedete una linea dell'indicatore con più colori, allora questo è solitamente implementato da più buffer; uno per ogni colore. Potete quindi calcolare gli indici dei buffer dalla finestra dei dati, dove il buffer superiore ha indice 0, e crescente verso il basso. Il buffer viene tracciato quando ha un valore (o se è uno stile di disegno LINE, ha bisogno di due o più valori consecutivi per essere tracciato)

Se avete il codice sorgente dell'indicatore, a volte è più facile sbirciarci dentro, e imparare gli indici del buffer dalle chiamate alla funzione SetIndexBuffer.

A margine: un indicatore può anche tracciare "oggetti" sul display, e questi non sono accessibili tramite la chiamata iCustom. Dovrete invece conoscere il "nome dell'oggetto", e potrete leggere le sue proprietà.

Quindi, dovete sempre avere chiaro quale buffer di indicatori leggere, e usare quell'indice come penultimo argomento di iCustom.

Per esempio, l'uso dell'indicatore VQ non sembra del tutto corretto, perché (seguendo la fonte che ho visto), i suoi buffer [1] e [2] sono usati rispettivamente per le linee verdi e rosse, e non c'è mai un caso in cui siano entrambi non vuoti. Cioè, "Up2==Down2" è sempre falso, tranne quando entrambi sono "vuoti", e cioè quando la linea VQ non è né verde né rossa, ma gialla.

A parte questo, penso che tu stia facendo le cose nel modo giusto. Si può discutere sulla scelta dei nomi delle variabili, naturalmente, ma questo è accademico. La strada da seguire è quella di scegliere i valori di interesse usando la chiamata iCustom, poi esprimere le particolari relazioni di valore richieste nelle condizioni di trading.

 
ralph.ronnquist:
Generalmente, quando vedi una linea di indicatore con più colori, allora questo è di solito implementato da più buffer; uno per ogni colore. Puoi quindi calcolare gli indici dei buffer dalla finestra dei dati, dove il buffer superiore ha l'indice 0, e crescente verso il basso. Il buffer viene tracciato quando ha un valore (o se è uno stile di disegno LINE, ha bisogno di due o più valori consecutivi per essere tracciato)

Se avete il codice sorgente dell'indicatore, a volte è più facile sbirciarci dentro, e imparare gli indici del buffer dalle chiamate alla funzione SetIndexBuffer.

Un punto a margine: un indicatore può anche tracciare "oggetti" sul display, e questi non sono accessibili tramite la chiamata iCustom. Dovrete invece conoscere il "nome dell'oggetto", e potrete leggere le sue proprietà.

Quindi, dovete sempre avere chiaro quale buffer di indicatori leggere, e usare quell'indice come penultimo argomento di iCustom.

Per esempio, l'uso dell'indicatore VQ non sembra del tutto corretto, perché (seguendo la fonte che ho visto), i suoi buffer [1] e [2] sono usati rispettivamente per le linee verdi e rosse, e non c'è mai un caso in cui siano entrambi non vuoti. Cioè, "Up2==Down2" è sempre falso, tranne quando entrambi sono "vuoti", e cioè quando la linea VQ non è né verde né rossa, ma gialla.

A parte questo, penso che tu stia facendo le cose nel modo giusto. Si può discutere sulla scelta dei nomi delle variabili, naturalmente, ma questo è accademico. La strada da seguire è quella di scegliere i valori di interesse usando la chiamata iCustom, poi esprimere le particolari relazioni di valore richieste nelle condizioni di trading.

Purtroppo non ho il sorgente per i tre indicatori che ho menzionato sopra. Come scriveresti il codice per questi se voglio che controllino una condizione di Acquisto o Vendita SOLO nel preciso momento in cui cambiano colore allo stesso tempo per ogni indicatore ofcourse?

Grazie

 

La mancanza di fonti non è un problema. Concentriamoci sulla finestra dell'indicatore 2 nella vostra immagine, che mostra un indicatore con 4 buffer. Se muovete il mouse a sinistra e a destra sopra l'indicatore, potete capire quale buffer è usato per quale colore.

Supponiamo che il primo buffer ([0]) sia per l'indicazione blu della linea superiore, il secondo buffer ([1]) sia per l'indicazione rossa della linea superiore, e allo stesso modo [2] e [3] siano blu e rosso della linea inferiore. Potreste quindi leggere l'indicatore come segue:

double top_is_blue = iCustom( ..., 0, 1 );

double top_was_blue = iCustom( ..., 0, 2 );

double top_is_red = iCustom( ..., 1, 1 );

double top_was_red = iCustom( ..., 1, 2 );

double bot_is_blue = iCustom( ..., 2, 1 );

double bot_was_blue = iCustom( ..., 2, 2 );

double bot_is_red = iCustom( ..., 3, 1 );

double bot_was_red = iCustom( ..., 3, 2 );

[/PHP]

Then you can summarise them as follows:

[PHP]bool top_goes_blue = ( top_is_blue == top_was_red );

bool top_goes_red = ( top_is_red == top_was_blue );

bool bot_goes_blue = ( top_is_blue == top_was_red );

bool bot_goes_red = ( top_is_red == top_was_blue );

bool both_go_blue = ( top_goes_blue && bot_goes_blue );

bool both_go_red = ( top_goes_red && bot_goes_red );

Come lo fate dipende da cosa state cercando. In particolare,

se volete combinare le letture non contemporanee delle due linee, potrebbe diventare una codifica più complessa. Per esempio, la variabile booleana "both_go_blue" si riferisce alle letture simultanee delle due linee, e non cattura che "una linea va in blu, e poi l'altra va in blu un po' più tardi".