Transformer un indicateur de franchissement support/résistance en screener
Forums › ProRealTime forum Français › Support ProScreener › Transformer un indicateur de franchissement support/résistance en screener
- This topic has 3 replies, 2 voices, and was last updated 5 months ago by Tobas.
-
-
05/27/2024 at 2:02 PM #233093
Bonjour,
J’aimerais transformer un indicateur de franchissement support/résistance en screener. Le code que je vais mettre est juste une partie que je souhaite ajouter à un plus gros screener.
J’ai dans un premier temps écrit le code pour qu’il fonctionne en indicateur puis essayer de le mettre sous forme de screener mais il ne fonctionne pas du tout et me donne de fausse alerte et souvent aucune alerte. Je ne comprend pas d’où vient l’erreur alors que j’ai simplement recopier le code de l’indicateur de base.
Indicateur franchissement supports/résistance1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768DEFPARAM CALCULATEONLASTBARS=1000p=1//////////////////////////////Average candle size//////////////////////////////x = 96XGreen = 0GreenSUM = 0For i = 0 To x-1 DoGreenSUM = GreenSUM + Range[i]XGreen = XGreen + 1A = GreenSUM / XGreennext///////////////////////////////////////////////length1=70lenght2=50/////////////////Resistance ///////////////////////////if close>=highest[length1](close) then$TOPD[lastset($TOPA)+1]=Date$TOPH[lastset($TOPA)+1]=24-Hourt1 = 0top1 = closeelsetop1 = top1t1 = t1+1if t1>lenght2 and t1<lenght2+2 then$TOPy[t+1] = top1$TOPx[t+1] = barindex$TopA[t+1]= At=t+1endifENDIF/////////////////Support ///////////////////////////if close<=lowest[length1](close) then$BOTD[lastset($BOTA)+1]=Date$BOTH[lastset($BOTA)+1]=24-Hourb1 = 0bot1 = closeelsebot1 = bot1b1 = b1+1if b1>lenght2 and b1<lenght2+2 then$boty[r+1] = bot1$botx[r+1] = barindex$BotA[r+1]= Ar=r+1endifendiffor i=r downto max(0,r-30) doif (low[p] < $BOTy[i] and high[p] > $BOTy[i]) or (low[p] < ($boty[i]+($BotA[i]*0.1)) and high[p] > ($BOTy[i]-($BotA[i]*0.2))) or (high[p] > $TOPy[i] and low[p] < $TOPy[i]) or (high[p] > ($TOPy[i]-($TopA[i]*0.05)) and low[p] < ($TOPy[i]+$TOPA[i]*0.2))thenDRAWARROWup(barindex[1],high[1]) COLOURED("grey")ENDIFnext//////////////Resistances lenght in day (3 days) ////////////////for d = 0 to lastset($topy) doif (date-$TOPD[d]) >=3 and (HOUR+$TOPH[d])>24 THEN$TOPY[d]=0endifnext//////////////Supports lenght in day (3 days) ////////////////for o = 0 to lastset($boty) doif (date-$BOTD[o]) >=3 and (HOUR+$BOTH[o])>24 THEN$BOTY[o]=0endifnextreturnVoici ensuite la forme screener que j’ai essayé de créer.
Screener franchissement supports/résistances1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768p=1//////////////////////////////Average candle size//////////////////////////////x = 96XGreen = 0GreenSUM = 0For i = 0 To x-1 DoGreenSUM = GreenSUM + Range[i]XGreen = XGreen + 1A = GreenSUM / XGreennext///////////////////////////////////////////////length1=70lenght2=50/////////////////Resistance ///////////////////////////if close>=highest[length1](close) then$TOPD[lastset($TOPA)+1]=Date$TOPH[lastset($TOPA)+1]=24-Hourt1 = 0top1 = closeelsetop1 = top1t1 = t1+1if t1>lenght2 and t1<lenght2+2 then$TOPy[t+1] = top1$TOPx[t+1] = barindex$TopA[t+1]= At=t+1endifENDIF/////////////////Support ///////////////////////////if close<=lowest[length1](close) then$BOTD[lastset($BOTA)+1]=Date$BOTH[lastset($BOTA)+1]=24-Hourb1 = 0bot1 = closeelsebot1 = bot1b1 = b1+1if b1>lenght2 and b1<lenght2+2 then$boty[r+1] = bot1$botx[r+1] = barindex$BotA[r+1]= Ar=r+1endifendiffor i=r downto max(0,r-30) doif (low[p] < $BOTy[i] and high[p] > $BOTy[i]) or (low[p] < ($boty[i]+($BotA[i]*0.1)) and high[p] > ($BOTy[i]-($BotA[i]*0.2))) or (high[p] > $TOPy[i] and low[p] < $TOPy[i]) or (high[p] > ($TOPy[i]-($TopA[i]*0.05)) and low[p] < ($TOPy[i]+$TOPA[i]*0.2))thenSignal = close[1]endifnext//////////////Resistances lenght in day (3 days) ////////////////for d = 0 to lastset($topy) doif (date-$TOPD[d]) >=3 and (HOUR+$TOPH[d])>24 THEN$TOPY[d]=0endifnext//////////////Supports lenght in day (3 days) ////////////////for o = 0 to lastset($boty) doif (date-$BOTD[o]) >=3 and (HOUR+$BOTH[o])>24 THEN$BOTY[o]=0endifnextSCREENER [Signal](Signal as "close")Cette partie du screener est vraiment la pièce final de mon screener global.
Merci de votre aide
05/30/2024 at 10:32 AM #233274Holà ! Essayez de modifier le signal variable pour démarrer la boucle :
123456signal=0for i=r downto max(0,r-30) doif (low[p] < $BOTy[i] and high[p] > $BOTy[i]) or (low[p] < ($boty[i]+($BotA[i]*0.1)) and high[p] > ($BOTy[i]-($BotA[i]*0.2))) or (high[p] > $TOPy[i] and low[p] < $TOPy[i]) or (high[p] > ($TOPy[i]-($TopA[i]*0.05)) and low[p] < ($TOPy[i]+$TOPA[i]*0.2))thenSignal = 1endifnext06/03/2024 at 9:11 AM #23341506/09/2024 at 7:26 PM #233662J’ai essayé de “print” les valeurs du tableau mais seulement le dernier top et bot marche, les autres ne sont pas définis. Je ne comprend pas pourquoi ca ne marche pas, peut être car il y a pas un maximum de candle prise en compte ? Si quelqu’un à une idée du fonctionnement du array sur un proscreener.
Merci de votre aide
-
AuthorPosts
Find exclusive trading pro-tools on