Forums › ProRealTime forum Italiano › Supporto ProScreener › Proscreener Morning e Evening Star › Reply To: Proscreener Morning e Evening Star
Ho trovato due errori logici nelle variabili, sia long che short, corrsipondenti ai numeri S4, S5, L4 ed L5 in ciascun TF.
Ma, principalmente, ho trovato l’errore che non permetteva di utilizzare 10 barre ed era alla riga S2 ed L2, di ogni TF, dove c’è SUMMATION, l’ultimo riferimento a destra doveva essere [3] (e non [1] come avevo messo).
Adesso sembra funzionare, nella foto allegata ho evidenziato un titolo dove il segnale è sia su 1 ora che su 5 minuti.
Questo è il codice aggiornato:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
TIMEFRAME(default) NumeroBarre = 10 // TIMEFRAME(Daily) Rialzista = close > open Ribassista = close < open Body = abs(close - open) // SHORT S1 = Rialzista[2] AND Ribassista[1] AND Ribassista S2 = close[2] > highest[NumeroBarre](high[3]) S3 = body[1] < Body[2] S4 = high < high[2] S5 = close < close[1] // LONG L1 = Ribassista[2] AND Rialzista[1] AND Rialzista L2 = close[2] < lowest[NumeroBarre](low[3]) L3 = body[1] < Body[2] L4 = low > low[2] L5 = close > close[1] Risultato = 90000 IF L1 AND L2 AND L3 AND L4 AND L5 THEN Risultato = 10000 ELSIF S1 AND S2 AND S3 AND S4 AND S5 THEN Risultato = 20000 ENDIF IF Risultato = 90000 THEN Ris = Risultato[1] ELSE Ris = Risultato ENDIF // TIMEFRAME(4 hour) RialzistaA = close > open RibassistaA = close < open BodyA = abs(close - open) // SHORT S1a = RialzistaA[2] AND RibassistaA[1] AND RibassistaA S2a = close[2] > highest[NumeroBarre](high[3]) S3a = bodyA[1] < BodyA[2] S4a = high < high[2] S5a = close < close[1] // LONG L1a = RibassistaA[2] AND RialzistaA[1] AND RialzistaA L2a = close[2] < lowest[NumeroBarre](low[3]) L3a = bodyA[1] < BodyA[2] L4a = low > low[2] L5a = close > close[1] RisultatoA = 9000 IF L1a AND L2a AND L3a AND L4a AND L5a THEN RisultatoA = 1000 ELSIF S1a AND S2a AND S3a AND S4a AND S5a THEN RisultatoA = 2000 ENDIF IF RisultatoA = 9000 THEN RisA = RisultatoA[1] ELSE RisA = RisultatoA ENDIF // TIMEFRAME(1 hour) RialzistaB = close > open RibassistaB = close < open BodyB = abs(close - open) // SHORT S1b = RialzistaB[2] AND RibassistaB[1] AND RibassistaB S2b = close[2] > highest[NumeroBarre](high[3]) S3b = bodyC[1] < BodyC[2] S4b = high < high[2] S5b = close < close[1] // LONG L1b = RibassistaB[2] AND RialzistaB[1] AND RialzistaB L2b = close[2] < lowest[NumeroBarre](low[3]) L3b = bodyB[1] < BodyB[2] L4b = low > low[2] L5b = close > close[1] RisultatoB = 900 IF L1b AND L2b AND L3b AND L4b AND L5b THEN RisultatoB = 100 ELSIF S1b AND S2b AND S3b AND S4b AND S5b THEN RisultatoB = 200 ENDIF IF RisultatoB = 900 THEN RisB = RisultatoB[1] ELSE RisB = RisultatoB ENDIF // TIMEFRAME(15 minute) RialzistaC = close > open RibassistaC = close < open BodyC = abs(close - open) // SHORT S1c = RialzistaC[2] AND RibassistaC[1] AND RibassistaC S2c = close[2] > highest[NumeroBarre](high[3]) S3c = bodyC[1] < BodyC[2] S4c = high < high[2] S5c = close < close[1] // LONG L1c = RibassistaC[2] AND RialzistaC[1] AND RialzistaC L2c = close[2] < lowest[NumeroBarre](low[3]) L3c = bodyC[1] < BodyC[2] L4c = low > low[2] L5c = close > close[1] RisultatoC = 90 IF L1c AND L2c AND L3c AND L4c AND L5c THEN RisultatoC = 10 ELSIF S1c AND S2c AND S3c AND S4c AND S5c THEN RisultatoC = 20 ENDIF IF RisultatoC = 90 THEN RisC = RisultatoC[1] ELSE RisC = RisultatoC ENDIF // TIMEFRAME(5 minute) RialzistaD = close > open RibassistaD = close < open BodyD = abs(close - open) // SHORT S1d = RialzistaD[2] AND RibassistaD[1] AND RibassistaD S2d = close[2] > highest[NumeroBarre](high[3]) S3d = bodyD[1] < BodyD[2] S4d = high < high[2] S5d = close < close[1] // LONG L1d = RibassistaD[2] AND RialzistaD[1] AND RialzistaD L2d = close[2] < lowest[NumeroBarre](low[3]) L3d = bodyD[1] < BodyD[2] L4d = low > low[2] L5d = close > close[1] RisultatoD = 9 IF L1d AND L2d AND L3d AND L4d AND L5d THEN RisultatoD = 1 ELSIF S1d AND S2d AND S3d AND S4d AND S5d THEN RisultatoD = 2 ENDIF IF RisultatoD = 9 THEN RisD = RisultatoD[1] ELSE RisD = RisultatoD ENDIF // TIMEFRAME(default) x = Ris + RisA + RisB + RisC + RisD IF x = 99999 THEN x = 0 ENDIF SCREENER[x](x AS "D41XV") //D=dayly, 4=4h, 1=1h, X=15 minuti (X è la cifra di sinistra in numeri romani),V=5 in numeri romani (per ogni TF restituirà 1 (Rialzo) or 2 (Ribasso) |
funziona anche la durata del segnale, di due barre (quella in corso + quella precedente), per cui può capitare che adesso sul grafico non vedi il segnale ma c’era la barra precedente. Al fine di facilitarti il compito ti ho fatto questo indicatore:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
NumeroBarre = 10 Rialzista = close > open Ribassista = close < open Body = abs(close - open) // SHORT S1 = Rialzista[2] AND Ribassista[1] AND Ribassista S2 = close[2] > highest[NumeroBarre](high[3]) S3 = body[1] < Body[2] S4 = high < high[2] S5 = close < close[1] // LONG L1 = Ribassista[2] AND Rialzista[1] AND Rialzista L2 = close[2] < lowest[NumeroBarre](low[3]) L3 = body[1] < Body[2] L4 = low > low[2] L5 = close > close[1] Risultato = 0 IF L1 AND L2 AND L3 AND L4 AND L5 THEN Risultato = 1 ELSIF S1 AND S2 AND S3 AND S4 AND S5 THEN Risultato = -1 ENDIF RETURN Risultato AS "Risultato",0 AS "Zero" |