Salve ho programmato questo codice, ma purtroppo per come è scritto adesso la posizione viene aperta non alla candela successiva a quella in cui si verificano tutte le condizioni, ma a quella dopo ancora, praticamente una candela dopo. Io vorrei che la posizione venisse aperta alla candela immediatamente successiva a quella in cui si verificano tutte le condizioni.
Qualcuno può darmi una dritta?
grazie mille a tutti
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
c1 = (close[1] < close[2])
c2 = (close[1] < close[3])
c3 = (close[2] > close[3])
indicator1 = RSI[2](close)
c4 = (indicator1[1] < indicator1[2])
indicator2 = RSI[2](close)
c5 = (indicator2[1] > indicator2[3])
indicator3 = RSI[2](close)
c6 = (indicator3[2] > indicator3[3])
indicator4, ignored = CALL "my ADX R"
c7 = (indicator4[1] > indicator4[2])
c8 = (close[1] < open[1])
c9 = (close[2] > open[2])
c10 = (close[3] < open[3])
IF c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 AND c8 AND c9 AND c10 THEN
BUY 1 SHARE AT MARKET
ENDIF
// Stop e target
SET STOP pLOSS 20
SET TARGET pPROFIT 20
Per scrivere il codice , utilizza il pulsante <> “insert PRT code”, per rendere il codice più comprensibile. Grazie.
Non posso provarlo perché manca il codice dell’indicatore “my ADX R”, ma credo non sia necessario, perché quando IF viene eseguito e risulta vero, per cui esegue il BUY non può che eseguirlo allo stesso momento, specialmente essesndo a mercato.
Ogni strategia viene eseguita alla chiusura di ogni candela e, se c’è un’operazione da aprire, l’apre subito prima che inizi la candela successiva! Non riesco a scorgere niente che rimandi l’apertura di una candela.
Su quale strumento e TF lo esegui?
Grazie Roberto per la risposta,
lo strumento è EUR/USD time frame 6H. L’indicatore my ADX R è fondamentalmente quello di default con una piccola variazione sui parametri numerici.
Il codice è:
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
c1 = (close[1] < close[2])
c2 = (close[1] < close[3])
c3 = (close[2] > close[3])
indicator1 = RSI[2](close)
c4 = (indicator1[1] < indicator1[2])
indicator2 = RSI[2](close)
c5 = (indicator2[1] > indicator2[3])
indicator3 = RSI[2](close)
c6 = (indicator3[2] > indicator3[3])
indicator4, ignored = CALL "my ADX R"
c7 = (indicator4[1] > indicator4[2])
c8 = (close[1] < open[1])
c9 = (close[2] > open[2])
c10 = (close[3] < open[3])
IF c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 AND c8 AND c9 AND c10 THEN
BUY 1 SHARE AT MARKET
ENDIF
// Stop e target
SET STOP pLOSS 20
SET TARGET pPROFIT 20
Probabilmente il problema è nella scrittura forse data dal fatto che ho utilizzato lo strumento di programmazione rapida.
La strategia è abbastanza semplice.
Le ultime tre candele devono essere rispettivamente: la terzultima ribassista, la penultima rialzista, l’ultima di nuovo ribassista e che chiuda al di sotto della terzultima. Se poi si verifica anche una divergenza tra RSI e prezzi (sull’ultima candela), si prospetta una inversione (ipotesi al rialzo), l’ADXR lo conferma se è in crescita per l’ultima candela. VEDI jpg allegata.
il my ADXR è:
period = 6
myIndicator = ADXR[period]
mySignal = average(myIndicator)[period/2]
RETURN myIndicator coloured(225,27,195) AS "ADXR", mySignal AS "laggy ADXR"
grazie ancora
Tieni presente che:
- l’ultima candela chiusa è la [0]
- la penultima è la [1]
- la terzutima è la [2]
Mi sa che il problema può essere quello.
Si grazie Roberto, il problema era quello!
grazie ancora