Come codificare? - pagina 89

 
shanyang:
Ho scaricato un indicatore che mostra una freccia verde/rossa quando arriva il segnale di acquisto/vendita.

ora voglio programmare il mio EA basato su questo indicatore.

ma ho solo il file ex4 di questo indicatore (senza codice sorgente)

Voglio che il mio EA legga la freccia dell'indicatore sul grafico principale e invii l'ordine di acquisto/vendita (freccia verde==>acquisto, freccia rossa==>vendita)

c'è un approccio per ottenere informazioni sulla freccia dell'indicatore sul grafico principale?

grazie

Una freccia può essere disegnata come valore di uno dei buffer dell'indicatore; in questo caso, il colore nelle proprietà dell'indicatore dovrebbe darvi il numero del buffer, che è sufficiente per chiamarlo con la funzione "ICustom()"; dovete anche riempire tutti i valori della scheda "Input" come parametri della chiamata ICustom().

Se la freccia non è un valore di un buffer, è un oggetto. Selezionalo per vedere le sue proprietà. Il più delle volte è facile capire come vengono generati i nomi e poi sarà possibile usare ObjectFind().

L'EA dovrebbe guardare ObjectsTotal(), e solo quando viene incrementato può provare a riconoscere l'ultimo oggetto. Se il nome non è noto, l'EA non può usare OjectFind() e deve scansionare tutti gli oggetti per identificare l'ultimo. L'ultimo oggetto non è ovviamente quello con l'indice più alto (ObjectsTotal() - 1), ma è meglio iniziare la scansione dall'indice più alto perché probabilmente si può rompere più velocemente. Ora dovete confrontare l'OBJPROP_TIME1 ottenuto da ObjectGet() con Time[0] o Time[1] per esempio, e controllare il colore o il tipo di freccia, o una sottostringa del nome, per identificare un segnale di acquisto o di vendita.

Sembra complesso ma non lo è. Provate a scriverlo e non esitate a chiedere maggiori precisazioni se necessario.

 
Big Be:
La risposta precedente era incompleta.

Se l'indicatore è standard in MT4, apparirà nel posto normale. Se è chiamato da iCustom, apparirà anche, se codificato correttamente.

I seguenti EAs hanno anche gli indicatori mostrati sulla finestra del grafico. Studiateli per imparare come:

bouncingPipEA_mpowerV42.mq4

bouncingPipEA_BigBear_v23.mq4

Big Be

Grazie Big Be, li controllerò.

 
Michel:
Una freccia può essere disegnata come valore di uno dei buffer dell'indicatore; in questo caso, il colore nelle proprietà dell'indicatore dovrebbe darti il numero del buffer, che è sufficiente per chiamarlo con la funzione "ICustom()"; devi anche riempire tutti i valori della scheda "Input" come parametri della chiamata ICustom().

Se la freccia non è un valore di un buffer, è un oggetto. Selezionatelo per vedere le sue proprietà. Il più delle volte è facile capire come vengono generati i nomi e poi sarà possibile usare ObjectFind().

L'EA dovrebbe guardare ObjectsTotal(), e solo quando viene incrementato può provare a riconoscere l'ultimo oggetto. Se il nome non è noto, l'EA non può usare OjectFind() e deve scansionare tutti gli oggetti per identificare l'ultimo. L'ultimo oggetto non è ovviamente quello con l'indice più alto (ObjectsTotal() - 1), ma è meglio iniziare la scansione dall'indice più alto perché probabilmente si può rompere più velocemente. Ora devi confrontare l'OBJPROP_TIME1 ottenuto da ObjectGet() con Time[0] o Time[1] per esempio, e controllare il colore o il tipo di freccia, o una sottostringa del nome, per identificare un segnale di acquisto o di vendita.

Sembra complesso ma non lo è. Provate a scriverlo e non esitate a chiedere maggiori precisazioni se necessario.

Grande spiegazione Michel ... 100% più completa della mia!

Grazie per chi è interessato.

FerruFx

 

cambiare l'indicatore in un EA

vorrei cambiare l'indicatore in un EA che ho, ma non so come fare

non sono un programmatore infatti non mi occupo molto di questo tipo di cose, qui sotto c'è l'unica parte che riguarda l'indicatore voglio cambiare il DiMA in MFA(14)

voglio comprare @ >60 e vendere @<40

double diClose0=iClose(NULL,5,0);

double diMA1=iMA(NULL,5,7,0,MODE_SMA,PRICE_OPEN,0);

double diClose2=iClose(NULL,5,0);

double diMA3=iMA(NULL,5,6,0,MODE_SMA,PRICE_OPEN,0);

if(AccountFreeMargin()<(1000*Lots)){

Print("Non abbiamo soldi. Margine libero = ", AccountFreeMargin());

return(0);

}

if (!ExistPositions()){

se ((diClose0<diMA1)){

OpenBuy();

return(0);

}

se ((diClose2>diMA3)){

OpenSell();

return(0);

}

}

qualcuno potrebbe per favore aiutarmi

denis

 

Per favore, pubblica il tuo indicatore MFA. Ho bisogno di vedere i buffer. In base a quale logica vuoi cambiare gli indicatori?

Dave

 

Ciao Dave, non posso postare l'indicatore MFI, non è nella cartella degli indicatori, puoi ottenere l'indicatore dalla barra degli strumenti sotto volumi, non so cosa intendi per sotto quale logica.

denis

 
denis68:
Ciao Dave, non posso postare l'indicatore MFI, non è nella cartella degli indicatori, puoi ottenere l'indicatore dalla barra degli strumenti sotto volumi, non so cosa intendi per sotto quale logica. denis

Questo? Indice di Facilitazione del Mercato

File:
mfi.mq4  3 kb
 

Ciao linuxer non credo che sia quello giusto ma grazie comunque, quello che ho si chiama money flow index.

denis

 
denis68:
ciao linuxer non credo che sia quello ma grazie comunque, quello che ho si chiama money flow index. denis

Scusa, ho scritto male il nome, è quello.

Money Flow Index.mq4 aka MFI.mq4

 
Motivazione: