Entrare a mercato automaticamente sulle NEWS

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
Rispondi
LucaMQL4
Messaggi: 91
Iscritto il: 15/02/2016, 23:11

Entrare a mercato automaticamente sulle NEWS

Messaggio da LucaMQL4 »

Vorrei sapere come creare un expert advisor che attivi il proprio codice in ore da me prefissate.
Poi vorrei sapere come fare per indicare una determinata candela , in questo caso quella della notizia in maniera fissa, ovvero non dire CLose[1] quindi la candela appena chiusa che varia col variare del tempo ma ad esempio Close[CandelaNotizia] e la stessa cosa non solo indicando un determinato tempo di una determinata candela ma anche indicando un determinato tempo di un indicatore, ad esempio iMomentum[CandelaNotizia] o comunque in un determinato tempo.
Avatar utente
carlo10
Messaggi: 4262
Iscritto il: 08/05/2014, 21:17

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da carlo10 »

Ciao Luca,

le ore da te prefissate potrebbero essere ad esempio dei parametri esterni di tipo datetime e nel codice potresti avere un controllo che permetta di eseguire le tue logiche solo all'interno di quell'intervallo di date.

Per capire qual è invece la candela di un determinato istante puoi utilizzare la funzione ibarshift(). Con questa ottieni il numero di candela a cui fare riferimento e puoi utilizzare questo valore come shift dell iMomentum().
LucaMQL4
Messaggi: 91
Iscritto il: 15/02/2016, 23:11

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da LucaMQL4 »

Grazie Carlo,

creo questa variabile esterna facendo in modo ogni volta di indicare la candela notizia esternamente
extern datetime OrarioNotizia = D'23:00';

ibarshift nella ontick
CN = iBarShift(Symbol(),PERIOD_CURRENT,OrarioNotizia,true);

poi a seguito faccio una cosa del genere:
Open[CN] - Close[CN]

ma mi da l'errore in tutti gli shift CN dicendo:
'CN' - integer expression expected
Avatar utente
carlo10
Messaggi: 4262
Iscritto il: 08/05/2014, 21:17

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da carlo10 »

Prova a dare false come ultimo parametro della iBarShift in questo modo ti restituirà la candela più vicina e non -1 in caso non coincida esattamente l'orario.

Fammi sapere se questo risolve.
LucaMQL4
Messaggi: 91
Iscritto il: 15/02/2016, 23:11

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da LucaMQL4 »

Si hai ragione, su questo fattore ho risolto anche se l'expert fa capricci, ovvero non mi apre gli ordini a mercato.
grazie mille :)
LucaMQL4
Messaggi: 91
Iscritto il: 15/02/2016, 23:11

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da LucaMQL4 »

if (
(High[CPN] - Low[CPN]) <= (Open[CN] - Close[CN]) &&
((Close[CN] - Low[CN]) <= (Open[CN] - Close[CN])*0.5) &&
((High[CN] - Open[CN]) <= (Open[CN] - Close[CN])*0.5) )
{OrderSend.......

facendo in questo modo non mi apre la ordersend. sai dirmi il perchè?
Avatar utente
carlo10
Messaggi: 4262
Iscritto il: 08/05/2014, 21:17

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da carlo10 »

Ciao Luca,

per questi casi in cui non si riesce a capire il motivo per cui non si entra all'interno di una condizione è quello di inserire sopra la condizione un Print con il valore delle variabili.

Una volta che avrai stampato il valore di queste variabili a run-time capirai sicuramente il motivo per cui non si entra in condizione.

A livello logico non vedo errori che possano pregiudicare l'ingresso nell'if quindi è necessario verificare come sono valorizzate le variabili.
LucaMQL4
Messaggi: 91
Iscritto il: 15/02/2016, 23:11

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da LucaMQL4 »

probabilmente ho trovato il problema ed è il ciclo for, ovvero io voglio che dopo 3 candele dalla candela notizia mi cambi una variabile, me la cambi nel senso che me la esamina dalla terza candela in poi fino a quando non trova la mia condizione e mi apre l'ordine.
io ho fatto in questo modo:
ho dato i valori alla variabili:
//candela notizia
int CN=iBarShift(Symbol(),PERIOD_CURRENT,OrarioNotizia,false);
//candela prima della notizia
int CPN= CN+1;
//candela di entrata
int C_Esaminata = CN-3;

poi ho fatto il ciclo for, probabilmente sbagliato, in modo che la candela esaminata (C_Esaminata) vada avanti da 3 fino a quando non trova la sua condizione:
for(int i = CN-3; i > C_Esaminata; i--)
{............
Avatar utente
carlo10
Messaggi: 4262
Iscritto il: 08/05/2014, 21:17

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da carlo10 »

Si il ciclo for non mi piace. Poniamo ad esempio che la candela della news sia la candela 5, avremo:

CN = 5
CPN = 6
C_Esaminata = 2

Con il for gli stai dicendo:

for(int i = 2; i > 2; i--)

Che tradotto in linguaggio umano significa: per i che vale 2 e info a quando i resta maggiore di 2 allora entra nel ciclo. La condizione non sarà mai verificata pertanto non si entra mai nel ciclo.

Probabilmente il ciclo va impostato in questo modo:
for(int i = C_Esaminata; i >= CN; i++)
LucaMQL4
Messaggi: 91
Iscritto il: 15/02/2016, 23:11

Re: Entrare a mercato automaticamente sulle NEWS

Messaggio da LucaMQL4 »

niente non va... la candela esaminata che dovrebbe cambiare valore col ciclo for non cambia mai resta sempre la terza candela dopo la notizia, io avevo fatto i-- perche come sai bene andando avanti nel tempo le candele sono -1 -2 -3 .. ecc ecc
Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite