OrderSend Expiration Time

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
Avatar utente
carlo10
Messaggi: 4261
Iscritto il: 08/05/2014, 21:17

Re: OrderSend Expiration Time

Messaggio da carlo10 »

Ciao Paolino,

perchè dici che te lo calcola a 0? Che evidenza hai di questo? Non mi pare che stampi questo valore da qualche parte.

Riguardo la ObjectDeleteAll ti cancella tutti gli oggetti sul grafico. Se la metti all'interno del onDeinit te li cancella solo se rimuovi l'EA dal grafico. Quindi a seconda dell'utilizzo che ti serve la devi mettere nel punto corretto del codice. Se è un'operazione che vuoi fare manualmente ogni tanto allora ti puoi creare uno script che eseguirai saltuariamente. Se invece non vuoi vedere mai oggetti sul grafico allora la puoi inserire all'interno dell' onTimer oppure dell onStart a seconda di quale utilizzi.
Paolino
Messaggi: 512
Iscritto il: 05/04/2015, 21:57

Re: OrderSend Expiration Time

Messaggio da Paolino »

Ciao carlo10,
invece di usare la funzione Print ho usato Comment, così me lo stampa sul grafico. Proverò ad utilizzare la funzione ObjectsDeleteAll(); secondo i tuoi suggerimenti.
Grazie ancora.
Ciao
Paolo
Avatar utente
carlo10
Messaggi: 4261
Iscritto il: 08/05/2014, 21:17

Re: OrderSend Expiration Time

Messaggio da carlo10 »

Hai ragione non avevo guardato attentamente.

Ma il problema del magic number a 0 ce l'hai anche se attacchi l'EA a quei 2 soli grafici?
Avatar utente
carlo10
Messaggi: 4261
Iscritto il: 08/05/2014, 21:17

Re: OrderSend Expiration Time

Messaggio da carlo10 »

Se lo attacco al grafico a me lo calcola correttamente:
NZDJPYH1.png
NZDJPYH1.png (25.37 KiB) Visto 703 volte
Paolino
Messaggi: 512
Iscritto il: 05/04/2015, 21:57

Re: OrderSend Expiration Time

Messaggio da Paolino »

Ciao carlo10,
ho verificato e assegna il valore 0 al Magic Number anche se attacco l'EA solo sui 2 grafici in questione (o anche a uno solo): NZDJPY e CADJPY. Non è comunque un grosso problema (spero ...)in quanto lo fa solo con questo EA mentre con gli altri funziona correttamente.
Ho invece riscontrato che l'EA che ho postato l'altro giorno 0-EA-PROVE-ORARIO, tra le tante prove che ho fatto in questi giorni, funziona quasi sempre perfettamente. In alcuni casi, però, nell'orario specificato, anzichè inserire 1 ordine Buy Stop e 1 Sell Stop ne inserisce diversi in rapida successione con i prezzi molto vicini tra loro (considerando che lo attacco a 18 grafici dovrebbe inserirne 36, invece me ne ritrovo in pochi secondi oltre 100). In questi casi sbaglia il conteggio degli ordini (il contatore segna sempre 1 quando in realtà sono 3 - 4 per tipo, il totale complessivo invece risulta corretto). Direi che non tiene conto dei controlli if((NumeroOrdiniBuy() + NumeroOrdiniBuyStop())==0) e if(candleHasOrdersB(MagicNumberB) == FALSE). Oltre tutto, quando viene eseguito un ordine sul grafico viene disegnata una freccia blu o rossa, e, anche se gli ordini inseriti sono diversi di freccia ne disegna sempre solo 1 per tipo. Mi pare di aver capito che succede quando il prezzo BuyStop o SellStop è molto vicino al prezzo Ask o Bid (ho messo apposta double perc = 0.02;) e in quel momento c'è molta volatilità e pertanto viene eseguito quasi immediatamente. Mi indicheresti, per cortesia, come risolvere questo problema?
Ti ringrazio anticipatamente e ti saluto.
Paolo

P.S.: la funzione ObjectsDeleteAll() ora funziona secondo le mie intenzioni, ri grazie.
Avatar utente
carlo10
Messaggi: 4261
Iscritto il: 08/05/2014, 21:17

Re: OrderSend Expiration Time

Messaggio da carlo10 »

Paolino ha scritto:In alcuni casi, però, nell'orario specificato, anzichè inserire 1 ordine Buy Stop e 1 Sell Stop ne inserisce diversi in rapida successione con i prezzi molto vicini tra loro (considerando che lo attacco a 18 grafici dovrebbe inserirne 36, invece me ne ritrovo in pochi secondi oltre 100). In questi casi sbaglia il conteggio degli ordini (il contatore segna sempre 1 quando in realtà sono 3 - 4 per tipo, il totale complessivo invece risulta corretto). Direi che non tiene conto dei controlli if((NumeroOrdiniBuy() + NumeroOrdiniBuyStop())==0) e if(candleHasOrdersB(MagicNumberB) == FALSE). Oltre tutto, quando viene eseguito un ordine sul grafico viene disegnata una freccia blu o rossa, e, anche se gli ordini inseriti sono diversi di freccia ne disegna sempre solo 1 per tipo. Mi pare di aver capito che succede quando il prezzo BuyStop o SellStop è molto vicino al prezzo Ask o Bid (ho messo apposta double perc = 0.02;) e in quel momento c'è molta volatilità e pertanto viene eseguito quasi immediatamente. Mi indicheresti, per cortesia, come risolvere questo problema?
Questo non dovrebbe mai succedere se è programmato correttamente dato che le esecuzioni dello start vengono eseguite sequenzialmente e non in parrallelo, ci deve essere un baco. Guardando il codice a prima occhiata però non riesco ad individuarlo.
Paolino
Messaggi: 512
Iscritto il: 05/04/2015, 21:57

Re: OrderSend Expiration Time

Messaggio da Paolino »

Ciao carlo10,
che c'è un baco significa che "un qualcosa" interferisce col funzionamento dell'EA facendogli fare delle cose che non dovrebbe? Tra l'altro nei giorni passati un paio di volte mi è successo alla sera di aver cancellato manualmente tutti gli ordini eseguiti e pendenti e tolto tutti gli EA dai grafici, lasciando Auto Trading attivo e al mattino ritrovarmi con degli ordini eseguiti e pendenti pur non essendoci nessun EA attivato (sui grafici non c'erano nomi di EA ne tanto meno faccine sorridenti). La prima volta mi era venuto il dubbio di aver dimenticato di cancellato gli ordini la sera prima, ma la seconda non ne ho la certezza assoluta ma quasi. Ti risulta che una eventualità del genere può capitare?
Grazie
Ciao
Paolo
Paolino
Messaggi: 512
Iscritto il: 05/04/2015, 21:57

Re: OrderSend Expiration Time

Messaggio da Paolino »

Ciao carlo10,
oggi ho verificato "in diretta" che pur non essendoci EA attaccati ai grafici, sono stati inseriti diversi ordini, più di 100, e nella pagina "Consiglieri" faceva riferimento all'EA 0-EA-PROVE-ORARIO. Su 1 dei grafici c'era attaccato un altro EA, che opera in modo molto diverso dal primo, ma si è attivato usando però i criteri dell'EA 0-EA-PROVE-ORARIO. A questo punto mi viene il dubbio che tutti i più recenti malfunzionamenti che si verificavano erano dovuti alla vecchia versione, magari rimasta attiva ma invisibile e non a quella che avevo appena modificato, che magari funzionava correttamente. Ho anche provato ad attaccare a diversi grafici l'EA 0-EA-PROVE-ORARIO nell'ultima versione (quella per intenderci che hai visto e non hai rilevato errori di programmazione) ed ha funzionato correttamente. Se dovessi reinstallare MT4 risolverei il problema?
Grazie ancora per il tempo che mi hai dedicato.
Ciao
Paolo
Avatar utente
carlo10
Messaggi: 4261
Iscritto il: 08/05/2014, 21:17

Re: OrderSend Expiration Time

Messaggio da carlo10 »

Sicuramente c'è qualcosa di strano. Ti capita questo nonostante tutti i grafici siano chiusi e dopo un riavvio di metatrader?

Il fatto di reinstallare di solito è l'ultima spiaggia ma visto che costa poco tempo potresti provare.
Paolino
Messaggi: 512
Iscritto il: 05/04/2015, 21:57

Re: OrderSend Expiration Time

Messaggio da Paolino »

Ciao carlo10,
no, i grafici non li avevo chiusi e non avevo riavviato MetaTrader, avevo solo rimosso gli EA dai grafici lasciando attivato l'AutoTrading. Per adesso ho cancellato il conto in questione e proverò ad usarne uno nuovo.
Ciao
Paolo
Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti