Visual Trader T.S. : Problemi & Soluzioni

Re: Re: Re: Livelli di Ingresso

Scritto da Django
GRAZIE per la risposta immediata , ma come hai sospettato in realtà mi sono spiegato male, però il senso è stato compreso.
La difficoltà che riscontro è che "valore_ingresso= H[1];" rimanesse tale come riferimento anche quando al posto di 2 candele ne ho 6 consecutive sotto ai 30 dell' RSI.

o meglio se ho 2 candele consecuti sotto 30 allora ho "valore_ingresso= H[1];"

se pero le candele consecutive sotto ai 30 sono 7 come faccio a dirgli "valore_ingresso= H[6];" ovvero questo valore H[x] è dinamico e non sò come inseguirlo.

Spero di avere colmato le lacune della precedente richiesta.
RINGRAZIO NUOVAMENTE
Occorrerebbe lavorare sul "concreto", cioe' avere una descrizione analitica ben fatta del ts che si desidera costruire. Nel frattempo ho visto alcune cose:

1) In teoria dovrebbe funzionare (ma non lo fa, c'e' un bug....) la sintassi:
miavariabile = 10;
altravariabile = H[miavariabile];

cioe' accedere ad un elemento qualsiasi del titolo usando una variabile e non un numero diretto.
Stiamo gia' lavorando su questo bug, spero che una volta sistemato si possa costruire il TS che desidera, usando questa notazione.

2) C'e' una funzione GetDate che torna la data + ora della barra attuale.
Cosi' com'e' non serve al Suo scopo, pero' da questa idea si potrebbe sviluppare un set di funzioni collegate, per arrivare ad una cosa di questo tipo (codice ipotetico INVENTATO) :

Codice:
var: ricordati(0), rsi(0), valore_che_voglio[0];
......
if rsi < 30 and rsi[1] < 30 and etc. etc. altre condizioni .... then
    ricordati = GetBarRef();          // Mi "memorizzo" il riferimento a questa barra....
endif;

Quindi piu' avanti si potrebbe usare una funzione del tipo:

Codice:
    valore_che_voglio = GetValRef(ricordati, H);  // Dammi il MAX della barra che mi ero memorizzato..
    EnterLong(NextBar, valore_che_voglio);

Che ne dite ?

cordialita'
Mauro Pratelli
TraderLink
 
a parte tutto, penso ke il "motore" che controlla l'operatività del ts ha parecchie difficoltà, così come è fatto a farti entrare sul mercato.


pensandoci su sembra facile fare il sistema di ingresso senza troppo complicanze, eppure vedo che il risultato di approccio agli ingressi e alle uscite sul realtime abbia dei problemi, a parte il fatto di vedersi ogni tanto sparire le frecce del long e comparire quelle della vendita in modo immotivato rispetto a quanto gli si dice.

faccio un esempio di quel mi mi aspetterei da questo sistema.


esempio: voglio ke l'rsi vadi sotto il valore 20, ci stia per 3 chiusure (come esempio) e poi quando torna sopra 25 (esempio) cominci a dare il segnale long sul valore attuale del titolo se gli si da l'opzione C e nn attendere l'orario di chiusura come mi sembra accada ora.

poniamo ke uso un grafico orario, l'rsi sale sopra a 25 col prezzo attuale, il sistema mi dovrebbe mettere il cerchietto verde sul prezzo attuale del titolo indicandomi ke è impostato per un long....


da quel momento io mi guardo intorno per pensare a cosa fare, stare fermo o entrare, alla chiudura della barra, se l'rsi sta ancora sopra 25, il meccanismo nn farà altro ke mettere una freccia verde sulla chiusura effettiva e da li calcola il report finale.


è complicato fare una procedura simile?

io credo che in questo modo i segnali in tempo reale siano più efficaci e abbiano meno problemi nel complesso generale.

provo a semplificare il discorso.

sono flat, sun un grafico a barre a 60 min.



si attiva la condizione di long sul titolo.

da quel momento sul prezzo attuale per tutta la durata di quella barra dovrebbe comparire il cerchietto ke già ora compare e magari un allarme sonoro per quando compare al suo inizio.

quando la barra si chiude, se la chiusura sta ancora in condisione long di ingresso verrà fissata la freccia in quel punto, altrimenti sparisce la condizione e pure il serchietto in tempo reale.

in questo modo, se la freccia esce, fa il conto preciso sul report dove si voleva entrare (in chiusura ovviamente), se nn esce niente.


spero di essermi spiegato.

adesso mi sembra abbia dei problemi a funzionare correttamente, e poi il fatto ke entra ala barra sucessiva ke poi nn è vero perchè il report e la freccia viene messo sulla barra precedente nn è una buona cosa.
 
Re: Re: Re: Re: Livelli di Ingresso

Ringrazio per la risposta precedente (per me è OK).

Sottopongo altro quesito:

Volendo testare un sistema applicando il "Candlecount" non sono riuscito a colorare nemmanco una misera candela.

L'intenzione è la seguente :

Quando il valore del "Candlecount" scende sotto il 50% allora colora le relative candele di Blue


Var: Candle(0), Candleallarme(0), CandleIieri(0) ,Ingresso(0);

Candle = Candlecount(C,15);
CandleIieri = Candle[1];
Candleallarme = -50;

if Candle < Candleallarme then
ColorBar(blue);
endif;


Lanciato il codice sopra descritto se esteso ad un grafico di 5 anni si pianta il computer e su 1 anno dopo avere ragionato un pò o colora tutte le barre di Blu o non le colora affatto.

Dove è l'inghippo ???

Ringrazio fiducioso.:confused:
 
Re: Re: Re: Re: Re: Livelli di Ingresso

Scritto da Django
Ringrazio per la risposta precedente (per me è OK).

Sottopongo altro quesito:

Volendo testare un sistema applicando il "Candlecount" non sono riuscito a colorare nemmanco una misera candela.

.................................................Dove è l'inghippo ???


Ho provato anch'io, in vari modi, ma senza alcun esito.
 
%B

sto testando un semplice TS su VT, vorrei però conferma dall'indicatore %b che non trovo tra le funzioni sugli indicatori.

Ho provato a cercare la formula di questo indicatore ma invano, potete aiutarmi?
 
Re: %B

Scritto da trendinrialzo
sto testando un semplice TS su VT, vorrei però conferma dall'indicatore %b che non trovo tra le funzioni sugli indicatori.

Ho provato a cercare la formula di questo indicatore ma invano, potete aiutarmi?


Ciao Trendinrialzo,
il %b non mi risulta sia attualmente supportato. Essendo un oscillatore derivato da altri oscillatori non è neanche possibile utilizzarlo in un trading system, mentre puoi costruirtelo tu con la funzione operazione aritmetica nel tuo modello di visualizzazione.
La formula è:

%b=(Ultimo prezzo-bB inferiore)/(bB superiore-bB inferiore).

dove bB sta per banda di Bollinger.

ciao
M.Mazziero
 
Re: Re: %B

Scritto da M.Mazziero
Ciao Trendinrialzo,
il %b non mi risulta sia attualmente supportato. Essendo un oscillatore derivato da altri oscillatori non è neanche possibile utilizzarlo in un trading system, mentre puoi costruirtelo tu con la funzione operazione aritmetica nel tuo modello di visualizzazione.
La formula è:
%b=(Ultimo prezzo-bB inferiore)/(bB superiore-bB inferiore).

fatto, grazie OK!
 
intervallo temporale

vorrei che i segnali venissero notificati esclusivamente in questo intervallo temporale altrimenti ignorati:

09:30 - 12:00
14:15 - 16:30

Ho provato così ma crasha tutto:

if ((CompareTime(9, 30, 0) > 0) and (CompareTime(12, 0, 0) < 0)) or
((CompareTime(14, 15, 0) > 0) and (CompareTime(16, 30, 0) < 0)) then
EnterLONG(Bar, AtClose);
endif;
 
Ho scritto il seguente listato per provare la funzione DayOfWeek e per chiudere le posizioni aperte a fine seduta , ho usato la funzione LastBar.

____________________________________________________
{*******************************************************************
Prova TS Weekly - Time;
Time-Frame 60'
********************************************************************}
Var: setup(false),Ora(0);

if IsFirstBarDay then
Ora = 1;
endif;

Ora = Ora+1;

Setup = (DayOfWeek = monday and Ora = 2) or (DayOfWeek = tuesday and Ora = 3)
or (DayOfWeek = wednesday and Ora = 7) or (DayOfWeek = thursday and Ora = 4)
or (DayOfWeek = friday and ora = 7);


if setup and PositionDir = 0 then
if C > O then
enterlong(nextbar,atopen);
endif;
if C < O then
entershort(nextbar,atopen);
endif;
endif;

if PositionDir = 1 then
exitlong(nextbar,H+(GetTick*2));
exitlong(nextbar,L-GetTick);
endif;

if PositionDir = -1 then
exitshort(nextbar,H+GetTick);
exitshort(nextbar,L-(GetTick*2));
endif;

if LastBar and PositionDir <> 0 then
if PositionDir = 1 then
exitlong(nextbar,atClose);
endif;
if PositionDir = -1 then
exitshort(nextbar,atClose);
endif;
endif;
____________________________________________________

Nel Manuale è riportato quanto segue:

LastBar: boolean
Descrizione
Ritorna se la barra attuale è l'ultima barra del giorno, disponibile per poter fare trading.
N.B. Utilizzato con grafici Intraday.
Esempio
if LastBar then
ExitLong(NextBar, AtClose);
endif;

Tuttavia ho visto che non funziona ed allora chiedo di conoscere quale sintassi usare per uscire da un trade a fine giornata.

Grazie
 
Re: intervallo temporale

Scritto da trendinrialzo
vorrei che i segnali venissero notificati esclusivamente in questo intervallo temporale altrimenti ignorati:

09:30 - 12:00
14:15 - 16:30

Ho provato così ma crasha tutto:

if ((CompareTime(9, 30, 0) > 0) and (CompareTime(12, 0, 0) < 0)) or
((CompareTime(14, 15, 0) > 0) and (CompareTime(16, 30, 0) < 0)) then
EnterLONG(Bar, AtClose);
endif;

se è un bug tenetene conto, diversamente perfavore fatemi sapere una possibile soluzione. Grazie
 
buon giorno,

volevo chiedere come poter risolvere un problema di segnale di ingresso o segnale di uscita in base a 2 o piu' parametri, questo problema vale per qualsiasi tipo di segnale e quindi lo illustro con le medie mobili in modo che si capisca molto facilmente quello che voglio fare, il "delphic phenomenon" che viene illustrato nel libro di visual trader e' perfetto come esempio.

utilizzo una media mobile a 18 periodi e una a 40 periodi.
la prima condizione e' che la mm18 passi sopra la mm40 con il prezzo che ovviamente e' al di sopra di entrambe.deve successivamente verificarsi un rintracciamento del prezzo con close sotto la mm18 e successivamente se il prezzo ritorna sopra la mm18 mi deve generare un segnale LONG a condizione che la mm18 sia ancora sopra la mm40

vorrei inglobare queste cose in un trading system, quindi dovro' indicare in qualche modo che al CROSSOVER di mm18 su mm40 ci sia il setup iniziale, quando c'e' il rintracciamento del prezzo sotto la mm18 una situazione di allert e quando il prezzo torna sopra la mm18 il segnale LONG.

lo stesso problema lo trovo in tutte le situazioni in cui si deve avere prima un setup al generarsi di una condizione e di un segnale di entrata al verificarsi di una seconda condizione.
un altro esempio di situazione del genere e' il conteggio di DEMARK dove prima si deve creare un setup e successivamente si deve creare la situazione di ingresso.

e possibile ottenere una cosa del genere con il trading system?

grazie e buona giornata
 
Re: Re: intervallo temporale

Scritto da trendinrialzo
se è un bug tenetene conto, diversamente perfavore fatemi sapere una possibile soluzione. Grazie


non sono un grandissimo esperto di ts, ma credo tu debba indicare una condizione di "true" e non di segnale long.
nelle variabili iniziali quindi potresti indicare:

var: orario(false);

orario = (metti le condizioni che hai indicato nel post)

section enterlong:

if (metti la condizione che desideri) and orario=true then enterlong

in questo modo lui verifica la tua condizione di ingresso e se l'orario rientra in quello specificato nella variabile (quindi e' true) allora genera il segnale long altrimenti no perche' la seconda condizione (cioe' orario=true) non si verifica.

penso in questo modo dovrebbe funzionarti
 
Scritto da trinita73
buon giorno,...........................................

utilizzo una media mobile a 18 periodi e una a 40 periodi.
la prima condizione e' che la mm18 passi sopra la mm40 con il prezzo che ovviamente e' al di sopra di entrambe.deve successivamente verificarsi un rintracciamento del prezzo con close sotto la mm18 e successivamente se il prezzo ritorna sopra la mm18 mi deve generare un segnale LONG a condizione che la mm18 sia ancora sopra la mm40

vorrei inglobare queste cose in un trading system, quindi dovro' indicare in qualche modo che al CROSSOVER di mm18 su mm40 ci sia il setup iniziale, quando c'e' il rintracciamento del prezzo sotto la mm18 una situazione di allert e quando il prezzo torna sopra la mm18 il segnale LONG............................................





Un modo potrebbe essere questo anche se non l’ho provato:

ho aggiunto anche un contatore di barre che se non ti interessa puoi omettere.

vars: Setup(false),Alert(false),NB(0):



if (crossover MM18 – MM40) then
SetuP = True;
NB = 1; (inizia a contare il numero di barre dal crossover)
Endif;

if NB > 0 then NB = NB +1;

if Setup and NB < X (un numero di barre entro cui ti attendi il rintracciamento) then
if C < (mm18) then
alert = true;
Setup = false;
endif;
endif;

If Alert and NB < X and (prezzo sopra MM18) then
(Entra long dove decidi tu);
alert = false;
NB = 0;
enfif;

// Azzeramento dei parametri

if Setup and NB >= X then
Setup = False;
NB = 0;
Endif;

If Alert and NB >= X then
Alert = False;
NB = 0;
Endif;

Prova a vedere se funziona.
ciao
 
Ultima modifica:
SECTION_ENTERLONG:

if setup=0 then
// se stocastico minore di 30
if Stoc_DL <25 and Stoc_KV < Stoc_DL then
setup=1;
conta=1;
// prima condizione verificata!
endif;
endif;


if setup = 1 and conta=1 then
if Stoc_KV > Stoc_DL and Stoc_DL > 20 and Stoc_DL < 28 then
conta=2;
setup =2;
endif;
endif;

// lo stocastico veloce è risalito sopra a 30
if conta=2 and setup =2 then


EnterLong (NextBar,AtOpen); // COMPRA
setup=0; // ricominciamo a cercare
endif;


// Operezioni di Acquisto

END_SECTION

------------------------------


ho modificato la sezione enter long che mi avevate fatto e postato in privato,

vorrei sapere se è corretta nella sua logica oppure potrebbe avere dei conflitti in certe situazioni.

se potrebbe avere dei conflitti in che contesto possono uscire?

grazie.
 
Scritto da lele2

ho modificato la sezione enter long che mi avevate fatto e postato in privato,

vorrei sapere se è corretta nella sua logica oppure potrebbe avere dei conflitti in certe situazioni.

se potrebbe avere dei conflitti in che contesto possono uscire?

grazie. [/B]

Segnalo solo che devi azzerare anche la variabile Conta in questa fase:
// lo stocastico veloce è risalito sopra a 30
if conta=2 and setup =2 then


EnterLong (NextBar,AtOpen); // COMPRA
setup=0; // ricominciamo a cercare
endif;

per le altre considerazioni lascio spazio a traderlink

ciao
 
Re: Re: Re: intervallo temporale

Scritto da trinita73
non sono un grandissimo esperto di ts, ma credo tu debba indicare una condizione di "true" e non di segnale long.
nelle variabili iniziali quindi potresti indicare:

ho copiato paro paro l'esempio riportato sul manuale :confused:
 
Re: intervallo temporale

Scritto da trendinrialzo
vorrei che i segnali venissero notificati esclusivamente in questo intervallo temporale altrimenti ignorati:

09:30 - 12:00
14:15 - 16:30

Ho provato così ma crasha tutto:

if ((CompareTime(9, 30, 0) > 0) and (CompareTime(12, 0, 0) < 0)) or
((CompareTime(14, 15, 0) > 0) and (CompareTime(16, 30, 0) < 0)) then
EnterLONG(Bar, AtClose);
endif;

La condizione è stata espressa nel modo corretto.
E' strano però il fatto che il Visual Trader dell'utente crashi: copiando questo codice ed eseguendolo, infatti, noi non abbiamo riscontrato alcun problema.
Forse il problema che causa il crash è da ricercarsi in qualche altra istruzione "strana" nel resto del Trading System?

Cordiali saluti,
Traderlink
 
Scritto da trinita73
buon giorno,

volevo chiedere come poter risolvere un problema di segnale di ingresso o segnale di uscita in base a 2 o piu' parametri, questo problema vale per qualsiasi tipo di segnale e quindi lo illustro con le medie mobili in modo che si capisca molto facilmente quello che voglio fare, il "delphic phenomenon" che viene illustrato nel libro di visual trader e' perfetto come esempio.

Come si può osservare studiando il codice postato da lele2 una tecnica comune per esprimere nel TS che si vuole che si verifichino un certo numero di passi di setup è quello di usare una variabile contatore incrementandola di una unità ogni volta che si verifica uno di questi passi ed aprendo la nuova posizione solo quando la variabile raggiunge il valore voluto.

Nel caso del delphic phenomenon dovremo quindi utilizzare una variabile, chiamiamola "setup", inizializzata al valore 0.
Non appena avremo che la mm a 18 incrocia la mm a 40 porremo "setup" al valore 1.
Quando il prezzo (di chiusura della barra) scende sotto la mm a 18 assegneremo a "setup" il valore 2.
Quando infine tornerà sopra a quella stessa media assegneremo a "setup" il valore 3, controlleremo che la mm a 18 sia ancora maggiore di quella a 40 e nel caso apriremo la posizione.

In codice questo algoritmo può essere implementato, ad esempio, così:
Codice:
Var: setup(0), mm18, mm40;

mm18 = MOV(C, 18, S);
mm40 = MOV(C, 40, S);

if setup = 0 then
   if CrossUpper(mm18, mm40) then
       setup = 1;
   endif;
endif;

if setup = 1 then
   if C < mm18 then
       setup = 2;
   endif;
endif;

if setup = 2 then
   if C > mm40 then
       setup = 3
   endif;
endif;

if setup = 3 then
   if mm18 > mm40 then
       EnterLong(NextBar, AtOpen);
       setup = 0;
    endif;
endif;

Ovviamente questo è solo un esempio banale poichè manca tutta la parte di annullamento dei segnali, per cui ad esempio bisognerebbe riassegnare a "setup" il valore 0 se una delle condizioni desiderate non si verifica in tempo utile.

Ad ogni modo, stiamo preparando un pacchetto contenente un discreto numero di nuovi esempi di trading system fra cui abbiamo anche inserito diverse versioni del delphic phenomenon. Speriamo quindi che il metodo utilizzato, se non chiaro qui a parole, lo diventi non appena si avrà modo di provare un TS funzionante che utilizza questa metodologia.

Cordiali saluti,
Traderlink
 
Re: Re: intervallo temporale

Scritto da TRADERLINK
La condizione è stata espressa nel modo corretto.
E' strano però il fatto che il Visual Trader dell'utente crashi: copiando questo codice ed eseguendolo, infatti, noi non abbiamo riscontrato alcun problema.
Forse il problema che causa il crash è da ricercarsi in qualche altra istruzione "strana" nel resto del Trading System?
Cordiali saluti,
Traderlink

no, Le assicuro che allo stato attuale è l'unica condizione perchè sto ancora lavorando alla possibilità di inserirvi un kst che incrocia la propria media mobile anzi al riguardo volevo farLe presente che provando nel modo qui sotto nonostante il kst incrocia la propria media mobile (ho verificato dall'indicatore sul grafico) il TS non restituisce alcun segnale, sicuramente sbaglio qualcosa anche se il compilatore non segnala alcun errore:

Var:
media_roc1(0),
media_roc2(0),
media_roc3(0),
media_roc4(0),
somma_kst(0),
trigger_kst(0);
media_roc1=mov(roc(c,6),10,s);
media_roc2=mov(roc(c,10),10,s)*2;
media_roc3=mov(roc(c,15),8,s)*3;
media_roc4=mov(roc(c,20),15,s)*4;
somma_kst=media_roc1+media_roc2+media_roc3+media_roc4;
trigger_kst=Mov(somma_kst,8,e);

SECTION_ENTERLONG:
if somma_kst>trigger_kst then
EnterLONG(Bar, AtClose);
endif;
END_SECTION
 
grazie biagi e traderlink, sono riuscito ad applicare il ts nel modo corretto anche se ora vi devo lavorare un po', ma gli spunti mi sono stati molto utili.
 
Indietro