Discussione: Scripts di esempio
-
12-03-13, 11:58 #81
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ciao,
la sintassi corretta è:
{ SCRIPT PERSONALITY: PASCAL } var Azione: TUnderlying begin Azione := CurrentStrategy.GetMainUnderlying Azione.AddOrder(1,MARKET) end
Aggiungo una considerazione che forse potrà sembrare stupida (e me ne scuso in anticipo se lo fosse):
per sapere se la sintassi di un codice è corretta, il modo più rapido e più efficace è sicuramente quello di eseguirlo!Ultima modifica di Smash; 12-03-13 alle 12:01
-
12-03-13, 12:42 #82
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Meglio tardi che mai!
var Under: TUnderlying ; c17000: TOption Begin Under := CurrentStrategy.GetMainUnderlying c17000 := CurrentStrategy.GetByName('C @ 17000 03-2013') if(under.Reference > c17000.Strike) Then begin c17000.Buy(2, MARKET) End End
Nota: se l'opzione non è già presente nello Strategy Builder, lo script non fa nulla!
-
12-03-13, 14:26 #83
- Data Registrazione
- Aug 2010
- Località
- Padova
- Messaggi
- 738
-
13-03-13, 11:19 #84
-
13-03-13, 11:35 #85
- Data Registrazione
- Aug 2008
- Località
- Edolo (BS)
- Messaggi
- 693
Rollata a Delta
Nell'attesa che Max, tempo permettendo, ci illumini sui metodi alternativi per codificare...
Proseguo con i miei codici spartani in Basic
Aggiungiamo qualcosa alla rollata semplice di qualche giorno fa...
In questo esempio la rollata viene eseguita non a un valore specifico del sottostante ma a un valore del Delta della prima opzione venduta... in tal caso 0.5.
Ovvero...se il delta della prima put venduta diventa minore di -0.5 (put...quindi Delta negativo) allora scatta la rollata.
Inoltre ho definito la variabile "Lotti", dove andrò ad inserire il numero di opzioni vendute, che non sarà sempre 1, quindi per comodità si imposta una variabile apposita, che al momento ad esempio ho settato a 5.
Ovvimente nel codice, al momento del comando di invio ordine, non si usa più il numero 1 ma la variabile stessa.
Ho quindi aggiunto 2 variabili:
Valore_Delta (As Double perchè è un numero con la virgola)
Lotti (As Integer perchè è un numero intero)
ATTENZIONE! Non è un esempio da usare a mercato reale, è solo per capire la logica dello script, perchè in realtà andrebbero inseriti altri controlli relativi alla strategia e altri parametri...
Ovviamente Max potrà correggermi se c'è qualche errore nello script...anche perchè sto cercando di imparare anche io
' Dichiarazione Variabili
dim sottostante as TUnderlying
dim put_Vendute1 as TOption
dim put_Vendute2 as TOption
dim put_Comprate1 as TOption
dim Valore_Delta as Double
dim Lotti as Integer
' Definizione Variabili
sottostante = CurrentStrategy.GetByName("SIEMENS")
put_Vendute1 = CurrentStrategy.GetByName("P @ 80 03-2013")
put_Vendute2 = CurrentStrategy.GetByName("P @ 78 03-2013")
put_Comprate1 = CurrentStrategy.GetByName("P @ 72 03-2013")
Valore_Delta = 0.5
Lotti = 5
' Rollata
if (put_Vendute1.Delta <= -Valore_Delta) then
put_Vendute1.AddOrder(Lotti, MARKET)
put_Vendute2.AddOrder(-Lotti, MARKET)
end if
-
13-03-13, 12:08 #86
-
13-03-13, 12:19 #87
- Data Registrazione
- Aug 2008
- Località
- Edolo (BS)
- Messaggi
- 693
Vero Apo, però se tu metti nello strategy builder una put venduta...la colonna del Delta da segno meno...e quello è il valore da controllare... il delta della singola gamba...
Quando è inferiore a -0.5 l'opzione diventa ITM
Correggetemi se mi è sfuggito qualcosa ovviamente...
-
13-03-13, 13:08 #88
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
-
13-03-13, 20:29 #89
-
13-03-13, 22:54 #90
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351