Richiamo variabili indicatore personalizzato

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #112848 quote
    matteo166
    Participant
    Junior

    Salve a tutti, ho un problema quando provo a far funzionare uno screener con condizioni prese in contemporanea da un indicatore personalizzato e dal grafico dei prezzi.

    Faccio un esempio, se faccio girare lo screener che deve soddisfare 2 condizioni entrambe prese da 3 valori dell’indicatore personalizzato, funziona:

    indicator1, indicator2, indicator3 = CALL "mioindicatore"
    c1 = (indicator1 > indicator2)
    c2 = (indicator2 > indicator3)
    
    SCREENER[c1 and c2] ((close/DClose(1)-1)*100 AS "% Var ieri")

    Se invece aggiungo una condizione presa dal grafico dei prezzi (esempio prezzo maggiore di MM 200 barre) mi da sempre zero risultati:

    indicator1, indicator2, indicator3 = CALL "mioindicatore"
    c1 = (indicator1 > indicator2)
    c2 = (indicator2 > indicator3)
    
    MM200 = Average[200](close)
    c3= (close > MM200)
    
    SCREENER[c1 and c2 and c3] ((close/DClose(1)-1)*100 AS "% Var ieri")

    Cosa sbaglio? Grazie in anticipo

    Matteo

    #112854 quote
    robertogozzi
    Moderator
    Master

    Non posso testarlo perché non so cosa sia quell’indicatore. Posta il codice o un link dove reperirlo.

    Il codice sembra vada bene.

    Probabilmente la condizione C3 è incompatibile con le altre due, non saprei cos’altro dirti.

    Tieni presente che ProScreener non accetta periodi oltre 254, quindi:

    • average[254]  va bene
    • average[255] è errata perché eccede il massimo consentito
    • average[250](rsi[14](close)) è errata perché 250+14 fa 264 che eccede il massimo consentito
    #112951 quote
    matteo166
    Participant
    Junior

    Ciao Roberto,  l’indicatore restituisce il barindex di un certo evento, quindi un numero intero. Nello specifico sono restituiti 3 risultati X, A e B.

    Ti copio qui il codice.

    c1=low<lowest[30](low)[1]
    IF c1 then
    myindexX=barindex
    endif
    Xindex=barindex-myindexX
    
    c2=high>highest[Xindex+1](high)[1]
    if c2 then
    myindexA=barindex
    endif
    Aindex=barindex-myindexA
    
    c3=low<lowest[Aindex+1](low)[1]
    if c3 then
    myindexB=barindex
    endif
    Bindex=barindex-myindexB
    
    return Xindex+1 as "X", Aindex+1 as "A", Bindex+1 as "B"
    #112955 quote
    robertogozzi
    Moderator
    Master

    Probabilmente in alcuni casi il numero supera 254 barre.

    Non posso verificarlo fino a lunedì.

    #113060 quote
    matteo166
    Participant
    Junior

    Si effettivamente può essere perchè finchè la condizione non è soddisfatta il conteggio delle barre continua, infatti l’indicatore su certi titoli da errore se carico 15 o 10k barre, mentre praticamente mai se ne visualizzo 200.

    E’ possibile limitare l’indicatore agli ultimi 6 mesi per esempio?

    #113074 quote
    robertogozzi
    Moderator
    Master

    Si, devi dichiarare una variabile per la data di partenza (ad esempio DataInizio) ed usarla per fare in modo che l’indicatore parta solo da quella data in poi (devi aggiungerla te nell’indicatore, io la metto fissa):

    IF barindex = 0 THEN
       Xindex = 0
       Aindex = 0
       Bindex = 0
    ENDIF
    IF date >= DataInizio THEN
       c1=low<lowest[30](low)[1]
       IF c1 then
          myindexX=barindex
       endif
       Xindex=barindex-myindexX
       c2=high>highest[Xindex+1](high)[1]
       if c2 then
          myindexA=barindex
       endif
       Aindex=barindex-myindexA
       c3=low<lowest[Aindex+1](low)[1]
       if c3 then
          myindexB=barindex
       endif
       Bindex=barindex-myindexB
    ENDIF
    return Xindex+1 as "X", Aindex+1 as "A", Bindex+1 as "B"

    dopodiché richiamerai l’indicatore usando sempre CALL, ma in più dovrai passargli la data che desideri (puoi inserirla in una variabile, anziché passarla come costante):

    indicator1, indicator2, indicator3 = CALL "mioindicatore" [20190701](close)
    #113256 quote
    matteo166
    Participant
    Junior

    Grazie Roberto, ora l’indicatore funziona sempre e si limita agli ultimi mesi. Come output ho aggiunto i 3 prezzi relativi ai 3 punti X A e B.

    IF barindex = 0 THEN
    Xindex = 0
    Aindex = 0
    Bindex = 0
    ENDIF
    IF date >= DataInizio THEN
    c1=low<lowest[30](low)[1]
    IF c1 then
    myindexX=barindex
    endif
    Xindex=barindex-myindexX
    c2=high>highest[Xindex+1](high)[1]
    if c2 then
    myindexA=barindex
    endif
    Aindex=barindex-myindexA
    c3=low<lowest[Aindex+1](low)[1]
    if c3 then
    myindexB=barindex
    endif
    Bindex=barindex-myindexB
    ENDIF
    Xprice = lowest[Xindex+1](low)[1]
    Aprice = highest[Xindex+1](high)[1]
    Bprice = lowest[Aindex+1](low)[1]
    
    return Xindex+1 as "X", Xprice as "Xp", Aindex+1 as "A", Aprice as "Ap", Bindex+1 as "B", Bprice as "Bp"

    Però se provo a fare lo screener che richiama l’indicatore, finchè metto 3 condizioni ovvero 2 relative ai bar index ed una al prezzo funziona. Quando ne aggiungo una quarta relativa al prezzo non gira più… non capisco come mai. Qui sotto i due codici, il primo funzionante ed il secondo no se mi volessi dare una mano.

    X, Xp, A, Ap, B, ignored = CALL "mioindicatore"[20190101]
    
    c1 = (X > A)
    c2 = (A > B)
    c3 = (Xp < Ap)
    
    SCREENER[c1 AND c2 AND c3] ((close/DClose(1)-1)*100 AS "% Var ieri")
    X, Xp, A, Ap, B, Bp = CALL "mioindicatore"[20190101]
    
    c1 = (X > A)
    c2 = (A > B)
    c3 = (Xp < Ap)
    c4 = (Ap > Bp)
    
    SCREENER[c1 AND c2 AND c3 AND c4] ((close/DClose(1)-1)*100 AS "% Var ieri")

    Grazie mille in ogni caso

    #113264 quote
    robertogozzi
    Moderator
    Master

    Dovresti verificare sul grafico se Aprice > Bprice, cioè AP > BP.

    Se non lo è significa che quella condizione non si verifica.

    Prova a scrivere la riga 6 così:

    c4 = (Ap < Bp)
    matteo166 thanked this post
Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

Richiamo variabili indicatore personalizzato


ProScreener: Scansione Mercati & Screener

New Reply
Author
author-avatar
matteo166 @matteo166 Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by robertogozzi
6 years, 3 months ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 11/14/2019
Status: Active
Attachments: No files
Logo Logo
Loading...