Sono un neofita della piattaforma Prorealtime.
Volevo chiedervi un aiuto per creare un codice che esegua questa operazione:
Acquisto :
Se chiusura inferiore ad banda bollinger allora compra apertura il giorno dopo;
Vendi se :
alla prima chiusura > prezzo di ingresso;
vendi comunque dopo 30 giorni
Grazie a chi mi puo’ aiutare.
ProOrder apre ogni posizione SEMPRE all’apertura della barra successiva, per cui con grafici DAILY la cosa è semplice ed automatica.
Ho scritto questo, provato brevemente su Eur/Usd con grafico DAILY:
DEFPARAM CumulateOrders = False //Posizioni multiple disattivate
// definizione la Banda di Bollinger
BBavg = average[20](close) //linea mediana delle BB a 20 periodi
BollUp = BBavg + ((std[20](close)) * 2.0) //Limite superiore BB con deviazione 2.0
BollDn = BBavg - ((std[20](close)) * 2.0) //Limite inferiore BB con deviazione 2.0
// uscire dalle posizioni lunghe se superato (al rialzo) il prezzo d'entrata
IF LongOnMarket AND close > EntryPrice THEN
SELL AT MARKET //uscire da poisioni LONG se prezzo > entrata
ENDIF
// uscire dalle posizioni corte se superato (al ribasso) il prezzo d'entrata
IF ShortOnMarket AND close < EntryPrice THEN
EXITSHORT AT MARKET //uscire da poisioni SHORT se prezzo < entrata
ENDIF
// uscire COMUNQUE dopo "n" giorni
IF (BarIndex - TradeIndex) >= 30 THEN //chiudere ogni posizione dopo 30 giorni (barre daily)
SELL AT MARKET
EXITSHORT AT MARKET
ENDIF
// LONG
IF close < BollDn THEN //Apri posizione se chiusura sotto la BB inferiore
EntryPrice = close
BUY 1 CONTRACT AT MARKET
ENDIF
// SHORT
IF close > BollUp THEN //Apri posizione se chiusura sopra la BB superiore
EntryPrice = close
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Take Profit & Stop Loss
SET TARGET pPROFIT 30
SET STOP pLOSS 15
Per funzionare devi, come ho detto, utilizzarlo con grafici DAILY, se vuoi farlo con grafici inferiori, la cosa si complica perché ProOrder non consente di operare su Timeframe diversi. Per cui, ad esempio, se vuoi usarlo con grafici ad 1 ora puoi verificare, con l’istruzione TIME, quando sei all’ultima barra della giornata. Tieni presente, tuttavia, che in tal caso i risultati di un indicatore sono falsati in quanto avresti condizioni basate su una BB applicata ad un’ora, non sul daily.
Questo almeno fin quando arriverà la nuova versione, forse entro fine anno, che pare sarà slegata dai timeframe.
Grazie per il codice. Sono in vacanza e non ho potuto provarlo. Appena rientro le faccio sapere come va. Grazie.
Buongiorno,
grazie per il codice. L’ho adattato alle mie esigenze e lo posto di seguito:
DEFPARAM CumulateOrders = False //Posizioni multiple disattivate
// definizione la Banda di Bollinger
BBavg = average[10](close) //linea mediana delle BB a 20 periodi
BollDn = BBavg - ((std[10](close)) * 1.5) //Limite inferiore BB con deviazione 2.0
// uscire dalle posizioni lunghe se superato (al rialzo) il prezzo d'entrata
IF LongOnMarket AND close > EntryPrice THEN
SELL AT MARKET //uscire da poisioni LONG se prezzo > entrata
ENDIF
// uscire COMUNQUE dopo "n" giorni
IF (BarIndex - TradeIndex) >= 30 THEN //chiudere ogni posizione dopo 30 giorni (barre daily)
SELL AT MARKET
ENDIF
// LONG
IF close < BollDn THEN //Apri posizione se chiusura sotto la BB inferiore
EntryPrice = close
BUY 10000 cash AT MARKET
ENDIF
// Take Profit & Stop Loss
SET STOP $LOSS 500
Ho visto che la vendita avviene all’apertura del giorno successivo al realizzarsi della condizione.
Come si fa a chiudere la posizione il giorno stesso del verificarsi della condizione ( cioè chiudere alla chiusura della barra corrente se la chiusura è > al prezzo di ingresso ), anche lo stesso giorno ?
Grazie a tutti per l’aiuto.
Ogni ordine, salvo gli ordini Limit (che vengono ripetuti ad ogni barra, cioè chiusi quando chiude la candela e riaperti subito all’apertura della nuova candela) viene SEMPRE eseguito all’apertura della barra successiva, quindi è come se fosse chiuso alla chiusura della barra corrente, tranne forse qualche millisecondo.
NON è possibile, invece, eseguire qualunque cosa mentre la barra è in corso, questo almeno finché non sarà disponibile (forse entro fine anno) la nuova piattaforma slegata ai timeframe (detta anche multitimeframe).
> Inserite il segno di spunta all’interno della casella sul vostro profilo, per aggiornare il vostro paese. <<
>> Per chiarezza dei messaggi sul Forum di Prorealcode, separate le parti del vostro codice usando il pulsante per l’inserimento del testo del codice. <<
Grazie ragazzi.
@roberto buon lavoro! come di solito 😉