• Pagina:
  • 1
  • 2
  • 3

ARGOMENTO:

Nuova sezione dedicata all'OE 6 Anni 6 Mesi fa #26705

  • Framzero
  • Avatar di Framzero
  • Offline
  • New Member
  • New Member
  • Messaggi: 7
  • Ringraziamenti ricevuti 0

Buongiorno,
ho comprato da pochissimo OE ma sono in imbarazzo per continui problemi di programmazione. Chiedo aiuto qui...
Vorrei testare una strategia basata sulle Bande di Bollinger, quelle "normali" a 2 deviazioni e una fascia più piccola a 1. La strategia funziona così (ma è solo un esempio): BuyCall al cross above della Banda Grande Inferiore, se questa condizione è avvenuta -> sellcall a delta (non so, 0.2,0.3) al cross below della banda piccola inferiore. Come posso dire a OE da Tradestation di verificare se c'è una posizione precedentemente aperta? E' possibile o in qualche modo dovrei scriverlo da OE?(In questo caso non ho idea di come potrei fare...)

Spero che la domanda non sia troppo sciocca.

Grazie mille anticipatamente

Francesco Buzzi


Allora per questo tipo di strategie bisogna utilizzare le funzioni di integrazione da TS come da lei indicato.
In questo caso, al verificarsi delle condizioni da lei scritte dovrà utilizzare le funzioni BuyCall e SellPut.
Nello scegliere lo strike, se ho capito bene, lei vorrebbe utilizzare nel primo caso la banda di Bollinger, le serve quindi il comando “nearest” nella funzione GetStrike, dando come valore quello da lei desiderato.
Nel secondo caso invece deve usare la funzione GetStrike in modalità Delta, e indicare il delta voluto.

Per quanto riguarda la posizione dipende da qual è il suo scopo, se fosse più chiaro potrei suggerirle come procedere.


Intanto grazie per la risposta.
In sostanza vorrei dire Ts di aprire la seconda opzione (SellCall su una banda di bollinger più stretta) solamente se è già stata aperta la BuyCall sulla Banda grande. Così che il risultato sia un spread aperto in 2 momenti differenti. In sostanza se fosse EasyLanguage "normale" bastarebbe scrivere marketposition = 1 then ecc ecc ma presumo che TS non riconosca le opzioni.

Accedi o ✅Crea un account per partecipare alla conversazione.

Nuova sezione dedicata all'OE 6 Anni 6 Mesi fa #26738

  • ManuelVene
  • Avatar di ManuelVene Autore della discussione
  • Offline
  • Junior Member
  • Junior Member
  • Messaggi: 33
  • Ringraziamenti ricevuti 9

Buongiorno,
ho comprato da pochissimo OE ma sono in imbarazzo per continui problemi di programmazione. Chiedo aiuto qui...
Vorrei testare una strategia basata sulle Bande di Bollinger, quelle "normali" a 2 deviazioni e una fascia più piccola a 1. La strategia funziona così (ma è solo un esempio): BuyCall al cross above della Banda Grande Inferiore, se questa condizione è avvenuta -> sellcall a delta (non so, 0.2,0.3) al cross below della banda piccola inferiore. Come posso dire a OE da Tradestation di verificare se c'è una posizione precedentemente aperta? E' possibile o in qualche modo dovrei scriverlo da OE?(In questo caso non ho idea di come potrei fare...)

Spero che la domanda non sia troppo sciocca.

Grazie mille anticipatamente

Francesco Buzzi


Allora per questo tipo di strategie bisogna utilizzare le funzioni di integrazione da TS come da lei indicato.
In questo caso, al verificarsi delle condizioni da lei scritte dovrà utilizzare le funzioni BuyCall e SellPut.
Nello scegliere lo strike, se ho capito bene, lei vorrebbe utilizzare nel primo caso la banda di Bollinger, le serve quindi il comando “nearest” nella funzione GetStrike, dando come valore quello da lei desiderato.
Nel secondo caso invece deve usare la funzione GetStrike in modalità Delta, e indicare il delta voluto.

Per quanto riguarda la posizione dipende da qual è il suo scopo, se fosse più chiaro potrei suggerirle come procedere.


Intanto grazie per la risposta.
In sostanza vorrei dire Ts di aprire la seconda opzione (SellCall su una banda di bollinger più stretta) solamente se è già stata aperta la BuyCall sulla Banda grande. Così che il risultato sia un spread aperto in 2 momenti differenti. In sostanza se fosse EasyLanguage "normale" bastarebbe scrivere marketposition = 1 then ecc ecc ma presumo che TS non riconosca le opzioni.


Ciao Francesco,

Allora, facciamo finta che il tuo segnale di acquisto della call delta 50 sia un cross dal basso verso l'alto della bollinger band inferiore.
E che il tuo sengale di "avvenuta inversione" sia il ritorno alla media mobile, al cui vuoi vendere una call delta 20.

Questa strategia è del tipo più complessa da codificare perchè richiede non solo l'integrazione con TS, ma anche il filtraggio dei segnali che TS genera.
Partiamo dal lato TS:

Questa immagine è nascosta per gli ospiti.
Effettua il login o registrati per vederlo.



questa è la tua strategia: come vedi viene prima dichiarata l'integrazione, riga 1 e 2 (chiaramente dovrai indicare il TUO percorso del file, assicurandoti che esista altrimenti darà errore).
Poi viene calcolata la Bollinger Band inferiore.
Successivamente viene verificata la condizone di ingresso long, quindi il cross del prezzo sulla Bollinger Band inferiore, nel cui caso viene acquistata una call delta 50.
Per ultimo c'è il segnale di ritracciamento, ovvero il cross over la media mobile a 10 periodi, dove andiamo a vendere una call delta 20.

Passiamo ora al lato OE: qui non sarà più sufficiente dire semplicemente di eseguire passivamente tutti i segnali di TradeStation, ma vogliamo filtrarli sulla base della posizione.
Infatti tu hai detto che vogliamo eseguire i segnali Long solo se siamo flat, e i segnali Short solo se siamo Long.
Per fare questo, dovremo ogni giorno guardare che segnali ci sono, e poi eseguirli se la posizione è quella desiderata.
Si fa così (questo è l'editor di OE):

Questa immagine è nascosta per gli ospiti.
Effettua il login o registrati per vederlo.



Nella riga 2 dichiariamo le variabili di cui abbiamo bisogno.
Nella riga 5 mettiamo i a 0 perchè poi la usiamo per scorrere tutti i segnali che TS ha generato per LA SOLA GIORNATA della barra corrente.

Infatti facciamo (nella riga 8) while i < GetTSInputsCount(), quest'ultima funzione ci dice quanti segnali TS ha generato per OGGI, nella maggior parte delle barre è = 0.
Quando abbiamo qualche segnale allora vogliamo capire di che sengale si tratta, se un buy (Long) o un sell (Short).
Per fare questo utilizziamo la funzione GetTSInputInfoInt, in modalità "Side".
Alla funzione GetTSInputInfoInt dobbiamo passare l'ID del segnale di cui vogliamo prendere l'informazione, questo ID lo recuperiamo con la funzione GetTSInputID(ByPos, i).

Quindi, ricapitolando:
- alla riga 11 prendo l'ID dell'i-esimo segnale di oggi.
- nella riga 14 dico: "se questo segnale è un sengale di acquisto (Long), e sono flat (Position = Flat) allora esegui il segnale (riga 15, a cui passo l'ID di questo segnale).
- nella riga 18 dico: "se questo segnale è un segnale di vendita (Short), e sono long (Position = Long) allora esegui il segnale (riga 19 a cui passo l'ID di questo segnale).

Attenzione: se non passassi alcun ID alla funzione di esecuzione dei segnali, lei eseguirebbe tutti quelli presenti nella barra corrente. Quindi se ce ne fossero più di uno rischi che, anche se solo uno dei due ingressi fosse attivato, li eseguirebbe entrambi.
Comunque non è il nostro caso in quanto credo sia molto raro che due segnali basati su periodi così lunghi siano generati nella stessa giornata.

Nel System Launcher poi dovrai usare questi input:

Questa immagine è nascosta per gli ospiti.
Effettua il login o registrati per vederlo.



facendo attenzione di selezionare la strategia da te appena create per la gestione filtrata dei segnali, e di mettere il file txt giusto nel secondo riquadro blu.

Questo è quello che salta fuori nella trade list, come vedi gli ordini Buy avvengono solo se sono Flat, e gli ordini Sell solo se sono Long:

Questa immagine è nascosta per gli ospiti.
Effettua il login o registrati per vederlo.



Si, una volta eseguito il test, puoi anche combinare la copertura: devi andare nel performance report del test e cliccare su Tools->EL Code for Futures Hedging. Questo sarebbe il codice risultante:

Questa immagine è nascosta per gli ospiti.
Effettua il login o registrati per vederlo.



che poi dovresti andare a eseguire in TS, ricordandoti di attivare le ultime linee con il blocco di esportazione.
Dopodichè importi l'equity line in OE e il gioco è fatto.

A presto,
Manuel

Accedi o ✅Crea un account per partecipare alla conversazione.

Nuova sezione dedicata all'OE 6 Anni 3 Mesi fa #27089

  • gianlox
  • Avatar di gianlox
  • Visitatori
  • Visitatori
ciao Manuel, non riesco a creare la strategia di difesa meccanica da TradeStation mi spiego meglio: creo la mia strategia in opzioni con il system launcher, poi clicco su Tools-Code Generator-El Code for Futures Hedging,si apre la strategia di difesa in .txt, copio il contenuto (circa 11000 linee), creo una nuova strategia su tradestion, gli incollo il contenuto e applico la nuova strategia sul grafico, a questo punto dovrebbe essere stato creato un file .txt nella cartella C:\Program Files (x86)\OptionLab\OptionDB Explorer\Exports\TradeStation Equity Export , giusto fino a qui ?
Invece quando clicco su Tools-Import equity Line fron Ts vedo le strategie di default ma non vedo quella che mi avrebbe dovuto creare Tradestation , quale potrebbe essere il problema ?
grazie

Accedi o ✅Crea un account per partecipare alla conversazione.

Nuova sezione dedicata all'OE 6 Anni 3 Mesi fa #27090

  • QTLab
  • Avatar di QTLab
  • Offline
  • Administrator
  • Administrator
  • Messaggi: 7249
  • Ringraziamenti ricevuti 4958
...probabilmente non hai messo a TRUE la stampa del file TXT:

Riga 13: Var: EnablePrinting(true);
QTLab

questo è il forum del "vecchio" sito di QTLab: dai un'occhiata ai nuovi siti...

[il nuovo sito di QTLab] www.QTLab.it
[tutti gli Articoli] www.LucaGiusti.it
[il Libro "Trading Meccanico"] www.TradingMeccanico.it
[il Libro: "Portafogli per l'Investitore"] www.QuantInvesting.it
Ringraziano per il messaggio: gianlox

Accedi o ✅Crea un account per partecipare alla conversazione.

Nuova sezione dedicata all'OE 6 Anni 3 Mesi fa #27092

  • gianlox
  • Avatar di gianlox
  • Visitatori
  • Visitatori
effettivamente di default l'EneablePrinting era a False, mettendolo a True ora è tutto ok.

Accedi o ✅Crea un account per partecipare alla conversazione.

  • Pagina:
  • 1
  • 2
  • 3

Copyright© 2020 QTLab® - Quantitative Trading Lab SA - Tutti i diritti sono riservati.
Bellinzona (Svizzera), E-Mail: info@qtlab.ch


Questo sito Web non è rivolto a persone giuridiche o fisiche appartenenti a giurisdizioni in cui, in virtù della nazionalità, della tipologia di persona, del proprio domicilio o residenza, della sede sociale o per qualsiasi altro motivo, l’accesso allo stesso, la relativa consultazione, la disponibilità, la pubblicazione, come pure la presentazione di servizi finanziari o la commercializzazione di determinati prodotti finanziari dovesse essere vietata o soggetta a restrizioni. Alle persone cui si applicano tali restrizioni è conseguentemente vietato accedere a questo sito internet. Le informazioni e le opinioni contenute nelle pagine del sito internet e nel materiale in esso contenuto non costituiscono in nessun caso un invito, un’offerta, una raccomandazione o una sollecitazione di acquisto o di vendita, una richiesta o una sottoscrizione di titoli o strumenti finanziari, prodotti o servizi finanziari o d’investimento, né un’esortazione ad effettuare transazioni di alcun genere. Il contenuto del sito internet è stato allestito con la maggiore cura e diligenza possibile. Tuttavia non si fornisce alcuna garanzia circa la correttezza, l’esattezza, la completezza, l’affidabilità o l’attualità dei contenuti proposti. I dati storici relativi ai rendimenti e agli scenari sui mercati finanziari, le prestazioni passate, effettive o indicate da test storici o strategie, non sono garanzia di analoghi risultati futuri. Facendo trading si possono sostenere perdite superiori al proprio investimento iniziale: non si dovrebbe investire o rischiare denari che non si si può permettere di perdere.Per ulteriori dettagli, si prega di leggere le "Condizioni di Utilizzo" nel menù verticale in alto a sinistra. In nessuna circostanza – ivi compresa la negligenza – la nostra società può essere considerata responsabile per perdite e/o danni di qualsiasi natura – sia che si tratti di danni diretti, indiretti oppure consequenziali – derivanti dall’accesso agli elementi di questo sito internet o dal loro utilizzo (o dall’impossibilità di accedere al sito internet stesso e di utilizzarne gli elementi) o da link che portano a siti internet di terzi. Noi non monitoriamo le pagine collegate al sito internet mediante link e decliniamo pertanto qualsiasi responsabilità per i relativi contenuti e per le eventuali prestazioni ivi offerte. La totalità dei contenuti presenti nel sito internet è tutelata dal diritto d’autore. Senza previo consenso scritto da parte nostra non è pertanto consentito riprodurre (anche parzialmente), trasmettere (né per via elettronica né in altro modo), modificare, stabilire link o utilizzare il sito internet per qualsivoglia finalità pubblica o commerciale.Qualsiasi controversia riguardante l’utilizzo del sito internet è soggetta al diritto svizzero, che disciplina in maniera esclusiva l’interpretazione, l’applicazione e gli effetti di tutte le condizioni sopra elencate. Il foro di Bellinzona è esclusivamente competente in merito a qualsiasi disputa o contestazione che dovesse sorgere in merito al presente sito internet e al suo utilizzo. Accedendo e continuando nella lettura dei contenuti di questo sito Web dichiari di aver letto, compreso e accettato le sopracitate informazioni legali. Accedendo e continuando nella lettura dei contenuti di questo sito Web dichiari di aver letto, compreso e accettato le sopracitate informazioni legali. 
The material on this website is for information purposes only. Any reference on this Web site to QTLab, the authors, and its affiliated companies should not be construed as an offer or solicitation, directed to residents in jurisdictions where QTLab, by and through any of its affiliates, is not registered to do business. No investment advice or solicitation to buy or sell securities is given or in any manner endorsed by QTLab or any of its affiliates. Charts created using TradeStation. ©TradeStation Technologies, Inc. All rights reserved. No investment or trading advice, recommendation or opinions is being given or intended. Past performance, whether actual or indicated by historical tests of strategies, is no guarantee of future performance or success. There is a possibility that you may sustain a loss greater than your entire investment; therefore, you should not invest or risk money that you cannot afford to lose. For further details please read the "Condizioni di Utilizzo" to see the full set of terms and conditions.