drfbParticipant
Average
Buongiorno a tutti e scusate se la domanda sarà davvero banale per tutti, ma da buon neofita sto provando a scrivere qualche riga di comando e riscontro questo problema.
Vorrei che, definito il massimo della candela precedente, potessi entrare a mercato (simulandolo con un drawarrowup ) non appena si verifica la condizione che: il minimo della candela precedente è sotto alla barra inferiore di bollinger e il valore corrente supera il massimo della candela precedente di x pips.
// codizione per il buy
bdown = bollingerdown[20](close)
A = high[1]
c1 = (low[1] < bdown) AND (???? > A+x)
IF c1 THEN
DRAWARROWUP (BARINDEX, LOW-OFFSET) COLOURED (0,255,0)
Su MT4 usavo ASK, ma qui non riesco a capire come farlo? Qualcuno mi può aiutare?
Grazie sin da ora per ogni aiuto e suggerimento
Eccolo:
// codizione per il buy
bdown = bollingerdown[20](close)
A = high[1]
c1 = (low[1] < bdown) AND (close > high[1] + x * pipsize)
IF c1 THEN
DRAWARROWUP (BARINDEX, LOW-OFFSET) COLOURED (0,255,0)
è bene moltiplicare X * PIPSIZE, perché con DAX o SP può andare bene anche così avendo un rapporto 1:1 tra prezzo e pips, ma con altri strumenti, specialmente Forex, dove il rapporto è 1:1/10000 il risultato sarebbe sballato. In ogni caso usando PIPSIZE si lascia che sia il sistema ad occuparsi dell’eventuali conversioni, quando necessarie. In Tal modo il codice è portabile su ogni strumento.
>> 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 🙂
drfbParticipant
Average
Prima di tutto, grazie del suggerimento.
Stavo provando a fare dei test e mettendo close, ho visto che invece di prendermi il punto appena superiore al massimo della candela precedente, mi prende il massimo della candela stessa. Questo è dovuto al fatto che sto facendo le verifiche a mercato chiuso?
Grazie
No, non fa differenza l’orario.
Prova a modificare la riga 5 così:
c1 = (low[1] < bdown) AND (close > (high[1] + (x * pipsize)))
forse è un problema di parentesi e precedenze tra gli operatori.
drfbParticipant
Average
Perfetto. Era una questione di priorità tra gli operatori.
Grazie!
drfbParticipant
Average
Buongiorno a tutti e scusate ancora, ma continuo ad avere una sfasatura di un periodo sull’entrata a mercato. Per semplicità ho provato anche a cambiare indicatore mettendolo uno semplice come l’RSI, ma visto che anche qui con la condizione CROSSES OVER non avevo il risultato voluto, ho provato a scriverla a mano; ma nulla.
valore_rsi= RSI[14](close)
c1 = (valore_rsi> 70) and (valore_rsi[1]<70)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
Possibile che non possa entrare a mercato non appena la rsi passa attraversa i 70 punti ?
Ho visto che si può scrivere anche RSI[14] omettendo il (close). Quale valore torna?
Scusate e grazie
Grazie
>> 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 🙂
Le strategie vengono SEMPRE eseguite alla chiusura della candela, quindi quando alla chiusura le tue condizioni risultano verificate entra.
Quindi la freccia che indica l’entrata la troverai sopra o sotto la candela successiva.
drfbParticipant
Average
Scusatemi se torno sull’argomento, ma continua a non tornarmi la programmazione con la realtà (simulata); ho sbagliato a programmare lo SL? perchè il sistema mi esce a 12160,7 (verificarsi di un’altra condizione) pur avendo impostato lo stoploss a 12133 (low-corsaminima) toccandol poche barre dopo ?
Non so se vi sia utile, ma allego anche foto dove si vedono i parametri.
IF c1 THEN
minimoprec = low[1]
massimoprec = high[1]
corsaminima = atrvalue / 4
sl = minimoprec-corsaminima
tp = massimoprec+atrvalue
BUY 1 CONTRACT AT MARKET
ENDIF
// Stop e target
SET STOP $LOSS sl
SET TARGET $PROFIT tp
Alle righe 11 e 12 devi togliere il simbolo del dollaro “$”, perché stai indicando una differenza espressa in prezzo alle righe 5 e 6, non una somma di denaro (per le quali è richiesto l’uso del $ iniziale).
SET STOP vuole:
- LOSS se indichi una differenza in prezzo (esempio High – Low, oppure Close – Close[1]), quindi SET STOP LOSS (High – Low) oppure SET STOP LOSS 40 * pipsize
- pLOSS se indichi un importo in pips, ad esempio ((High – Low)/PIPSIZE), oppure ((Close – Close[1])/PIPSIZE), oppure una costante numerica tipo 40), quindi SET STOP pLOSS ((High – Low)/PIPSIZE) oppure SET STOP pLOSS 40
- $LOSS se indichi un importo in valuta (usa sempre il simbolo $ anche se hai il conto in Euro o Yen, ecc…), ad esempio SET STOP $LOSS 500 se vuoi rischiare al massimo 500 euro (o comunque 500 unità della valuta del tuo conto)
- %LOSS se indichi una percentuale (senza usare il simbolo %, ad esempio per indicare uno stop loss di massimo 0.8% devi scrivere SET STOP %LOSS 0.8)
drfbParticipant
Average
Sei sempre molto veloce e gentile.
Grazie!
Scusami, ma ho modificato leggermente il mio post per aggiungere qualche esempio. Rileggilo.