Buonasera,
dovrei codificare una cosa molto semplice
ma non capisco come fare.
allegato :
se c>a e close >b
buy….
Chiedo cortesemente aiuto.
max
IF indicatorelow >indicatorelow[1] and close > indicatore high THEN
bui 1 contract at market
endif
IF c > a AND close > b THEN
ma il problema è come sono definite a, b e c?
Da dove saltano fuori? Come le hai calcolate?
A occhio e croce mi sembra il mio indicatore https://www.prorealcode.com/prorealtime-indicators/pivot-support-resistance-zones/ (Pivot Support/Resistance Zones), però il mio NON restituisce niente, è solo visivo, se è stato modificato occorre sapere come.
Grazie Roberto,
si è quello…e come si puo’ fare secondo te??
grazie mille
max
C > A, però anche B > C, e che li prezzo rompa al rialzo B.
Te lo modifico in modo che ti restituisca il Prezzo quando trova una Resistenza/Supporto.
Dopodiché quando lo richiami da una tua strategia occorre salvare gli ultimi 3 dati e fare i confronti.
Questo è l’indicatore originale, modificato affinché restituisca il prezzo (Resistenza o Supporto che sia), l’ho chiamato SRtest (non importa che tu lo metta sul grafico, basta che sia stato importato in ProBuilder, sul grafico mettici l’originale):
PivotBAR = 2 //2 bars AFTER pivot
LookBack = 4 //4 bars BEFORE pivot
ResistancePrice = 0
SupportPrice = 0
BarLookBack = PivotBAR + 1
IF low[PivotBAR] < lowest[LookBack](low)[BarLookBack] THEN
IF low[PivotBAR] = lowest[BarLookBack](low) THEN
SupportPrice = low[PivotBAR]
ENDIF
ENDIF
IF high[PivotBAR] > highest[LookBack](high)[BarLookBack] THEN
IF high[PivotBAR] = highest[BarLookBack](high) THEN
ResistancePrice = high[PivotBAR]//high[BarIndex - MyResistance]
ENDIF
ENDIF
RETURN ResistancePrice + SupportPrice
e questa è la strategia che richiama SRtest ed entra a mercato:
DEFPARAM CumulateOrders = false
ONCE PrezzoC = 0
ONCE PrezzoB = 0
ONCE PrezzoA = 0
Prezzo = CALL SRtest
IF Prezzo > 0 THEN
PrezzoA = PrezzoB
PrezzoB = PrezzoC
PrezzoC = Prezzo
ENDIF
Cond = PrezzoB > PrezzoA AND PrezzoB > PrezzoC
IF close CROSSES OVER PrezzoB AND Cond > 0 THEN
BUY 1 Contract At Market
ENDIF
SET TARGET pPROFIT 400
SET STOP pLOSS 100
DEFPARAM CumulateOrders = false/////posizioni cumulative disattivate
ONCE PrezzoC = 0////una sola volta il PrezzoC è falso
ONCE PrezzoB = 0////una sola volta il PrezzoB è falso
ONCE PrezzoA = 0////una sola volta il PrezzoA è falso
Prezzo = CALL SRtest /////Prezzo richiama SRtest....Supportprice e Resistenceprice
IF Prezzo > 0 THEN////Se il prezzo è diventato >0 .....quindi segnala un supporto od una resistenza....allora
PrezzoA = PrezzoB ///il PrezzoA= PrezzoB
PrezzoB = PrezzoC ////il PrezzoB = PrezzoC
PrezzoC = Prezzo////il PrezzoC = Prezzo.......che vuol dire tutto questo???? Perchè li fai tutti uguali???
ENDIF////fine
Cond = PrezzoB > PrezzoA AND PrezzoB > PrezzoC/// la mia condizione è se il PrezzoB è maggiore di Prezzo A e PrezzoB è maggiore di PrezzoC ....come sono collegati con Supportprice e Resistenceprice???
IF close CROSSES OVER PrezzoB AND Cond > 0 THEN////se la close incrocia al rialzo PrezzoB e la mia condizione è vera allora compra.....
BUY 1 Contract At Market
ENDIF
SET TARGET pPROFIT 400
SET STOP pLOSS 10
Salve Roberto,
è qualche giorno che mi scervello ma non capisco la logica sottostante….
provo a leggerti quello che hai scritto per come lo capisco io….o meglio per come non lo capisco.
trovi la mia lettura accanto al codice in grigio.
Se ti va di spigarmela te ne sarei grato.
esiste un manuale prorealcode in italiano….in modo che possa studiarlo??
Grazie tante
Apresto
max
Ma quello che ti ha fatto Roberto non puoi trovarlo….è stato creato su tua richiesta…..
Le righe 2, 3 e 4 sono interpretate correttamente. Servono ad INIZIALIZZARE una variabile, cioè ad assegnargli un valore iniziale certo, in questo caso 0, poi saranno cambiate a piacimento nel codice, quando necessario.
Le righe 5 e 6 sono interpretate correttamente.
Le righe 7, 8 e 9 servono per aggiornare i valori. Supponiamo di avere:
PrezzoC = 12300
PrezzoB = 12400
PrezzoA = 12450
Prezzo = 12200 //nuova resistenza/supporto trovato
dal momento che te ne interessano solo 3 (A, B e C) se fai:
PrezzoC = Prezzo
perdi il valore che C aveva precedentemente, siccome t’interessa mantenere gli ultimi tre devi perdere il più vecchio, che è A, quindi scrivi:
PrezzoA = PrezzoB //A lo sostituiamo con B e diventa il più vecchio
PrezzoB = PrezzoC //B lo sostituiamo con C e diventa quello intermedio
PrezzoC = Prezzo //C lo sostituiamo con il nuovo e diventa il più recente
Non esiste un manuale per spiegarlo, lo impari programmando. E’ la logica che ti porta a fare così per aggiornare i valori. Se hai un’esperienza di programmazione già lo sai, altrimenti devi impararlo leggendo molti codici presenti sul forum, perdendoci molto tempo, magari facendo qualche domanda.
Grazie Molte a tutti per la disponibilità!
max
Buongiorno,
ci sto ancora lavorando su……
come faccio a dire che il prezzoA è valido solo se rsi<30 ???
Grazie mille
Massimo
Aggiungi questa condizione:
If Rsi[14](close) >= 30 then
PrezzoA = 0
Endif
Grazie Roberto,
ancora mi rendo conto di essere lontano dal capire la logica di come ragionare per programmare
comunque non mi arrendo
grazie dell’aiuto
Massimo