Aprire posizioni a mercato ad un orario fisso!
Aprire posizioni a mercato ad un orario fisso!
Salve a tutti,
da poco mi sto avvicinado al mondo degli EA e quindi della programmazione. Vi chiedo un aiutino per poter iniziare il mio percorso in questo mondo. Nel mio primo progetto evevo intenzione di aprire una posizione a mercato (long o short da decidere) ogni giorno dal lunedì al venerdì alla stessa ora per poi andare a stop loss oppure take profit prestabiliti. Magari poi, per ampliare il sistema, aggiungere altre posizioni nell'arco della giornata sempre ad orari fissi indipendentemente dall'andamento del prezzo e da indicatori/oscillatori vari. Immagino che non è facile trovare spunti per un progetto del genere perchè, vi chiederete, chi è quel "pazzo" che apre posizioni sistematicamente ad un orario fisso senza controllare l'andamento del prezzo? Avete ragione! Ho fatto ricerche nel web ma non sono riuscito a trovare spunti significativi che potessero riguardare aperture di posizioni ad orari prestabiliti. Forse non ho inserito le parole chiave giuste? Chi mi può aiutare?
Ringrazio anticipatamente
da poco mi sto avvicinado al mondo degli EA e quindi della programmazione. Vi chiedo un aiutino per poter iniziare il mio percorso in questo mondo. Nel mio primo progetto evevo intenzione di aprire una posizione a mercato (long o short da decidere) ogni giorno dal lunedì al venerdì alla stessa ora per poi andare a stop loss oppure take profit prestabiliti. Magari poi, per ampliare il sistema, aggiungere altre posizioni nell'arco della giornata sempre ad orari fissi indipendentemente dall'andamento del prezzo e da indicatori/oscillatori vari. Immagino che non è facile trovare spunti per un progetto del genere perchè, vi chiederete, chi è quel "pazzo" che apre posizioni sistematicamente ad un orario fisso senza controllare l'andamento del prezzo? Avete ragione! Ho fatto ricerche nel web ma non sono riuscito a trovare spunti significativi che potessero riguardare aperture di posizioni ad orari prestabiliti. Forse non ho inserito le parole chiave giuste? Chi mi può aiutare?
Ringrazio anticipatamente
Re: Aprire posizioni a mercato ad un orario fisso!
Ciao, se ti basta un semplice spunto e se ho capito bene vorresti che l'EA all'ora x aprisse un ordine con stop loss e take profit impostati, queste due righe andrebbero bene?
Codice: Seleziona tutto
if(TimeHour(TimeCurrent())>=OraX)
{
if(OrdersTotal()==0)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,stoploss,takeprofit,"My order",MagicNumber,0,clrGreen);
if(ticket<0)
{
Print("OrderSend failed with error #",GetLastError());
}
else
Print("OrderSend placed successfully");
}
}
Re: Aprire posizioni a mercato ad un orario fisso!
Ti ringrazio della risposta!
if(TimeHour(TimeCurrent())>=OraX)
In questa riga c'è scritto che quando l'ora corrente è maggiore uguale a l'ora X (che sarebbe una variabile che dovrei creare e dargli un valore) allora scatta l'OrderSend, giusto? Come mai scrivi >= e non solo = ? Per il fatto che se l'odine non avvenisse immediatamente a quell'orario, esso può avvenire anche negli istanti di tempo successivi?
if(TimeHour(TimeCurrent())>=OraX)
In questa riga c'è scritto che quando l'ora corrente è maggiore uguale a l'ora X (che sarebbe una variabile che dovrei creare e dargli un valore) allora scatta l'OrderSend, giusto? Come mai scrivi >= e non solo = ? Per il fatto che se l'odine non avvenisse immediatamente a quell'orario, esso può avvenire anche negli istanti di tempo successivi?
Re: Aprire posizioni a mercato ad un orario fisso!
Giusta osservazione, ho solo fatto un copia incolla che poi ho modificato per lo scopo da un codice che a partire da una certa ora controlla delle condizioni, sostituendo >= con = = il controllo avviene solo durante l'ora X mentre così com'è il controllo avviene sino a mezzanotte.
Re: Aprire posizioni a mercato ad un orario fisso!
Sulla variabile Orax va impostato un valore oo:mm (ciaoè ora:minuti) oppure un valore int? Se è int dovrei creare quello dell'ora e anche dei muniti altrimenti l' OrderSend è attuabile solo allo scoccare dell'ora precisa! Giusto?
Re: Aprire posizioni a mercato ad un orario fisso!
Così com'è OraX è un valore int e il controllo avviene da OraX:00 fino a OraX:59, Ordersend viene eseguita se OrdersTotal()==0.
Re: Aprire posizioni a mercato ad un orario fisso!
Ti faccio un esempio. Se io volessi aprire una posizione long alle 9:30 del mattino del lunedì, del martedì, del mercoledì, del giovedì, del venerdì.
Come inserisco in OraX (che è un valore int) 9:30 ?
Scusami ma esssendo un neofita sono poco elastico a questi ragionamenti.
Come inserisco in OraX (che è un valore int) 9:30 ?
Scusami ma esssendo un neofita sono poco elastico a questi ragionamenti.
Re: Aprire posizioni a mercato ad un orario fisso!
Ok, se vuoi eseguire un'istruzione all'ora X e al minuto Y:
accertandoti con un controllo che l'istruzione venga eseguita solo una volta o il numero di volte che serve a te e non innumerevoli volte nell'arco di un minuto...
Codice: Seleziona tutto
if(TimeHour(TimeCurrent())==OraX && TimeMinute(TimeCurrent()) == MinutoY)
{
//...
}
Re: Aprire posizioni a mercato ad un orario fisso!
Ho provato ma non apre nessuna posizione. Nel diario di metatrader mi scrive OrderSend error 130. Ho visto che questo errore corrisponde a quando imposti male lo stop loss. Ho provato a non mettere lo stop loss e take profit inserendo 0 in tutti e due i campi ma l'errore rimane.
Questa è la stringa che da l'errore "OrderSend error 130"
result=OrderSend(Symbol(),OP_BUY,Lotti,Ask,0,0,0,"Compra",MagicNumber);
Questa è la stringa che da l'errore "OrderSend error 130"
result=OrderSend(Symbol(),OP_BUY,Lotti,Ask,0,0,0,"Compra",MagicNumber);
Re: Aprire posizioni a mercato ad un orario fisso!
Impostando stop loss e take profit a 0 non so perché restituisca errore 130... Negli altri casi può dipendere da come dichiari lo stop loss. Io utilizzo una variabile esterna di tipo int ma stop loss e take profit inseriti nella funzione OrderSend sono dei prezzi, cioè double. Quindi se per esempio volessi utilizzare uno Stop di 50 pips:
all'interno di OnInit() definisco il point per poter utilizzare l'expert su diversi cambi:
e prima di utilizzare OrderSend definisco gli stop loss:
Codice: Seleziona tutto
extern int StopLoss=50;
Codice: Seleziona tutto
if(Digits==3 || Digits==5)
MyPoint=Point*10;
else
MyPoint=Point;
Codice: Seleziona tutto
sl_buy=Bid-MyPoint*StopLoss;
sl_sell=Ask+MyPoint*StopLoss;
Chi c’è in linea
Visitano il forum: Nessuno e 0 ospiti