Come codificare? - pagina 107

 

È un EA, non un indicatore, non dovresti mischiarli entrambi.

 

ciao a tutti...

È un EA, non un indicatore, non si dovrebbe mescolare entrambi.

in realtà, prendo alcuni codici dall'indicatore MACD e da quello faccio un EA... qualcuno può aiutarmi quale codice dovrei correggere?

grazie...

 

Prova a guardare alcuni degli EA che hai già. Studia il codice e prova a vedere se riesci a capire parte della logica. Prova a parlare il flusso del programma ad alta voce. Aiuta molto!

Buona Fortuna

Lux

 

ciao a tutti..

grazie luxinterrior per la risposta...

Prova a guardare alcuni degli EA che hai già. Studia il codice e prova a vedere se riesci a capire parte della logica. Prova a parlare il flusso del programma ad alta voce. Aiuta molto! Buona Fortuna

Ho 7 buffer... buffer1 fino a buffer7... ogni buffer salverà il valore della barra MACD... l'EA si aprirà

post BUY quando il MACD diventa 'u' forma...

la condizione quando ...

if (MacdBuffer7>MacdBuffer5&&MacdBuffer5>MacdBuffer3&&MacdBuffer3>MacdBuffer1

&&MacdBuffer1<MacdBuffer2&&MacdBuffer2<MacdBuffer4&&MacdBuffer4<MacdBuffer6) [/CODE]

SELL post when the MACD become 'n' shape..

the condition when..

[CODE] if(MacdBuffer7<MacdBuffer5&&MacdBuffer5<MacdBuffer3&&MacdBuffer3<MacdBuffer1

&&MacdBuffer1>MacdBuffer2&&MacdBuffer2>MacdBuffer4&&MacdBuffer4>MacdBuffer6)

spero che qualcuno possa aiutarmi a risolvere il problema... grazie...

 

C'è un modo per forzare il programma a calcolare?

In questo momento aspetta il prossimo tick.

Ho 6 grafici aperti e lo stesso indicatore è su tutti e sei i grafici.

Se un grafico riceve un tick, si aggiorna ma gli altri grafici no, quindi sono "stantii".

Grazie.

 
:: se è adatto allora prova a formarlo in un EA, lì puoi fare il loop & usare la funzione sleep, ho provato diversi setup semplici per avere solo processi/calcoli non legati ai tick, ma poi si ha il problema del refresh dello schermo... quindi... Ho cambiato tutto di nuovo alla normalità ... l'importanza di farlo non era così grande ... forse in MQL5 in arrivo

:: gli indicatori non possono gestire la funzione sleep()

:: puoi scrivere una dll, recuperare tutte le finestre nel tuo terminale... poi fare/inviare un "refresh screen/window" ad ogni finestra figlia. Ma poi devi inviare il file dll insieme al tuo indicatore agli altri... di nuovo... rendendo il tutto complicato...

TheRumpledOne:
C'è un modo per forzare il programma a calcolare?

In questo momento aspetta il prossimo tick.

Ho 6 grafici aperti e lo stesso indicatore è su tutti e sei i grafici.

Se un grafico riceve un tick, si aggiorna ma gli altri grafici no, quindi sono "stantii".

Grazie.
 

Ciao a tutti,

Spero che non ti dispiaccia se mi intrometto, sto esaminando una situazione simile e ho un pensiero sul problema... che ne dici se codifichi un ciclo alla fine del tuo programma che dice "se nessun ordine è aperto esegui di nuovo" e lo lasci andare in loop forse 3 o 4 volte.

Se lo fa, allora tutti gli ordini mancanti (cosa che accade abbastanza spesso) dovrebbero essere raccolti. o c'è qualcosa di sbagliato nel mio pensiero.

Penso che sarebbe qualcosa di simile a questo...

for (int k = OrdersTotal() ==0; k >=2; k++)

{

if ( ! OrderSelect ( k, SELECT_BY_POS, MODE_TRADES ))continua;

if (k > 2) break;

}

return(0);

}

Sono ancora nuovo a questo, quindi se non ha senso, per favore spiegami perché.

 

A Lux, ajk, Raygun, Devil2000, IN10TION

Grazie per i suggerimenti.

Li proverò e spero di trovare la risposta.

Posterò più tardi.

Grande essere

 
amatrader:
Ciao a tutti,

Spero che non vi dispiaccia se mi intrometto, sto esaminando una situazione simile e ho un pensiero sulla questione... che ne dite se codificate un ciclo alla fine del vostro programma che dice "se nessun ordine è aperto eseguite di nuovo". e lasciatelo andare in loop forse 3 o 4 volte.

Se lo fa, allora tutti gli ordini mancati (cosa che accade abbastanza spesso) dovrebbero essere sicuramente raccolti. o c'è qualcosa di sbagliato nel mio pensiero.

Penso che sarebbe qualcosa del genere...

Sono ancora alle prime armi, quindi se non ha senso spiegami perché.

Ehi, questa è una buona idea!

Potrei controllare il tempo e se sono trascorsi X secondi o minuti allora uscire dal ciclo.

GRAZIE!

P.S. Questo non era per un EA. Non codifico gli EA.

 
:: non funzionerà con indicatori del genere, anche se fai il loop 1.000.000 di volte, bloccherà tutto il resto, nient'altro che quel loop sarà processato, quando il loop sarà finito allora il tuo terminale continuerà i suoi processi normali prima di un nuovo tick.

:: in quel 1.000.000 loop è inutile controllare/controllare qualcos'altro, ecco perché la funzione sleep() non funziona.

TheRumpledOne:
Ehi, questa è una buona idea!

Potrei controllare il tempo e se sono trascorsi X secondi o minuti allora uscire dal ciclo.

GRAZIE!

P.S. Questo non era per un EA. Io non codifico gli EA.