Screener TSSwing

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #254136 quote
    Centro
    Participant
    New

    qualcuno può aiutarmi a tradurre il codice scritto per Visual Trader da utilizzare in ProRealTime? di seguito le formule, sono 2 versioni: Le

    formule per Visual Trader®

    Esplorazione: TS Swing – Tutti (il nome della formula)

    Var: RK0; //valore massimo H ultimi 10 giorni
    Var: RK1; // valore di ieri variabile RK0
    Var: RK2; // se il massimo di oggi è maggiore o uguale al
    // massimo di ieri la variabile assume il valore del
    // massimo di ieri, altrimenti assume valore 0
    Var: RK3; // se il massimo di oggi è minore del massimo
    //di ieri, la variabile assume il valore del massimo
    // assoluto degli ultimo 10 giorni, altrimenti valore 0
    Var:RK4; // differenza % tra la chiusura e il prezzo di debord
    Var:RK5; // se attivo prezzo debord, RK4, altrimenti 0
    Var: SK1; // media mobile semplice a 5 giorni sui minimi
    Var: SK2; // differenza % fra chiusura odierna e media mobile
    // a 5 giorni sui minimi
    Var: MV1; // media mobile semplice a 5 giorni sulla chiusura
    Var: MV2; // variazione % a 8 giorni variabile MV1
    Var: VOL1; // se i volumi moltiplicati per la chiusura sono
    // superiori a 50000 la variabile assume valore 1,
    // altrimenti 0
    Var: SIG1; // se la variabile MV2 è positiva e i volumi sono
    // superiori a 50000, la variabile assume valore 1,
    //altrimenti 0
    RK0 = HHV(H,10);
    RK1 = Ref((RK0),1);
    If (H>=RK1) And C>Mov(L,5,s) Then RK2=RK1; Else
    RK2=0;
    Endif;
    If (H 50000 Then VOL1=1; Else VOL1=0;
    Endif;
    If (MV2>0 and VOL1=1) Then SIG1=1; Else SIG1=0;
    Endif;
    RK4=(RK3-C)*100/C;
    If(RK3=0) Then RK5=0; Else RK5=RK4;
    Endif;
    Descrizione colonne:
    Colonna 1: – nome: Chiusura
    C
    Colonna 2: – Entrato
    RK2
    Colonna 3: – Debord
    RK3
    Colonna 4: – Stop
    SK1
    Colonna 5: – % Stop
    SK2
    Colonna 6: – Roc 8 gg.
    MV2
    Filtro
    SIG1=1

    Esplorazione: TS Swing (il nome della formula)

    Var: RK0; //valore massimo H ultimi 10 giorni
    Var: RK1; // valore di ieri variabile RK0
    Var: RK2; // se il massimo di oggi è maggiore o uguale al
    // massimo di ieri la variabile assume il valore del
    // massimo di ieri, altrimenti assume valore 0
    Var: RK3; // se il massimo di oggi è minore del massimo
    //di ieri, la variabile assume il valore del massimo
    // assoluto degli ultimo 10 giorni, altrimenti valore 0
    Var:RK4; // differenza % tra la chiusura e il prezzo di debord
    Var:RK5; // se attivo prezzo debord, RK4, altrimenti 0
    Var: SK1; // media mobile semplice a 5 giorni sui minimi
    Var: SK2; // differenza % fra chiusura odierna e media mobile
    // a 5 giorni sui minimi
    Var: MV1; // media mobile semplice a 5 giorni sulla chiusura
    Var: MV2; // variazione % a 8 giorni variabile MV1
    Var: MV3; // valore di ieri della variabile MV2
    Var: MV4; // se la variabile MV3 è negativa (valore di ieri)
    // mentre la variabile MV2 è positiva (valore di oggi)
    // la variabile assume valore 1, altrimenti 0
    Var: VOL1; // se i volumi moltiplicati per la chiusura sono
    // superiori a 50000 la variabile assume valore 1,
    // altrimenti 0
    Var: SIG1; // se la variabile MV2 è positiva e i volumi sono
    // superiori a 50000, la variabile assume valore 1,
    //altrimenti 0
    RK0 = HHV(H,10);
    RK1 = Ref((RK0),1);
    If (H>=RK1) And C>Mov(L,5,s) Then RK2=RK1; Else
    RK2=0;
    Endif;
    If (H0 Then MV4=1; Else MV4=0;
    Endif;
    If (V*C)> 50000 Then VOL1=1; Else VOL1=0;
    Endif;
    If (MV4=1 and VOL1=1) Then SIG1=1; Else SIG1=0;
    Endif;
    RK4=(RK3-C)*100/C;
    If(RK3=0) Then RK5=0; Else RK5=RK4;
    Endif;
    Descrizione colonne:
    Colonna 1: – nome: Chiusura
    C
    Colonna 2: – Entrato
    RK2
    Colonna 3: – Debord
    RK3
    Colonna 4: – Stop
    SK1
    Colonna 5: – % Stop
    SK2
    Colonna 6: – Roc 8 gg.
    MV2
    Filtro
    SIG1=1

    Grazie

    #254165 quote
    Iván González
    Moderator
    Master

    Ecco il primo screener:

    // TS Swing - Version 1
    // Variable definitions
    
    // RK0: Max High of last 10 days
    RK0 = Highest[10](High)
    
    // RK1: Yesterday's RK0 value
    RK1 = RK0[1]
    
    // Auxiliary variable for SMA 5 on Lows
    AvgLow5 = Average[5](Low)
    
    // RK2 Logic
    IF (High >= RK1) AND (Close > AvgLow5) THEN
    RK2 = RK1
    ELSE
    RK2 = 0
    ENDIF
    
    // RK3 Logic
    IF (High < RK1) THEN
    RK3 = RK0
    ELSE
    RK3 = 0
    ENDIF
    
    // SK1: SMA 5 on Lows
    SK1 = AvgLow5
    
    // SK2: % Diff between Close and SK1
    SK2 = (Close - SK1) * 100 / SK1
    
    // MV1: SMA 5 on Close
    MV1 = Average[5](Close)
    
    // MV2: % Variation of MV1 over 8 days (ROC)
    IF MV1[8] <> 0 THEN
    MV2 = (MV1 - MV1[8]) * 100 / MV1[8]
    ELSE
    MV2 = 0
    ENDIF
    
    // VOL1 Logic (Volume * Close > 50000)
    IF (Volume * Close) > 50000 THEN
    VOL1 = 1
    ELSE
    VOL1 = 0
    ENDIF
    
    // SIG1 Logic (Filter trigger)
    IF (MV2 > 0) AND (VOL1 = 1) THEN
    SIG1 = 1
    ELSE
    SIG1 = 0
    ENDIF
    
    // Condition: SIG1 must be 1
    SCREENER[SIG1](Close AS "Chiusura", RK2 AS "Entrato", RK3 AS "Debord", SK1 AS "Stop", SK2 AS "% Stop", MV2 AS "Roc 8 gg")
    robertogozzi thanked this post
    #254166 quote
    Iván González
    Moderator
    Master

    Ecco il secondo:

    // TS Swing - Version 2
    // Variable definitions
    
    // RK0: Max High of last 10 days
    RK0 = Highest[10](High)
    
    // RK1: Yesterday's RK0 value
    RK1 = RK0[1]
    
    // Auxiliary variable for SMA 5 on Lows
    AvgLow5 = Average[5](Low)
    
    // RK2 Logic
    IF (High >= RK1) AND (Close > AvgLow5) THEN
    RK2 = RK1
    ELSE
    RK2 = 0
    ENDIF
    
    // RK3 Logic
    IF (High < RK1) THEN
    RK3 = RK0
    ELSE
    RK3 = 0
    ENDIF
    
    // SK1: SMA 5 on Lows
    SK1 = AvgLow5
    
    // SK2: % Diff between Close and SK1
    SK2 = (Close - SK1) * 100 / SK1
    
    // MV1: SMA 5 on Close
    MV1 = Average[5](Close)
    
    // MV2: % Variation of MV1 over 8 days
    IF MV1[8] <> 0 THEN
    MV2 = (MV1 - MV1[8]) * 100 / MV1[8]
    ELSE
    MV2 = 0
    ENDIF
    
    // MV3: Yesterday's MV2 value
    MV3 = MV2[1]
    
    // MV4 Logic: Crossover detection
    // Checks if yesterday was negative and today is positive
    IF (MV3 < 0) AND (MV2 > 0) THEN
    MV4 = 1
    ELSE
    MV4 = 0
    ENDIF
    
    // VOL1 Logic
    IF (Volume * Close) > 50000 THEN
    VOL1 = 1
    ELSE
    VOL1 = 0
    ENDIF
    
    // SIG1 Logic (Filter trigger)
    IF (MV4 = 1) AND (VOL1 = 1) THEN
    SIG1 = 1
    ELSE
    SIG1 = 0
    ENDIF
    
    // Condition: SIG1 must be 1
    SCREENER[SIG1](Close AS "Chiusura", RK2 AS "Entrato", RK3 AS "Debord", SK1 AS "Stop", SK2 AS "% Stop", MV2 AS "Roc 8 gg")
    
    robertogozzi thanked this post
    #254300 quote
    Centro
    Participant
    New

    Grazie Ivan,

    provo

    #254309 quote
    Centro
    Participant
    New

    Grazie Ivàn per il tuo aiuto, se non è troppo disturbo potresti aiutarmi anche con la traduzione del Trading System scritto per Visual Trading in ProRealTime?

    di seguito il codice

    #254310 quote
    Centro
    Participant
    New

    Trading System : TSSwing (il nome della formula)
    Var: RK0; // valore massimo degli ultimo 10 giorni
    Var: RK1; // valore di ieri variabile RK0
    Var: RK2; // Oggi nuovo massimo e chiusura superiore a
    // media minimi 5 gg
    Var: SK1; // media mobile a 5 giorni sui minimi (stop)
    Var: MV1; // media mobile a 5 gg chiusura
    Var: MV2; // variazione percentuale 8 gg. media mobile a 5 gg
    Var: MV3; // ROC positivo o negativo
    Var: VOL1; // filtro volumi inferiori a 50.000 euro
    Var: SIG1; // condizioni per il segnale: variabili RK2 e VOL1
    // ok, MV3 positivo
    Var: IND1; // crea sul grafico la zona dove disegnare il ROC
    RK0 = HHV(H,10);
    RK1 = Ref((RK0),1);
    SK1 = Mov(L,5,S); MV1 = Mov(C,5,S);
    MV2 = Roc(MV1,8);
    If (H>=RK1) And C>Mov(L,5,s) Then RK2=1; Else RK2=0;
    Endif;
    If MV2 >=0 Then MV3=1; Else MV3=0;
    Endif;
    If (V*C)>50000 Then VOL1=1; Else VOL1=0;
    Endif;
    If (RK2=1 and MV3=1 and VOL1=1) Then SIG1=1; Else
    SIG1=0;
    Endif;
    If SIG1=1 then enterLONG(NextBar, AtOpen); colorbar
    (green);
    Elseif MV2<0 and C

    #254343 quote
    Iván González
    Moderator
    Master

    Non vedo alcuna condizione di uscita. Quello che vedo è che il sistema apre una posizione quando sig1=1. Devi solo modificare l'ultima riga dello screener in questo modo:

    if not onmarket and sig1=1 then
    buy 1 contract at market
    endif

    Da qui dovresti definire le condizioni di uscita. Ad esempio:

    set stop %loss 5
    set target %profit 5
    #254378 quote
    Centro
    Participant
    New

    Non sono un esperto, potresti inviarmi il codice del trading system tradotto per PRT con le modifiche che suggerisci?

    Grazie

    #254393 quote
    Iván González
    Moderator
    Master
    // --- System Parameters ---
    DEFPARAM CumulateOrders = False // Do not accumulate positions
    
    // --- Variable Definitions ---
    
    // RK0: Maximum value of the last 10 days (High)
    rk0 = Highest[10](high)
    
    // RK1: Yesterday's RK0 value (Reference to previous bar)
    rk1 = rk0[1]
    
    // SK1: 5-period Simple Moving Average on Lows
    sk1 = Average[5](low)
    
    // MV1: 5-period Simple Moving Average on Close
    mv1 = Average[5](close)
    
    // MV2: 8-period Rate of Change (ROC) applied to MV1
    // Note: Checks the variation of the moving average itself
    mv2 = ROC[8](mv1)
    
    // --- Logic Conditions ---
    
    // RK2: Breakout condition
    // High must be >= yesterday's 10-day high AND Close > SMA 5 of Lows
    rk2 = 0
    IF (high >= rk1) AND (close > sk1) THEN
       rk2 = 1
    ELSE
       rk2 = 0
    ENDIF
    
    // MV3: Momentum condition
    // Checks if the ROC of the Moving Average is positive
    mv3 = 0
    IF mv2 >= 0 THEN
       mv3 = 1
    ELSE
       mv3 = 0
    ENDIF
    
    // VOL1: Volume Filter
    // Traded capital (Volume * Price) must be > 50,000
    vol1 = 0
    IF (volume * close) > 50000 THEN
       vol1 = 1
    ELSE
       vol1 = 0
    ENDIF
    
    // SIG1: Final Entry Signal
    // All conditions must be met
    sig1 = 0
    IF rk2 = 1 AND mv3 = 1 AND vol1 = 1 THEN
       sig1 = 1
    ELSE
       sig1 = 0
    ENDIF
    
    // --- Order Execution ---
    
    // Entry Long
    IF sig1 = 1 THEN
       BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // --- Exits / Money Management ---
    
    // 5% Stop Loss and 5% Profit Target
    SET STOP %LOSS 5
    SET TARGET %PROFIT 5
    
    robertogozzi thanked this post
    #254421 quote
    Centro
    Participant
    New

    Grazie Ivan per il tuo aiuto

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.

Screener TSSwing


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
Centro @centro Participant
Summary

This topic contains 9 replies,
has 2 voices, and was last updated by Centro
1 month, 3 weeks ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 12/02/2025
Status: Active
Attachments: No files
Logo Logo
Loading...