Manualets Visualtrader
Manualets Visualtrader
Manuale TS
Introduzione
Apri L’Editor dei TS: Apre l’EditorTS tramite cui è possibile creare le tue
Strategie di Trading, o modificare quelle già inserite, attraverso un linguaggio di
programmazione, molto simile ad altri sistemi di Trading.
La sintassi del linguaggio è spiegata nella guida per l’utente (comando F2
oppure menu info guida per l’utente).
Operazioni:
Effettuate: numero totale di operazioni compiute intese come apertura e chiusura
Operazioni Concluse = Num. Tot. Op / 2 oppure
Operazioni Concluse = (Num. Tot. Op / 2) – 1 (se l’ultima operazione non è
stata chiusa);
Positive: numero totale di operazioni effettuate, concluse con % positiva al
“lordo” delle commissioni(comprese le commissioni), il valore in percentuale
Analisi Operazioni:
Massimo Run Up: In caso di Long(intervallo compra/vendi) rappresenta
l’escursione verso l’alto ovvero il guadagno ipotetico massimo, ottenuto se
avessi venduto nel punto di massimo della curva dal punto di acquisto; In caso di
Short(intervallo vendi/compra) il massimo Run Up rappresenta l’escursione
verso il basso ovvero il massimo guadagno ipotetico ottenuto se avessi
comprato(ricopertura del Short) nel punto di minimo della curva;
Massimo Draw Down: è il parametro opposto al Massimo Run Up. In caso di
Long(intervallo compra/vendi) rappresenta l’escursione verso il basso ovvero la
massima perdita ipotetica, ottenuta se avessi venduto nel punto di minimo della
curva dal punto dopo l'acquisto e prima della vendita programmata dal TS; In
caso di Short(intervallo vendi/compra) il massimo Draw Down rappresenta
l’escursione verso l’alto ovvero la perdita ipotetica massima ottenuta se avessi
comprato nel punto di massimo della curva prima della ricopertura programmata
dal TS;
Draw Down Medio: esprime la media in percentuale rispetto a tutti i Draw
Down;
Analisi Efficienza:
Media di Entrata: somma dell’efficienza di entrata di ogni singola operazione
divisa per il numero di operazioni, per la definizione di efficienza vedi nella
descrizione dei campi della lista delle operazioni;
Media di Uscita: somma dell’efficienza di uscita di ogni singola operazione
divisa per il numero di operazioni, per la definizione di efficienza vedi nella
descrizione dei campi della lista delle operazioni;
Media Complessiva: somma dell’efficienza di entrata e di uscita di ogni singola
operazione divisa per il numero di operazioni, per la definizione di efficienza
vedi nella descrizione dei campi della lista delle operazioni;
Tempo “A Mercato”: rapporto tra la somma delle durate delle singole
operazioni(espresse in periodi) e il numero di totale dei periodi
Capitale:
Iniziale: la cifra iniziale, espressa in euro, prima di effettuare operazioni, può
essere impostata arbitrariamente nelle configurazioni;
Finale: esprime la somma del Capitale iniziale e del Profitto Netto;
Reintegro Necessario: la cifra, espressa in euro, necessaria per effettuare
operazioni, anche questa quantità può essere impostata dall’utente tramite i
parametri di configurazione del TS (nella maschera di configurazione è
denominato capitale fisso);
Commissioni Pagate: somma totale delle spese per le commissioni della banca,
si possono definire nella maschera di configurazione;
Rendimento:
Valore Medio di Profitto: somma espressa in euro di tutte i profitti divisa per il
numero delle operazioni positive;
Valore Medio di Perdita:somma espressa in euro di tutte le perdite divisa per il
numero delle operazioni negative;
Media dei Guadagni: somma espressa in euro di tutti i guadagni divisa per il
numero delle operazioni positive;
Rapporto Medio Prof/Perd: rapporto tra la media dei guadagni e la media delle
perdite, se è maggiore di 1 allora significa che il TS è vantaggioso(il guadagno è
superiore);
Somma dei Profitti: :somma espressa in euro di tutti i guadagni;
Somma delle Perdite: somma espressa in euro di tutte le perdite;
Rapporto Somme Prof/Perd: rapporto tra la somma dei guadagni e la somma
delle perdite, se è maggiore di 1 allora significa che il TS è vantaggioso(il
guadagno è superiore);
N.B.: il valore della singola operazione viene stabilito usando il sottomultiplo del
valore della singola azione più vicino al valore dell’operazione.
Esempio. Azione a 20€ e il capitale investito è 90€ allora l’investimento viene
posto uguale a 80€.
Questa maschera permette anche di esportare automaticamente i dati del Report
e dell’Equity Line.
Equity Line
Introduzione
EditorTS ti permette di creare le tue Strategie di Trading, attraverso un
linguaggio di programmazione, molto simile ad altri sistemi di Trading.
Come creare un TS
Per creare un Trading System seguire I seguenti passi:
1) Aprire il programma EditorTS, presente nella cartella VTRADER. Cliccare
sul bottone “Nuovo” oppure, “File” ->”Nuovo”;
2) Inserire una formula all’interno dell’editor;
Commenti
Puoi usare i commenti per mettere delle note sul tuo codice. I commenti non
hanno alcun peso sull’esecuzione dello Script. Ci sono 2 forme di commenti.
Commenti a Blocchi
Usare le parentesi graffe per racchiudere un blocco di commento.
Esempio
{ Questo è un commento e non sarà eseguito}
Commenti a linea singola
Usare I caratteri "//" per creare singole linee di commenti.
Esempio
//Esempio di Commento in linea
Istruzioni e Delimitatori
Il TS esegue le Istruzioni in ordine, dall’alto verso il basso. Utilizzare le
Istruzioni Condizionali per controllare l’esecuzione del flusso.
Punto e Virgola “;”
Ogni Istruzione deve terminare con il punto e virgola finali (;).
Esempio
Vedere anche Istruzioni Condizionali.
Assegnazione Istruzioni
Utilizzarai l’assegnazione dele Istruzioni per impostare dei valori nelle tue
variabili.
Per assegnare utilizza l’operatore di assegnazione (=).
Esempio
Var: miocontatore(0); miocontatore = miocontatore + 1;
Operazioni
Ci sono differenti tipi di operazioni che e’ possibile calcolare; matematiche,
stringhe, e booleani.
Operazioni Matematiche
Puoi utilizzare le operazioni matematiche classiche: addizione(+), sottrazione(-),
moltiplicazione (*), e divisione (/). Le moltiplicazioni e divisioni sono valutate
per prima, altrimenti vengono valutate da sinistra a destra. Consigliamo di
utilizzare le parentesi per definire l’ordine delle operazioni da valutare.
Esempio
Var: x(0); x = 1 / 2; x = x * 5 + 1; x = ( x - 5 ) / ( x * 2 );
x = x - ( 2 / ( 3 * x ) );
Vedere la lista delle Funzioni per utilizzare le funzioni matematiche piu’
complesse.
Operazioni Booleani
Istruzioni Condizionali
Le Istruzioni condizionali permettono di controllare l’esecuzione del flusso nelle
vostre formule. Utilizzare le Istruzioni if, then, else ed Endif per questo scopo.
Istruzioni If/Then/Endif
Usare le Istruzioni if/then/Endif; per fare test logici, se una condizione risulta
Vera (true) oppure no (false).
Esempio
Var: x(0); x = 10;
if x > 10 then
x = x + 1; {non verrà eseguito}
endif;
if x <= 10 then
x = x * 2; { verrà eseguito }
endif;
if ( x = 20 ) or ( x = 10 ) then
x = x / 3; { verrà eseguito }
endif;
Notare che un’Istruzione termina sempre con endif seguito dal punto e virgola
“;”.
Istruzione Else
Puoi usare l’Istruzione else per eseguire delle Istruzioni se la condizione if/then
risulta falsa.
Esempio
Var: x(0); x = 10;
if x = 5 then
x = x * 20;
else
x = x / 20;
endif;
if x < 2 then
x = x * 10;
x = x - 5;
else
x := ( x + 1 ) / x;
x := x * 2;
endif;
Istruzione ElseIf
E' infine possibile utilizzare istruzioni ElseIf per effettuare ulteriori controlli
senza la necessità di specificare istruzioni
If/Then annidate, rendendo così il proprio codice più conciso e facile da leggere.
Esempio
if cond = 0 then
x = 10;
else
if cond = 1 then
x = 20;
else
x = 30;
endif;
endif;
potrebbe essere scritto, in modo analogo ma più chiaro, così:
if cond = 0 then
x = 10;
elseif cond = 1 then
x = 20;
else
x = 30;
endif;
Funzione IIF
Var: Miorisultato;
Miorisultato = iif(miacondizione, risultato_se_vero, risultato_se_falso);
//Questo equivale a scrivere a:
if miacondizione then
Miorisultato = risultato_se_vero;
else
Miorisultato = risultato_se_falso;
endif;
Esempio
Var es1, es2;
es1 = iif(C > C[1], true, false);
es2 = iif(C > MOV(C, 10, S), C > C[1], C > C[2]);
…..
Sezioni (Section)
Le sezioni sono un parte importante per suddividere le condizioni di
acquisto/vendita.
Una volta che la condizione di Entrata/Uscita viene verificata, attraverso le
funzoni EnterLong, EnterShort, ExitLong ed ExitShort, il ciclo passa alla Barra
successiva, pertanto non vengono ammesse, in questa versione, operazioni
multiple.
SECTION_ENTERLONG:
{ Sezioni contenente le condizioni di Entrata posizione Long}
END_SECTION //Fine Sezione
SECTION_EXITLONG:
{ Sezioni contenente le condizioni di Uscita da una posizione Long}
END_SECTION
SECTION_ENTERSHORT:
{ Sezioni contenente le condizioni di Entrata posizione Short}
SECTION_EXITSHORT:
{ Sezioni contenente le condizioni di Uscita da una posizione Short }
END_SECTION
Accesso ai Dati
AvgPrice oppure A
AvgPrice: float
Descrizione
Ritorna il prezzo medio della barra attuale. Il prezzo medio è (Close + Open +
High + Low ) / 4.
Per ritornare i valori precedenti e’ necessario utilizzare le parentesi quadre:
AvgPrice[N] : Ritorna il valore del prezzo medio individuale della barra di N
periodi fa.
Esempio
if AvgPrice > AvgPrice[1] then
{ La barra attuale ha il prezzo medio piu’ in alto della barra precedente (1) }
…
endif;
Close oppure C
Close: float
Descrizione
Ritorna il prezzo di chiusura della barra attuale.
Per ritornare i valori precedenti e’ necessario utilizzare le parentesi quadre:
Close[N]: Ritorna il valore del prezzo di chiusura individuale della barra di N
periodi fa.
Esempio
if C > C[1] then
{ La barra attuale ha chiuso piu’ in alto della barra precedente (1) }
…
endif;
High oppure H
High: float
Descrizione
Ritorna il prezzo massimo della barra attuale.
Per ritornare i valori precedenti e’ necessario utilizzare le parentesi quadre:
High[N]: Ritorna il valore del prezzo massimo individuale della barra di N
periodi fa.
Esempio
if H > H[1] and H[1] > H[2] then
{ Trend in salita: La barra attuale ha il massimo piu’ alto della precedente, e la
barra precedente ha il massimo piu’ alto di quella di 2 periodi fa’.}
…
endif;
IsBlack oppure B
IsBlack: boolean
Descrizione
Ritorna True se la chiusura è inferiore all’apertura della barra attuale del Titolo,
cioè:
= True se Close < Open.
Esempio
if (B = true) and (B[1] = true) then
{ La barra attuale e quella precedente sono nere }
…
endif;
IsWhite oppure W
IsWhite: boolean
Esempio
if (W = true) and (W[1] = true) then
{ La barra attuale e quella precedente sono bianche }
…
endif;
Esempio
if L > L[1] then
{ La barra attuale ha il minimo piu’ alto della barra precedente (1) }
…
endif;
Open oppure O
Open: float
Descrizione
Ritorna il prezzo di apertura della barra attuale.
Per ritornare i valori precedenti e’ necessario utilizzare le parentesi quadre:
Open[N]: Ritorna il valore del prezzo di apertura individuale della barra di N
periodi fa.
Esempio
if O > O[1] then
{ La barra attuale ha l’apertura piu’ alta della barra precedente (1) }
…
endif;
Range oppure R
Range: float
Descrizione
Ritorna il range del giorno, cioe’ Range è uguale al massimo meno il minimo
della barra attuale (H – L).
Per ritornare i valori precedenti e’ necessario utilizzare le parentesi quadre:
Range[N]: Ritorna il range di prezzo della barra di N periodi fa.
Esempio
Volume oppure V
Volume: float
Descrizione
Ritorna il volume della barra attuale.
Per ritornare i valori precedenti e’ necessario utilizzare le parentesi quadre:
Volume[N]: Ritorna il valore del volume individuale della barra di N periodi fa.
Esempio
if V > V[1] then
{ La barra attuale ha il volume piu’ alto della barra precedente (1) }
…
endif;
Parole Chiavi
Tutte le Parole Chiavi usate nel TS, non possono essere dichiarate come
Variabili dell’Utente:
Parole chiavi ad 1 carattere: A, C, O, L, H, R, V, W.
Funzioni
CurrentBar
CurrentBar: float
Descrizione
Ritorna il numero di Barra corrente, a partire dalla prima barra utile per fare
Trading.
Pertanto la Barra 1 è la prima barra in cui è possibile fare operazioni.
Esempio
if CurrentBar = 1 then
GetTick
GetTick: float
Descrizione
Ritorna il Valore di Tick del Titolo. Il Valore di Tick è il piu’ piccolo
movimento di prezzo incrementale che un contratto del titolo puo’ fare.
GetDataType
GetDataType: integer
Descrizione
Ritorna il tipo di dati attualmente utilizzato:
Esempio
if GetDataType = Intraday then
// Sono in Intraday
endif;
if GetDataType = EndOfDay then
// Sono in EndofDay
endif;
GetCompression
GetCompression: integer
Descrizione
Ritorna il tipo di compressione dati utilizzata:
In Intraday:
Ritorna il numero di secondi.
In EndOfDay:
Ritorna:
Daily -> giornaliera
Week -> settimanale
Month -> mensile
Esempio
if GetDataType = Intraday then
if GetCompression = 60 then
// Compressione ad 1 minuto
GetValues
GetValues (tipo, numperiodi, open, min, max, close):boolean
Descrizione
Ritorna i valori di apertura, minimo, massimo, chiusura, del periodo selezionato.
La funzione ritorna True quando i valori vengono aggiornati.
Tipo:
bars: periodo in base alla compressione scelta
days: calcola i giorni.
hours: calcola le ore.
minutes: calcola i minuti.
Esempio
Var: mioopen, miomin, miomax, mioclose, giornocambiato(false);
{ Ottieni i valori del giorno precedente (Utilizzato solo con grafici Realtime)}
giornocambiato = GetValues(days, 1, mioopen, miomin, miomax, mioclose);
if giornocambiato then
// calcola qualcosa in base ai valori del gg precedente, utilizzando, in questo
//esempio, le variabili (mioopen, miomin, miomax, mioclose)
endif;
// Plotto il valore della chiusura di ieri
PlotChart(mioclose, 0, green, solid, 2);
Esempio2
{ Plotta i minimi e massimi di 5 giorni fa (con Grafico End-Of-Day)}
GetValues(weeks, 1, mioopen, miomin, miomax, mioclose);
Esempio3
{****************************************************************
* Questo è un Esempio dove vengono calcolati i Pivot
****************************************************************}
if ggcambiato then
Range_Data2 = H_data2 - L_data2;
// calcola i Pivot
PivPnt = (H_data2 + L_data2 + C_data2)/3;
Resistance1 = (PivPnt * 2) - L_data2;
Support1 = (PivPnt * 2) - H_data2;
endif;
EOD.x
EOD.x: float;
Descrizione
Con l’utilizzo della parola chiave EOD, vengono estrapolati i valori Daily,
quando applichiamo un TS ad un grafico Intraday.
Note:
Utilizzato solo con grafici Intraday.
Nota:
Questi valori non possono essere utilizzati come ingresso degli
oscillatori/indicatori, ma solo con operazioni matematiche.
Var: previousH,previousL,previousC,
Pivot,R1,S1, R1mid,S1mid, prova, cambiatogiorno,
lin1,lin2,lin3,lin4,lin5,
indperiodo, numper, ggini, primavolta(-1);
previousH=EOD.H[1];
previousL=EOD.L[1];
previousC=EOD.C[1];
// Calcola Pivot
R1=(2*Pivot)-previousL;
Pivot=(previousH+previousC+previousL)/3;
S1=(2*Pivot)-previousH;
R1mid=(R1+pivot)/2;
S1mid=(S1+pivot)/2;
if cambiatogiorno then
// Termina le linee precedenti qui, Crea nuove Linee per il prossimo Giorno
lin1 = CREATEOGG;
lin2 = CREATEOGG;
lin3 = CREATEOGG;
lin4 = CREATEOGG;
lin5 = CREATEOGG;
primavolta = false;
endif;
indperiodo = indperiodo + 1;
numper = indperiodo;
InRange
InRange ( Valore): boolean
Descrizione
Ritorna True se Valore è compreso all’interno della barra attuale del Titolo, cioè:
= True se Valore >= Low and Valore <= High.
Inside
Inside: boolean
Descrizione
Ritorna True se la barra attuale è contenuta nella barra precedente, cioè:
= True se High <= High[1] e Low>= Low[1].
Outside
Outside: boolean;
Descrizione
Ritorna True se la barra attuale contiene la barra precedente, cioè:
= True se High >= High[1] e Low <= Low[1].
Esempio 1
if IsInside(0) and IsInside(1) then // sia la candela attuale, che quella
precedente è inside.
// fai qualcosa
endif;
IsOutside
IsOutside (numbarra): boolean
Descrizione
Ritorna True se la barra numbarraprec è outside rispetto alla barra precedente a
questa, cioè:
= True se High[numbarra] >= High[numbarra + 1] e Low<= Low[numbarra
+ 1].
Esempio 1
if IsOutside(0) and IsOutside (1) then // sia la candela attuale, che quella
precedente è outside.
// fai qualcosa
endif;
SetTickMin
SetTickMin: boolean;
Descrizione
Imposta il minimo Tick del titolo che si sta analizzando.
Nota: Utilizzato solo con Titoli/Future che non hanno un definito, o non corretto,
tick minimo.
Bar
Bar: boolean
Descrizione
Ritorna la barra attuale (0).
Utilizzato nei parametri in cui occorre scegliere la barra.
Esempio
{ Compra in chiusura della barra}
if C > C[1] then
EnterLong(Bar, AtClose);
endif;
NextBar
NextBar: boolean
Descrizione
Ritorna la barra successiva (1).
Utilizzato nei parametri in cui occorre scegliere la barra.
Esempio
{ Compra in apertura della barra successiva}
if C > C[1] then
EnterLong(NextBar, AtOpen);
endif;
NextOpen
NextOpen: boolean;
Descrizione
Utilizzato nelle funzioni di Trading, quando si vuole impostare una condizione
sull’apertura della barra successiva.
Esempio 1
{ Compra in Apertura della barra successiva SOLO SE l’apertura è INFERIORE
o UGUALE (limit) a valscattato}
if condizione_di_acquisto then
EnterLong(NextOpen, valscattato, limit);
endif;
Esempio 2
{ Compra in Apertura della barra successiva SOLO SE l’apertura è
SUPERIORE o UGUALE (stop) a valscattato}
Esempio 3
{ Compra in Apertura della barra successiva SOLO SE l’apertura è UGUALE
(exact) a valscattato}
if condizione_di_acquisto then
EnterLong(NextOpen, valscattato, exact);
endif;
LastBar
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
{ Chiudi la posizione se siamo alla fine della giornata}
if LastBar then
ExitLong(NextBar, AtClose);
endif;
IsFirstBarDay
IsFirstBarDay: boolean
Descrizione
Ritorna se la barra attuale è la prima barra del giorno.
N.B. Utilizzato con grafici Intraday.
Esempio
{ Esempio di IsFirstBarDay }
if IsFirstBarDay then
// fai qualcosa
endif;
IIF
iif: boolean
Descrizione
Per ritornare una condizione booleana, in un’unica riga. Equivale ad utilizzare le
istruzioni if-then-else-endif;
// Sintassi 1
if miacondizione then
Miorisultato = risultato_se_vero;
else
Miorisultato = risultato_se_falso;
endif;
Esempio
Var es1, es2;
es1 = iif(C > C[1], true, false);
es2 = iif(C > MOV(C, 10, S), C > C[1], C > C[2]);
IsFirstBarBegin
IsFirstBarBegin: boolean
Descrizione
Ritorna se la barra attuale è la prima barra, in assoluto, del ciclo.
Esempio
{ Esempio di IsFirstBarBegin}
if IsFirstBarBegin then
// fai qualcosa
endif;
GetDate
GetDate: integer
Descrizione
Ritorna la data della barra attuale.
Per l’EndOfDay = YYYYMMGG
Per l’Intraday ritorna comunque un valore che identifica una data+ora.
N.B.: Utilizzato sia con grafici EndOfDay che con Intraday.
Esempio
Var: miogiorno(0);
{ Compra solo fino alle 17}
If Condizione_ Primo _Punto then
miogiorno = GetDate;
// plotto una linea Verticale
DrawVLine (0, 0, miogiorno, C, red, 1, 0);
Endif;
GetDateDaily
GetDateDaily: integer
Descrizione
Ritorna la data della barra attuale.
Per l’EndOfDay = YYYYMMGG
N.B.: Utilizzato sia con grafici EndOfDay che con Intraday.
A differenza del GetDate per l’Intraday ritorna comunque un valore che
identifica solo la data.
Esempio
Var: miogiorno(0);
{ Compra solo fino alle 17}
If Condizione_ Primo _Punto then
miogiorno = GetDateDaily;
// plotto una linea Verticale
DrawVLine (0, 0, miogiorno, C, red, 1, 0);
Endif;
GetDay
GetDay: integer
Descrizione
Ritorna il giorno della barra attuale
Utilizzato sia per grafici intraday che daily.
Esempio:
if (GetDay = 10) and (GetMonth = 05) then
// compra ogni 10 maggio
GetMonth
GetMonth: integer
Descrizione
Ritorna il mese della barra attuale
Utilizzato sia per grafici intraday che daily.
Esempio:
if (GetMonth <> 08) then
// ......... altre istruzioni .....
GetYear
GetYear: integer
Descrizione
Ritorna l'anno della barra attuale
Utilizzato sia per grafici intraday che daily.
Esempio:
if (GetYear = 2006) then
// ......... altre istruzioni .....
GetHour
GetHour: integer
Descrizione
Ritorna l’ora della barra attuale
Utilizzato per grafici intraday.
N.B. Utilizzato con grafici Intraday.
Esempio
GetMinute
GetMinute: integer
Descrizione
Ritorna i minuti della barra attuale. Utilizzato per grafici intraday.
N.B. Utilizzato con grafici Intraday.
GetSecond
GetSecond: integer
Descrizione
Ritorna i secondi della barra attuale. Utilizzato per grafici intraday.
N.B. Utilizzato con grafici Intraday.
DayOfWeek
DayOfWeek: integer
Descrizione
Ritorna il giorno della settimana della barra attuale.
N.B.: Per le costanti vedere il capitolo in fondo al manuale.
Esempio
if (DayOfWeek = friday) then
….
endif;
CompareTime
CompareTime (ora, min, sec) : integer
Descrizione
Ritorna la differenza, espressa in secondi, tra il Tempo attuale ed il tempo
passato con ora, min, sec.
N.B. Utilizzato con grafici Intraday.
Esempio
{ Compra solo nella parte centrale del giorno, tra le 10 e le 17 }
if (CompareTime(10, 0, 0) > 0) and (CompareTime(17, 0, 0) < 0) then
EnterLong(NextBar, AtOpen);
endif;
REF
REF (DataArray, Periodi)
Descrizione
Ritorna l'elemento precedente dell'Array.
Un valore di "Periodi" positivo si riferisce al valore passato.
Esempio:
REF (C, 5) -> ritorna il valore di chiusura di 5 barre fa. Questo equivale a C[5].
REF (MOV(C, 10, S), 1) -> ritorna il valore della media mobile, di 1 barra
precedente. Nel caso daily, sia la barra di ieri.
REF (RSI(C, 14), 2) -> ritorna il valore dell'RSI, di 2 barre precedenti. Nel caso
daily, sia la barra di 2 giorni fa.
Time oppure T
T: integer
Descrizione
Ritorna le ore ed i minuti della barra attuale, nel formato HHMM.
N.B. Utilizzato con grafici Intraday.
Esempio
{ Compra solo fino alle 17:10}
if T < 1710 then
EnterLong(NextBar, AtOpen);
endif;
Esempio
Var: x(0); x = MOV(Close, 24, S);
SECTION_ENTERLONG:
if x > C then
{ la media e’ al di sopra del valore di chiusura della candela analizzata }
endif;
END_SECTION
Esempio1
Var: media(0), m2m (0);
media = MOV(Close, 24, S);
m2m = MOV(media, 14, E);
SECTION_ENTERLONG:
if (media > C) and (m2m > C) then
{ la media e’ al di sopra del valore di chiusura della candela analizzata e la
media della media e’ maggiore di 20}
EnterLong(NextBar, AtOpen); // Compra in apertura della barra successiva
endif;
END_SECTION
Esempio2
Var: x(0); x = MOV(RSI(x, 14, S), 24, S);
DataArray
Impostare l’array d’ingresso per il calcolo della media.
C/L/H/O/A/array:
C , Close -> Chiusura barra
L , Low -> Minimo barra
H , High -> Chiusura barra
O , Open -> Apertura barra
A , AvgPrice -> Prezzo medio barra.
DataArray -> Altro Indicatore dichiarato in precedenza.
Periods
Indica il numero di barre utilizzati per il calcolo.
In Intraday:
Ogni barra rappresenta N minuti, a seconda della Compressione Dati impostata.
In End-Of-Day (Daily):
Ogni barra/periodo rappresenta 1 giorno.
AccumDist
AccumDist (DataArray, Type): float
Descrizione
AccumDist calcola l’Accumulazione e Distribizione dello specificato DataArray.
Il tipo e’ specificato dal parametro Type.
Type:
ATR
ATR(DataArray, Periods): float
Descrizione
ATR calcola l’Average True Range del periodo passato (Periods).
Esempio
Var: mioatr(0); mioatr = ATR(C, 10);
CandleCount
CandleCount(DataArray, periodo): float
Descrizione
CandleCount calcola la differenza tra il numero di candele bianche ed il numero
di candele nere, per un certo periodo di tempo, rapportato in percentuale.
CCI
CCI (DataArray, Periods): float
Descrizione
CCI calcola il Commodity Channel Index dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = CCI (C, 14);
ChaOsc
ChaOsc (DataArray): float
Descrizione
ChaOsc calcola il Chaikin Oscillator dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = ChaOsc (C);
ConstVal
ConstVal (valore): float
Descrizione
ConstVal crea un DataArray con un valore costante.
Viene utilizzato per fare calcoli tra i DataArray (cioè tra altri oscillatori).
Esempio
Var: mioval5, miamedia;
DIFF
DIFF(DataArray1, DataArray2, Type): float
Descrizione
DIFF calcola la Differenza tra due Array di Dati (Indicatori). Il tipo e’
specificato dal parametro Type.
Type:
Sub = Differenza in valore.
Perc = Differenza in percentuale.
Perc2 = Differenza in percentuale rispetto al secondo valore.
Esempio
Var: miadiff (0), miamedia(0); miamedia = MOV(C, 10, S);
miadiff = DIFF (C, miamedia, Sub);
// Differenza tra il titolo e la sua media
DMIndex
DMIndex (DataArray, Periods): float
Descrizione
DMIndex calcola il Directional Movement Index dello specificato DataArray.
Esempio
mioosc = DMIndex (C, 14);
DMNDX
DMNDX (DataArray, Periods): float
Descrizione
DMNDX calcola il Directional Movement -DX dello specificato DataArray.
Esempio
mioosc = DMNDX (C, 14);
DMPDX
DMPDX (DataArray, Periods): float
Descrizione
DMPDX calcola il Directional Movement +DX dello specificato DataArray.
Esempio
mioosc = DMPDX (C, 14);
EXPSMOOTH
EXPSMOOTH (DataArray, Periods): float
Descrizione
EXPSMOOTH calcola l’Exponential Smoothing dello specificato DataArray.
Esempio
Var: mioosc (0);mioosc = ExpSmooth (C, 10);
Descrizione
EXPSMOOTH di Wilder calcola l’Exponential Smoothing di Wilder dello
specificato DataArray.
Esempio
Var: mioWilder, Periodi;
mioWilder = WILDER(C, Periodi);
ForceIndex
ForceIndex (DataArray, Periods): float
Descrizione
ForceIndex calcola il Force Index dello specificato DataArray.
Esempio
Var: mioosc (0);mioosc = ForceIndex (C, 13);
HHV
HHV (DataArray, Periods): float
Descrizione
HHV calcola il valore massimo del periodo passato (Periods).
Esempio
Var: miomax10g (0); miomax10g = HHV (C, 10);
if C = miomax10g then
… // Ho trovato un massimo (a 10 giorni) del valore di Chiusura
endif;
HLEnvelope
HLEnvelope (DataArray, Periods): float
Descrizione
HLEnvelope calcola l’High-Low Envelope dello specificato DataArray.
Esempio
Var: mioosc (0);mioosc = HLEnvelope (C, 12);
IMI
IMI (DataArray, Periods): float
Descrizione
IMI calcola l’Intraday Momentum Indicator dello specificato DataArray.
Keltner
Keltner (DataArray): float
Descrizione
Keltner calcola il Keltner Channel principale dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = Keltner (C);
KeltnerLower
KeltnerLower (DataArray): float
Descrizione
KeltnerLower calcola il Keltner Channel Inferiore dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = KeltnerLower (C);
KeltnerUpper
KeltnerUpper (DataArray): float
Descrizione
KeltnerUpper calcola il Keltner Channel Superiore dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = KeltnerUpper (C);
KST
KST (DataArray, PerMM1, PerRoc1, PerMM2, PerRoc2, PerMM3,
PerRoc3, PerMM4, PerRoc4, TypeMov, PerMMTrig): float
Descrizione
KST calcola il KST utilizzando 3 Medie Mobili e 3 Rate of Change, con la
media mobile di Trig di tipo TypeMov ed il periodo PerMMTrig.
TypeMov:
S = Media Mobile Semplice.
A = Media Mobile Aritmetica.
E = Media Mobile Esponenziale.
Esempio
Var: mioosc (0); mioosc = KST (C, 10, 10, 10, 15, 10, 20, 15, 30, E, 8);
LLV
LLV (DataArray, Periods): float
Esempio
Var: miomin10g (0);
miomin10g = LLV (C, 10); // il minimo dei close a 10 periodi
if C = miomin10 then
… // Ho trovato un minimo (a 10 giorni) del valore di Chiusura
endif;
Esempio2
Var: miomin10g (0);
miomin10g = LLV (L, 10); // il minimo dei Minimi a 10 periodi
if L = miomin10 then
… // Ho trovato un minimo (a 10 giorni) del minimo
endif;
MFI
MFI (DataArray, Periods): float
Descrizione
MFI calcola il Money Flow Index dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = MFI (C, 14);
MOV
MOV(DataArray, Periods, Type): float
Descrizione
MOV calcola la Media Mobile del periodo passato (Periods). Il tipo di media e’
specificato dal parametro Type.
Type:
S = Media Mobile Semplice.
E = Media Mobile Esponenziale.
A = Media Mobile Aritmetica.
Esempio
// Calcola la media mobile (S) sul titolo
media=Mov(C,30,S);
SECTION_ENTERLONG:
// Acquistiamo se il titolo sale sopra la media mobile
MACD
MACD(DataArray, periodiMM1, periodiMM2): float
Descrizione
MACD calcola il MACD utilizzando il parametro della 1° media a periodiMM1,
la 2° media a periodiMM2, senza il signal.
Esempio
Var: miomacd(0); miomacd = MACD(C, 5, 5);
MACDSIGN
MACDSIGN(DataArray, periodiMM1, periodiMM2, periodi_segnale): float
Descrizione
MACDSIGN calcola il Signal dell’MACD utilizzando il parametro della 1°
media a periodiMM1, la 2° media a periodiMM2 ed il periodo per il segnale.
Esempio
Var: miomacd(0);miomacd = MACDSIGN(C, 5, 5, 3);
Momentum
Momentum(DataArray, Periods, Type): float
Descrizione
MOMENTUM calcola il Momentum del periodo passato (Periods). Il tipo e’
specificato dal parametro Type.
Type:
D = Differential; R = Ratio; P = Percent.
Esempio
Var: miomom(0); miomom = MOMENTUM (C, 14, D);
NVI
NVI (DataArray): float
Descrizione
NVI calcola il Negative Volume Index dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = NVI (C, 9);
Type:
Add = Addizione tra i 2 DataArray.
Sub = Sottrazione tra i 2 DataArray.
Divis = Divisione tra i 2 DataArray.
Mul = Moltiplicazione tra i 2 DataArray.
Pow = Elevamento a Potenza tra i 2 DataArray.
Esempio
Variabili: operaz (0), miamedia(0);
OSC_LN
OSC_LN (DataArray): float
Descrizione
OSC_LN calcola il Logaritmo Naturale del DataArray passato.
Esempio
Var: mioLn, indvp;
mioLn = OSC_LN (C);
OscV
OscV (DataArray): float
Descrizione
OscV calcola il Volume % +/- average dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = OscV (C);
PivotR
PivotR (DataArray, Livello): float
Descrizione
PivotR calcola il Pivot Point (Superiore) dello specificato DataArray, del Livello
specificato.
Livello:
1 = Resistenza di Primo Livello.
2 = Resistenza di Secondo Livello.
3 = Resistenza di Terzo Livello.
Esempio
Var: mioosc (0); mioosc = PivotR (C, 1);
PivotS
PivotS (DataArray, Livello): float
Descrizione
PivotS calcola il Pivot Point (Inferiore) dello specificato DataArray, del Livello
specificato.
Livello:
1 = Supporto di Primo Livello.
2 = Supporto di Secondo Livello.
3 = Supporto di Terzo Livello.
Esempio
Var: mioosc (0); mioosc = PivotS (C, 1);
PriceOsc
PriceOsc (DataArray, PerMovBreve, PerMovLunga, TypeMov): float
Descrizione
PriceOsc calcola il Price Oscillator dello specificato DataArray.
PerMovBreve e PerMovLunga sono i periodi della media mobile breve e lunga.
TypeMov e’ il tipo di Media Mobile:
TypeMov:
S = Media Mobile Semplice.
E = Media Mobile Esponenziale.
PVI
PVI (DataArray): float
Descrizione
PVI calcola il Positive Volume Index dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = PVI (C, 9);
PVT
PVT (DataArray, Periods): float
Descrizione
PVT calcola il Price Volume Trend dello specificato DataArray.
Esempio
Var: mioosc (0);mioosc = PVT (C, 9);
QStick
QStick (DataArray, Periods, TypeMov): float
Descrizione
QStick calcola il QStick dello specificato DataArray.
TypeMov:
S = Media Mobile Semplice.
E = Media Mobile Esponenziale.
A = Media Mobile Aritmetica.
Esempio
Var: mioosc (0); mioosc = QStick (C, 14);
RegrLin
RegrLin(DataArray, Periodi): float
Descrizione
RegrLin calcola la regressione Lineare del periodo passato (Periodi).
Esempio
Var: miaregr(0);
miaregr = RegrLin (C, 14);
RS
RS (DataArray): float
Descrizione
RS calcola la Forza Relativa dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = RS (C);
RSI
RSI(DataArray, Periods, Type): float
Descrizione
RSI calcola l’Rsi del periodo passato (Periods). Il tipo e’ specificato dal
parametro Type.
Type:
S = Simple.
B = Blended.
T = Straight.
Esempio
Var: mioatr(0); mioatr = RSI(C, 14, S);
SAR
SAR (DataArray, Acc, MaxAcc ): float
Descrizione
SAR calcola il Parabolic Stop and Reverse Point dello specificato DataArray.
Indicare il Fattore di Accelerazione (da 0.001 a 0.1) e il Massimo valore del
Fattore di Accelerazione (da 0.1 a 1).
Esempio
Var: mioosc (0); mioosc = SAR (C, 0.02, 0.2);
STDDEV
StdDev(DataArray, Periodi): float
Descrizione
Esempio
Var: miadev(0);
miadev = StdDev(C, 14);
STOCHD
STOCHD(DataArray, Periods%K, Periods%KS, Periodo%DL): float
Descrizione
STOCHD calcola lo Stocastico utilizzando il parametro Periods%DL.
Esempio
Var: miostochd(0); miostochd = STOCHD (C, 14, 10, 14);
STOCHK
STOCHK (DataArray, Periods%K, Periods%KS): float
Descrizione
STOCHK calcola lo Stocastico %K utilizzando il parametro Periods%K,
Periods%KS e %DL.
Esempio
Var: miostochD (0), miostochK (0), par1(14), par2(14), pardl(14);
// Agggiungere qui le variabili che vi servono
miostochD = STOCHD (C, par1, par2, pardl);
miostochK = STOCHK (C, par1, par2);
SECTION_ENTERLONG:
if miostochK > miostochD and miostochK [1] <= miostochD [1] then
EnterLong(NextBar, AtOpen);
endif;
END_SECTION
SumIncDaily
SumIncDaily (DataArray): float
Descrizione
SumIncDaily calcola la Somma degli Incrementi Giornalieri dello specificato
DataArray.
Esempio
Var: mioosc (0); mioosc = SumIncDaily (C);
SwingChart
SwingChart(DataArray): float
Descrizione
SwingChart calcola lo SwingChart progettato da W.D.Gann.
TillsonT3
TILLSONT3 (DataArray, periods, Amplificazione, ShiftVerticale): float
Descrizione
TILLSONT3 utilizza la formula di Tillson.
Esempio
Var: OscTillson, indvp;
OscTillson = TILLSONT3 (C, 5, 0.7, 0);
indvp = createviewport(200, true, true);
PlotChart(OscTillson, indvp, black, solid,2); // disegna l’oscillatore
Tradingweek-M1
Descrizione
TRADINGWEEK_M1(DataArray, ParMedia1, ParTipoMedia1,
ParMediaMacd1, ParMediaMacd2, ParMedia2, ParTipoMedia2): float
Descrizione
Tradingweek-M1 utilizza la seguente formula:
MM1=mov (c,6,a);
MAC=macd (c,5,6);
OPM=op (MM1,MAC,add);
MM2=mov (OPM,5,e);
TRADINGWEEK-M1=op (MM2,MAC,add);
Esempio
Var: MioTW;
MioTW = TRADINGWEEK_M1(C, 6, 1, 5, 6, 5, 2);
Esempio
Var: mioTSI, PerSmoothing1; PerSmoothing2, PerMomentum;
mioTSI = TSI(C, PerSmoothing1, PerSmoothing2, PerMomentum);
UltimateOsc
UltimateOsc (DataArray, Periods1, Periods2, Periods3): float
Descrizione
UltimateOsc calcola l’Ultimate Oscillator dello specificato DataArray.
Esempio
Var: mioosc (0); mioosc = UltimateOsc (C, 7, 14, 28);
Variaz
Variaz (DataArray, Tipologia, ValConfr): float
Descrizione
Variaz calcola le Variazioni dello specificato DataArray. Il tipo e’ specificato dal
parametro Type.
Tipologia:
P = Percentuale.
V = Valore.
ValConfr:
PREV = Confronto con il Periodo precedente .
FIRST = Primo Periodo.
Esempio
Var: mioosc (0); mioosc = Variaz (C, P, PREC);
Vel
Vel (DataArray, Periods, TypeMov, PerShift): float
Descrizione
Vel calcola la Velocità del periodo passato (Periods), con la media mobile di
tipo TypeMov e lo shift orizzontale (PerShift, da –50 a +50).
TypeMov:
S = Media Mobile Semplice.
E = Media Mobile Esponenziale.
A = Media Mobile Aritmetica.
Esempio
Var: mioosc (0);mioosc = Vel (C, 30, S, 10);
Volatility
Volatility (DataArray): float
Descrizione
WilliamsR
WilliamsR (DataArray, Periods): float
Descrizione
WilliamsR calcola il William’s%R dello specificato DataArray.
Esempio
Var: mioosc (0);mioosc = WilliamsR (C, 14);
ZigZag
ZigZag (DataArray, ValoreAmpiezza, ValConfr): float
Descrizione
ZigZag calcola lo Zig Zag dello specificato DataArray. Il tipo e’ specificato dal
parametro Type.
ValoreAmpiezza: Valore compreso tra 0.01 e 50000.
ValConfr:PERC = Confronto in Percentuale ; POINT= Confronto in Punti.
Esempio
Var: mioosc (0); mioosc = ZigZag (C, 5, PERC);
AddTick
AddTick( Valore, N:float ): float
Descrizione
Ritorna il Valore selezionato aggiunto di N Tick. Il Valore di Tick è il piu’
piccolo movimento di prezzo incrementale che un contratto del titolo puo’ fare.
AddPerc
AddPerc( Valore, Perc:float ): float
Descrizione
Ritorna il Valore selezionato aggiunto della percentuale impostata (Perc).
Abs
Abs( Valore: float ): float
Descrizione
Ritorna il valore assoluto del valore specificato.
ArcTan
ArcTan( Valore: float ): float
Descrizione
Calcola l’arcotangente del numero specificato, in gradi.
BarSince
BarSince(condizione): integer
Descrizione
Conta il numero di barre passate, da quando la condizione si è verificata e
continua ad essere valida.
Nota Bene: Questa funzione deve essere scritta al di fuori delle sezioni (Enter ed
Exit), in quanto deve essere sempre controllata.
Esempi:
if BarSince(C > C[1]) = 3 then
{Se sono in un trend in salita, dove per almeno 3 barre consecutive la chiusura è
stata superiore di quella precedente}
...
endif;
BarSinceInverted(condizione): integer
Descrizione
Conta il numero di barre passate fino ad ora, quando si verificò la condizione,
ma adesso non lo è più.
Nota Bene: Questa funzione deve essere scritta al di fuori delle sezioni (Enter ed
Exit), in quanto deve essere sempre controllata.
Esempi:
{Se è da 3 barre fa che non sono più long, quindi ora sono flat ... }
if BarSince(PositionDir=1) = 3 then
// faccio altri controlli ... oppure compro
endif;
Cos
Cos( Valore: float ): float
Descrizione
Ritorna il coseno dell’angolo specificato. L’angolo dovrebbe essere specificato
in gradi.
Cosh
Cosh( Valore: float ): float
CrossOver
CrossOver(DataArray1, DataArray 2): boolean
Descrizione
Ritorna True nel momento in cui si verifica il Cross della prima curva
DataArray1 al di sopra della curva DataArray2.
CrossUnder
CrossUnder(DataArray1, DataArray 2): boolean
Descrizione
Ritorna True nel momento in cui si verifica il Cross della prima curva
DataArray1 al di sotto della curva DataArray2.
CrossOverLine
CrossOverLine( IdOggetto:integer, DataArray:Array): float;
Descrizione
Ritorna True nel momento in cui si verifica il Cross dell’oggetto (IdOggetto) al
di sopra della curva DataArray
Esempio
CrossUnderLine
CrossUnderLine( IdOggetto:integer, DataArray:Array): float;
Descrizione
Ritorna True nel momento in cui si verifica il Cross dell’oggetto (IdOggetto) al
di sotto della curva DataArray
if CrossUnderLine(idogg1, C) then
// Se l’oggetto attraversa sotto il valore di chiusura del Titolo
colorbar(yellow); // colora di giallo
else
colorbar(fuchsia); // altrimenti colora di fucsia
endif;
Dec
Dec( Valore: integer )
Descrizione
Decrementa la variabile passata di 1.
Exp
Exp( Valore: float ): float
Descrizione
Ritorna il valore di "e" elevato al valore specificato Valore, dove "e" è la base
del logaritmo naturale.
HighestSince
HighestSince (N, Espressione, DataArray)
Descrizione
Ritorna il valore massimo del DataArray dall' N-esima occorenza quando l'
"Espressione" risulto’ vera.
Esempio:
HighestSince (2, crossover(C, MOV(C, 10, S)), C)
Inc
Inc( Valore: integer )
Descrizione
Incrementa la variabile passata di 1.
LN
LN( Valore: float ): float
Descrizione
Ritorna il Logaritmo naturale del valore specificato.
LowestSince
LowestSince (N, Espressione, DataArray)
Descrizione
Ritorna il valore minimo del DataArray dall' N-esima occorenza quando l'
"Espressione" risulto' vera.
Esempio:
LowestSince (2, crossunder(C, MOV(C, 10, S)), C)
Max
Max( n1, n2: float ): float
Descrizione
Ritorna il più grande tra i due valori specificati.
Min
Min( n1, n2: float ): float
Descrizione
Ritorna il più piccolo tra i due valori specificati.
Pi
Pi: float
Descrizione
Ritorna Pi-greco, circa 3.1415927.
Random
Random: float
Descrizione
Ritorna un numero casuale compreso tra 0 e 1.
Randomize
Randomize
Descrizione
Inizializza il generatore di numeri random con un valore random. Chiamare
questa funzione all’inizio della formula per assicurarsi che si ottengano dei
valori random differenti ogni volta che lo script viene eseguito.
Round
Round( Valore: float ): integer
Descrizione
Arrotonda il valore a virgola mobile con il valore intero più vicino.
Sin
Sin( Valore: float ): float
Descrizione
Ritorna il seno dell’angolo specificato. L’angolo dovrebbe essere specificato in
gradi.
Sinh
Sinh( Valore: float ): float
Descrizione
Ritorna il seno iperbolico dell’angolo specificato.
Sqrt
Sqrt( Valore: float ): float
Descrizione
Ritorna la radice quadrata del valore specificato.
Esempio:
Var: media1(0), somma;
Tan
Tan( Valore: float ): float
Descrizione
Ritorna la tangente dell’angolo specificato. L’angolo dovrebbe essere
specificato in gradi.
Tanh
Tanh( Valore: float ): float
Descrizione
Ritorna la tangente iperbolica del Valore specificato.
Esempio
{faccio qualcosa}
………..
if condizione then
TerminateTs; // Esce dal ciclo e non esegue più nient’altro
endif;
WithIn
WithIn(Valore1, valore2, valore3 ): float
Descrizione
Ritorna True se valore1 è compreso tra i valori valore2 e valore3:
= True se Valore1 > Valore2 and Valore1 < Valore3.
Funzioni di Output
FileWriteString
FileWriteString (nomefile:string, miastringa:string; acapo:boolean)
Descrizione
Permette di scrivere una stringa all'interno di un file.
Nel parametro "nomefile" va specificato anche il percorso, come mostrato in
esempio.
Esempio
if miacondizione then
FileWriteString("c:\prova.txt", "condizione verificata", true);
endif;
FileWriteVal
FileWriteVal (nomefile:string; miovalore:single; acapo:boolean)
Descrizione
Esempio
if miacondizione then
FileWriteVal("c:\prova.txt", C, true);
// scrivo sul file il valore di chiusura di ogni candela (e vado a capo)
endif;
FileWriteTicker
FileWriteTicker(nomefile:string; acapo:boolean)
Descrizione
Permette di scrivere il codice VT del Titolo all'interno di un file.
Nel parametro "nomefile" va specificato anche il percorso, come mostrato in
esempio.
Esempio
if miacondizione then
FileWriteTicker("c:\prova.txt", false);
endif;
FileWriteDescriz
FileWriteTicker(nomefile:string; acapo:boolean)
Descrizione
Permette di scrivere la descrizione del Titolo all'interno di un file.
Nel parametro "nomefile" va specificato anche il percorso, come mostrato in
esempio.
Esempio
if miacondizione then
FileWriteDescriz("c:\prova.txt", false);
endif;
FileWriteStringVal2
FileWriteStringVal2 (nomefile:string; miastringa1:string;
miovalore1:single; miastringa2:string; miovalore2:single; acapo:boolean)
Descrizione
Permette di scrivere una coppia di stringa, valore, all'interno di un file.
Esempio
if miacondizione then
FileWriteStringVal2("c:\prova.txt", "compra se supera ", C, " oppure vendi se
va sotto ", L, true);
endif;
FileWriteDateHour
FileWriteDateHour (nomefile:string; acapo:boolean)
Descrizione
Permette di scrivere la data e ora attuale, all'interno di un file.
Nel parametro "nomefile" va specificato anche il percorso, come mostrato in
esempio.
Esempio
if miacondizione then
FileWriteDateHour("c:\prova.txt", true);
// scrivo sul file la data e ora di ogni candela (e vado a capo)
endif;
FileWriteDescr
FileWriteDescr (nomefile:string; acapo:boolean)
Descrizione
Permette di scrivere il nome del titolo (descrizione) all'interno di un file.
Nel parametro "nomefile" va specificato anche il percorso, come mostrato in
esempio.
Esempio
if miacondizione then
FileWriteDescr("c:\prova.txt", true);
// Se sto analizzando Fiat mi ritorna "Fiat"
endif;
FileWriteTicker
FileWriteTicker (nomefile:string; acapo:boolean)
Descrizione
Permette di scrivere il codice del titolo (Ticker) all'interno di un file.
Nel parametro "nomefile" va specificato anche il percorso, come mostrato in
esempio.
Esempio
if miacondizione then
PlaySound
PlaySound (nomefile:stringa)
Descrizione
Permette di eseguire un file sonoro (wav), in Realtime, al verificarsi della
condizione che viene verificata sull'ultima barra Completata.
Nel parametro "nomefile" va specificato anche il percorso, come mostrato in
esempio.
Esempio
if mia_condizione then
PlaySound ("c:\windows\media\chimes.wav");
endif;
MsgLista
MsgLista(tipoOp:integer, ValoreOp:Float, Messaggio:string);
Descrizione
Mostra l’ultimo messaggio, indicato in “Messaggio”, sulla finestra “Lista
Messaggi Trading System”.
Esempio
if PositionDir <> 1 then // se non sono Long
if condizione_di_acquisto then
EnterLong(NextOpen, C, stop); // COMPRA Domani se supera la
chiusura di oggi
MsgLista(tsEnterlong, C, "Domani se supera :");
endif;
endif;
EnterLong
EnterLong(Barra, Valore, {LIMIT | STOP| EXACT}, NumBarreAttivo);
Descrizione
Apre una Posizione Long nella barra impostata.
Vediamo i valori che possiamo assegnare ai parametri:
Barra: NextBar
Bar
Valore: AtClose
AtOpen
Valore numerico (es: O, C, Miovalore)
3° parametro (facoltativo) :
LIMIT : Esegue l’ordine quando il prezzo viene raggiunto o è inferiore (<=
prezzo).
STOP : Esegue l’ordine quando il prezzo viene raggiunto o superato (>= prezzo)
EXACT : Esegue l’ordine quando il prezzo viene raggiunto (= prezzo)
Pertanto:
per impostare un Target, l'ordine sarà di tipo LIMIT,
per impostare uno Stop loss, l'ordine sarà di tipo STOP,
inseriamo EXACT se vogliamo specificare il quarto parametro(Numbarreattivo)
senza LIMIT e STOP.
Esempio
SECTION_ENTERLONG:
If condizione_di_entrata then
EnterLong(NextBar, AtOpen);
Endif;
END_SECTION
ExitLong
ExitLong(Barra, Valore, {LIMIT | STOP| EXACT}, NumBarreAttivo);
Descrizione
Chiude una Posizione Long nella barra impostata.
Esempio
SECTION_EXITLONG:
If condizione_di_uscita then
ExitLong(NextBar, AtOpen);
Endif;
END_SECTION
EnterShort
EnterShort(Barra, Valore, {LIMIT | STOP| EXACT}, NumBarreAttivo);
Descrizione
Apre una Posizione Short nella barra impostata.
Vediamo i valori che possiamo assegnare ai parametri:
Barra: NextBar
Bar
Valore: AtClose
AtOpen
Valore numerico (es: O, C, Miovalore)
3° parametro (facoltativo) :
LIMIT : Esegue l’ordine quando il prezzo viene raggiunto o superato (>=
prezzo)
Pertanto:
per impostare un Target, l'ordine sarà di tipo LIMIT,
per impostare uno Stop loss, l'ordine sarà di tipo STOP
inseriamo EXACT se vogliamo specificare il quarto
parametro(Numbarreattivo) senza LIMIT e STOP.
Esempio
SECTION_ENTERSHORT:
If condizione_di_entrata then
EnterShort(NextBar, AtOpen);
Endif;
END_SECTION
ExitShort
ExitShort(Barra, Valore, {LIMIT | STOP| EXACT}, NumBarreAttivo);
Descrizione
Chiude una Posizione Short nella barra impostata.
Vediamo i valori che possiamo assegnare ai parametri:
Barra: NextBar
Bar
Valore: AtClose
AtOpen
Valore numerico (es: O, C, Miovalore)
3° parametro (facoltativo) :
LIMIT : Esegue l’ordine quando il prezzo viene raggiunto o superato (>=
prezzo)
STOP : Esegue l’ordine quando il prezzo viene raggiunto o è inferiore (<=
prezzo).
EXACT : Esegue l’ordine quando il prezzo viene raggiunto (= prezzo).
Pertanto:
per impostare un Target, l'ordine sarà di tipo LIMIT,
Esempio
SECTION_EXITSHORT:
If condizione_di_uscita then
ExitShort (NextBar, AtOpen);
Endif;
END_SECTION
InstallStopLoss
InstallStopLoss (tipoval:integer, valore: single);
Descrizione
Imposta uno StopLoss, limitando le perdite.
Ogni volta che viene effettuata un’operazione di entrata (Long o Short), viene
attivato lo StopLoss impostato. Pertanto, quando la condizione di stop si verifica
(es: il titolo scende sotto del 3% del livello di acquisto), viene chiusa la
posizione attuale.
tipoval:
INPERC = in valore: viene impostata una percentuale.
INVAL = in valore: viene impostato un valore.
INTICK = in valore: viene impostato un numero di tick.
INDIFF = in valore: viene impostato una differenza (in valore).
Note:
1. Con l’utilizzo degli StopLoss è possibile uscire dalle posizioni, anche durante
l’aggiornamento dei dati in Tempo Reale, cioè prima che la barra sia conclusa.
2. La stessa funzione vale anche per posizioni Long e per quelle Short.
Esempio
Variabili: media1, media2;
// Media mobili
media1=Mov(C,10,E); // Media piu' lenta
media2=Mov(C,5,E); // Media piu' veloce
Se, durante l’aggiornamento delle quotazioni, il titolo scende al di sotto del 3%,
chiude la posizione.
Stessa cosa se fossimo entrati Short: al di sopra del 3% avrebbe chiuso la
posizione.
InstallTakeProfit
InstallTakeProfit (tipoval:integer, valore: single)
Descrizione
Imposta un TakeProfit, prendendo profitto.
Ogni volta che viene effettuata un’operazione di entrata (Long o Short), viene
attivato il TakeProfit impostato. Pertanto, quando la condizione di take si
verifica (es: il titolo sale sopra il 3% del livello di acquisto), viene chiusa la
posizione attuale.
tipoval:
INPERC = in valore: viene impostata una percentuale.
INVAL = in valore: viene impostato un valore.
INTICK = in valore: viene impostato un numero di tick.
INDIFF = in valore: viene impostato una differenza (in valore).
Note:
1. Con l’utilizzo dei TakeProfit è possibile uscire dalle posizioni, anche durante
l’aggiornamento dei dati in Tempo Reale, cioè prima che la barra sia conclusa.
2. La stessa funzione vale anche per posizioni Long e per quelle Short.
Esempio
Variabili: media1, media2;
// Media mobili
// gli stoploss e take profit, se non devono essere modificati, devono essere
aggiunti all’inizio di questo codice. In questo modo, ad ogni entrata di posizione,
viene attivato lo stoploss (o take profit) attivato.
InstalltakeProfit(INPERC, 3); // Chiudi posizione se sto guadagnando il
3%.
Se, durante l’aggiornamento delle quotazioni, il titolo sale sopra il 3%, chiude la
posizione.
Stessa cosa se fossimo entrati Short: al di sotto del 3% avrebbe chiuso la
posizione.
InstallTrailingProfit
InstallTrailingProfit (tipoval:integer, valore: single, valoreritracc: single);
Descrizione
Imposta uno stop ad inseguimento, prendendo profitto.
Ogni volta che viene effettuata un’operazione di entrata (Long o Short), viene
attivato il TrailingProfit impostato.
Esempio di Acquisto:
InstallTrailingProfit(INPERC, 3, 1);
Fase 1 – Il titolo sale sopra il 3%: Viene attivato uno stoploss ad inseguimento
del 1%.
Fase 2 – Quando il titolo sale, viene aggiornato lo stop (1%) sul massimo
raggiunto.
Fase 3 – Quando il titolo scende al di sotto del 1%, rispetto al massimo, chiude
la posizione.
tipoval:
INPERC = in valore e valoreritracc viene impostata una percentuale.
INVAL = in valore e valoreritracc viene impostato un valore.
Note:
1. Con l’utilizzo dei TakeProfit è possibile uscire dalle posizioni, anche durante
l’aggiornamento dei dati in Tempo Reale, cioè prima che la barra sia conclusa.
2. La stessa funzione vale anche per posizioni Long e per quelle Short.
Esempio
Variabili: media1, media2;
// Media mobili
media1=Mov(C,10,E); // Media piu' lenta
media2=Mov(C,5,E); // Media piu' veloce
// gli stoploss e take profit, se non devono essere modificati, devono essere
aggiunti all’inizio di questo codice. In questo modo, ad ogni entrata di posizione,
viene attivato lo stoploss (o take profit) attivato.
InstallTrailingProfit(INPERC, 3, 1); // Chiudi posizione se, dopo aver
raggiunto il 3%, scende dell’1%.
RemoveStopLoss
RemoveStopLoss;
Descrizione
Rimuove lo StopLoss impostato in precedenza.
Utilizzato per disattivare gli stop, quando non sono più necessari.
RemoveTakeProfit
RemoveTakeProfit;
Descrizione
Rimuove il TakeProfit e il TrailingProfit impostati in precedenza.
Utilizzato per disattivare gli stop, quando non sono più necessari.
PositionValue
PositionValue: float
Descrizione
Ritorna il valore di entrata della posizione attuale di trading.
PositionQta
PositionQta: float
Descrizione
Ritorna la quantità attuale in carico.
se qta = 0 allora posizione FLAT
se qta > 0 allora posizione LONG
se qta < 0 allora posizione SHORT
PositionLong
PositionLong: boolean
Ritorna true se la posizione attuale di trading e’ Long.
PositionShort
PositionShort: boolean
Ritorna true se la posizione attuale di trading e’ Short.
CreateViewport
CreateViewport ( Dimzona, Mostragriglia, Crea) : integer
Esempio
Var: Indzona1(0);
// Creo una zona, sotto al grafico, alta il 10% del grafico stesso.
Indzona1 = CreateViewport(100, 0, true);
…………..
(vedere esempio sotto)
PlotChart
PlotChart (DataArray, IndZona, Colore, Stile, Spessore) : integer
Descrizione
Plotta sul grafico la Curva impostata (DataArray) nella Zona indicata con
“IndZona”.
DataArray : è l’array, l’oscillatore da plottare.
IndZona: è l’indice della zona su cui plottare. Con 0 viene plottato sopra il Titolo
principale.
Colore: indica il colore utilizzato per disegnare la curva, si veda la sezione
Costanti.
Stile: indica lo stile utilizzato per disegnare la curva, si veda la sezione
Costanti.
Spessore: indica lo spessore utilizzato per disegnare la curva.
SECTION_ENTERLONG:
……
SECTION_EXITLONG:
……
END_SECTION
Note:
- In Realtime: Attivare la voce “Attiva in Realtime” (bottone TS verde), per
permettere il ricalcolo Automatico delle Curve.
- PlotChart puo’ essere utilizzato anche per tracciare delle Linee Orizzontali.
Esempio2
………..
// Alla fine della Formula
// Tracciare una Linea orizzontale al livello 30.
PlotChart(30, Indzona1, red, solid, 1);
// Tracciare una Linea orizzontale al livello 0.
PlotChart(0, Indzona1, red, solid, 1);
ColorBar
ColorBar ( Colore )
Descrizione
Colora la barra attuale sul grafico attivo.
Colore : colore d’applicare alla barra attuale. Per i codici dei colori vedere la
Sezione “Costanti”.
Esempio
If Condizione1 then
ColorBar (green);
Endif;
Esempio
If Condizione1 then
ColorNextBar (Moneygreen);
Endif;
ColorPrevBar
ColorPrevBar (Colore , numbarre)
Descrizione
Colora la barra N-esima precedente a quella attuale sul grafico attivo.
Se il grafico è daily allora indica la barra del giorno N precedente.
Colore : colore d’applicare alla barra successiva. Per i codici dei colori vedere la
Sezione “Costanti”.
numbarre : numero di barre precedenti a quella attuale, in cui colorare la barra.
Esempio
If Condizione1 then
ColorPrevBar (red, 2) // 2 barre prima
Endif;
DrawLine
DrawLine ( codogg , indzona, data1, valore1, data2, valore2, colore,
spessore, [stile], [opzioni])
Descrizione
Disegna una Linea sul Grafico (indzona).
Esempio
if Condizione_Primo_Punto then
miadata1 = GetDate; //ottengo la data corrente
valore1 = C;
endif;
If Condizione_Secondo_Punto then
// plotto la linea e la estendo all’infinito
DrawLine (0, indzona, miadata1, valore1, GetDate, C, green, 2, 0,
EXTENDED);
data2 = GetDate;
valore2 = C;
lin1 = DrawLine(lin1, indzona, data1, valore1, data2, valore2, red, 2, 0);
Endif;
If Condizione_Secondo_Punto_Aggiorno then
// In questo modo modifico sempre la linea (lin1).
lin1 = DrawLine(lin1, indzona, data1, valore1, GetDate, C, green, 2, 0);
Endif;
Nota:
Al posto di “Condizione_Primo_Punto, Condizione_Secondo_Punto e
Condizione_Secondo_Punto_Aggiorno”, occorre impostare delle condizioni.
DrawVLine
DrawVLine ( codogg , indzona, data, colore, spessore, [stile], [opzioni])
Esempio
Var: lin1(0), // codice dell’oggetto
indzona(0); // zona del grafico principale
Nota:
Al posto di “Condizione_Primo_Punto” occorre impostare una o più
Condizioni.
DrawVLineIf
DrawVLineIf (condizione, colore, spessore, [stile], [opzioni])
Descrizione
Disegna una nuova Linea Verticale sul Grafico Principale, se la condizione
risulta vera.
Esempio
MiaCondizione = (H > H[1]) and (C > MOV(C, 10, S); // mettere la condizione
DrawHLine
DrawHLine ( codogg , indzona, valore, colore, spessore, [stile], [opzioni])
Descrizione
Disegna una Linea Orizzontale sul Grafico (indzona).
Esempio
Nota:
Al posto di “Condizione_Primo_Punto” occorre impostare una o più
Condizioni.
Esempi
// plot di un cerchio su di un valore
DrawCircle (0, indzona, miovalore, middle, green, 0, 3);
// plot di un cerchio sul Massimo della candela del titolo
DrawCircle (0, indzona, GetDate, up, green, 0, 3);
// plot di un cerchio sul Minimo della candela del titolo
DrawCircle (0, indzona, GetDate, down, green, 0, 3);
// plot di un cerchio sull’intera candela del titolo
DrawCircle (0, indzona, GetDate, middle, green, 0, 3);
DrawHLinePer
DrawHLinePer ( codogg , indzona, data1, valore1, data2, colore, spessore,
[stile], [opzioni])
Descrizione
Disegna una Linea Orizzontale sul Grafico, a partire da una data, fino ad un certo
valore.
CodOgg: è il codice dell’oggetto da utilizzare (serve per poter riaggiornare lo
stesso oggetto su diversi punti della formula), con NEWOGG viene creato tutte
le volte un nuovo oggetto.
IndZona: è l’indice della zona su cui plottare. Con 0 viene plottato sopra il
Titolo principale.
Data1: data in cui iniziare a plottare la linea Orizzontale (la funzione GetDate
restituisce la data
Esempio1
Var: lin1(0), // codice dell’oggetto
indzona(0), data1(0); // zona del grafico principale
If Condizione_ A then
//Esempio1: plotto la linea Orizzontale a 25000, fino ad adesso (GetDate)
DrawHLinePer (0, indzona, data1, 25000, GetDate, green, 1, 0);
Endif;
If Condizione_ B then
//Esempio2:
// plotto la linea Orizzontale da GetDate, fino in fondo
DrawHLinePer (0, indzona, GetDate , C, LINEEND, red, 1, 0);
endif;
Nota:
Al posto di “Condizione_Primo_Punto” occorre impostare una o più
Condizioni.
Var: previousH,previousL,previousC,
Pivot,R1,S1, R1mid,S1mid, prova, cambiatogiorno,
lin1,lin2,lin3,lin4,lin5,
indperiodo, numper, ggini, primavolta(-1);
previousH=EOD.H[1];
// Calcola Pivot
R1=(2*Pivot)-previousL;
Pivot=(previousH+previousC+previousL)/3;
S1=(2*Pivot)-previousH;
R1mid=(R1+pivot)/2;
S1mid=(S1+pivot)/2;
if cambiatogiorno then
// Termina le linee precedenti qui, Crea nuove Linee per il prossimo Giorno
lin1 = CREATEOGG;
lin2 = CREATEOGG;
lin3 = CREATEOGG;
lin4 = CREATEOGG;
lin5 = CREATEOGG;
indperiodo = 0;
ggini = GetDate; // da dove parto a tracciare la linea orizzontale
primavolta = false;
endif;
indperiodo = indperiodo + 1;
numper = indperiodo;
Costanti
Colori
Aqua
Black
Blue
Cream
DkGray
Fuchsia
Gray
Green
Lime
LtGray
Maroon
MedGray
MoneyGreen
Navy
Olive
Purple
Red
Silver
SkyBlue
Teal
White
Yellow
Stile Curva
Solid: linea continua
Dash: trattini
Dot: punti
DashDot: trattino punto trattino punto
DashDotDot trattino punto punto trattino punto punto
Compressione Dati
Creazione Automatica di un TS