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
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")
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")
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
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
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
Non sono un esperto, potresti inviarmi il codice del trading system tradotto per PRT con le modifiche che suggerisci?
Grazie
// --- 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
Grazie Ivan per il tuo aiuto