[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 120

 

Un paio di giorni fa ho scaricato l'EA "e-MoveSLTPbyMouse" (grazie Granit) e l'ho provato sulla piattaforma di trading Broco, funziona bene. Oggi ho deciso di usarlo con IBFX e ho visto che non funziona. È apparsa una specie di linea aggiuntiva che ha "rimbalzato" sul prezzo, poi il mercato ha superato con successo la linea di stop loss e ho dovuto chiudere manualmente la posizione con una piccola perdita. Qualche idea al riguardo? Cosa posso fare per far funzionare il mio Expert Advisor con IBFX? O forse c'è qualcosa di simile nell'arsenale di qualcuno?

Un'altra domanda. Ho un EA che apre posizioni con linee orizzontali ma purtroppo apre solo 3-4 pips dal prezzo impostato. Per esempio, ho messo una linea di VENDITA a 1,4018 con 1 pip per romperla (EUR) e la posizione si è aperta a 1,4015, cioè è scivolata di 2 pip. Su GBP, ha superato di 3 pip. Forse qualcuno ha un EA simile, ma funzionerebbe correttamente. Te ne sarei molto grato.

Sto pubblicando questo EA, forse qualcuno ne avrà bisogno.

File:
 

Signori esperti, vorrei utilizzare nel mio Expert Advisor un indicatore scorrevole su un grafico.

Se attacco l'indicatore scorrevole al grafico manualmente, il parametro Apply to può essere scritto come dati dell'indicatore precedente, ma come devo fare nel mio EA?

Penso che sarebbe logico applicare la funzione OnArray , ma non so dove prendere l'array con i dati del primo МА.

Per esempio, ho bisogno di quanto segue: se il primo МА (21) è superiore al secondo MA (21) (costruito sul primo MA) allora..................

E un'altra domanda: se il mio Expert Advisor ha la seguente chiamata di funzione: iMA(0,0,250,0,1,0,0), allora ogni tick prende queste 250 barre chiuse, le somma e divide per 250? Tuttavia, non è così. E se uso un'altra barra scorrevole, il prezzo scenderà... Si prega di chiarire.



 
mukata писал(а) >>

Signori esperti, vorrei utilizzare nel mio Expert Advisor un indicatore scorrevole su un grafico.

Se attacco l'indicatore scorrevole al grafico manualmente, il parametro Apply to può essere scritto come dati dell'indicatore precedente, ma come devo fare nel mio EA?

Penso che la funzione iMAOnArray abbia senso, ma non so dove prendere l'array con i dati del primo MA, per favore, illuminatemi o fornitemi un link a tale costruzione, o la costruzione stessa, se esiste.

Per esempio, ho bisogno di quanto segue: se il primo МА (21) è superiore al secondo MA (21) (costruito sul primo MA) allora..................

E un'altra domanda: se il mio Expert Advisor ha la seguente chiamata di funzione: iMA(0,0,250,0,1,0,0), allora ogni tick prende queste 250 barre chiuse, le somma e divide per 250? Tuttavia, non è così. E se uso un'altra barra scorrevole, il prezzo scenderà... Per favore, spiega.

Il modo più semplice per fare un indicatore.

 
Vinin >> :

La cosa più semplice da fare è fare un indicatore.

Facciamo un indicatore, dove prendiamo l'array di dati? Dammi un suggerimento sulla costruzione, il libro di testo non ce l'ha...

E la seconda domanda?

 
mukata писал(а) >>

Abbiamo un indicatore, dove prendiamo l'array di dati? Per favore, datemi un suggerimento sulla costruzione, il libro di testo non ce l'ha...

E la seconda domanda?

Sulla seconda domanda. Tutto dipende dall'implementazione. Potete calcolare voi stessi l'indicatore ottimizzando il codice. Si può calcolare solo l'apertura della barra. Ci sono molte varianti.

Ma l'opzione migliore è usare l'indicatore. In cui vengono eseguiti tutti i calcoli e l'Expert Advisor li legge (valori calcolati).

Ecco un esempio di indicatore

Ho cambiato l'indicatore

File:
 
Vinin >> :

Sulla seconda domanda. Tutto dipende dall'implementazione. Potete fare il vostro calcolo ottimizzando il codice. Si può calcolare solo in base all'apertura della barra. Ci sono molte varianti.

Ma l'opzione migliore è usare l'indicatore. In cui vengono eseguiti tutti i calcoli e l'Expert Advisor li legge (i valori calcolati).

1) "Puoi calcolare lo strumento da solo ottimizzando il codice" - Non capisco questa linea. Ho capito: su ogni tick start viene chiamato, e se c'è la chiamata della funzione iMA(0,0,250,0,1,0,0), allora ogni volta aggiungerà e dividerà queste 250 barre. E se creiamo l'indicatore correttamente, conterà solo l'ultima barra, e l'ultimo parametro di spostamento sarà letto dall'array. Giusto?

2) Dove prendete l'array per creare il secondo MA?

 
mukata >> :

2) Dove posso ottenere un array per calcolare il secondo MA?


Giusto! Dimenticavo, l'indicatore crea un array di valori MA...

Grazie mille.

 
mukata писал(а) >>

1) "Puoi calcolare la macchina da solo ottimizzando il codice" - Non capisco questa frase. Ho capito: su ogni tick start viene chiamato, e se c'è la chiamata della funzione iMA(0,0,250,0,1,0,0), aggiungerà e dividerà queste 250 barre ogni volta. E se creiamo l'indicatore correttamente, conterà solo l'ultima barra, e l'ultimo parametro di spostamento sarà letto dall'array. Giusto?

2) Dove possiamo trovare un array per creare il secondo MA?

1. Tutto dipende dall'implementazione. Ci sono metodi ottimali di calcolo. iMa() utilizza il proprio algoritmo di calcolo. CodeBase li ha. Così, quando lo usate, funziona il meccanismo di calcolo che vi è nascosto. Si ottiene solo il risultato. E il calcolo verrà eseguito ogni tick.

2. Ho fatto questo indicatore appositamente per aiutarvi a capire gli array.

 
Vinin >> :

1. Tutto dipende dall'implementazione. Ci sono metodi ottimali di calcolo. iMa() utilizza il proprio algoritmo di calcolo. CodeBase li ha. Così, quando lo usate, funziona il meccanismo di calcolo che vi è nascosto. Si ottiene solo il risultato. E il calcolo verrà eseguito ogni tick.

2. Ho fatto questo indicatore specificamente per aiutarvi a capire gli array.

Grazie mille per l'indicatore, ho guardato la funzione di avvio, tutto è diventato subito chiaro.

Riguardo alla prima domanda:

Per esempio, nel mio Expert Advisor (non MA, ma anche una funzione integrata):

//пересекла ли главная линия стохастика сигнальную линию сверху вниз
if(iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,shiftF)>
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,shiftF)&&
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,0)<
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,0)
){
//и обе линии ниже 90
if(iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,0)<90&&
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,0)<90
){
//и выше 50
if(iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,0)>50&&
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,0)>50
)
fl=1;return(fl);//продать
}
}

lo conterà su ogni linea?

Oppure si dovrebbe scrivere un indicatore e prendere i valori dai suoi array e confrontarli, o qualcos'altro. Per farlo funzionare più velocemente.

 
mukata писал(а) >>

Grazie mille per l'indicatore, ho guardato la funzione di avvio, tutto è diventato subito chiaro.

Riguardo alla prima domanda:

Nel mio EA per esempio (non MA, ma è anche una funzione integrata):

//пересекла ли главная линия стохастика сигнальную линию сверху вниз
if(iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,shiftF)>
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,shiftF)&&
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,0)<
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,0)
)

Lo conterà su ogni linea?

O dovrei scrivere un indicatore, e prendere i valori dai suoi array e confrontarli, o qualcos'altro. In modo che funzionasse più velocemente.

In primo luogo, è meglio calcolare i valori dello stocastico e della linea del segnale. E poi confrontarli. Semplicemente non mi piace questo stile. Il risultato è una sorta di cecità. Ed è più facile fare un errore.

If() nella variante metaquote fa il calcolo completo dell'espressione logica. Sarebbe auspicabile renderlo il più semplice possibile. È solo che if() è una delle operazioni più lente.

Esiste anche la nozione di "chattering" sulla barra dello zero. Ci possono essere casi in cui il segnale sarà ripetuto su una barra più di una volta. E può anche non bloccarsi. Era un falso segnale. Ecco perché cerchiamo di prendere i valori dalle barre formate. Ma in questo caso dovremmo usare i prezzi di apertura. Ma ci possono essere altre varianti.