Strategie di Trading (parte 3): l’uso del linguaggio di programmazione Python e del programma Spyder. Tipi di dati, funzioni e comandi
Nella seconda parte della serie di articoli abbiamo analizzato il navigatore Anaconda e le funzioni del suo editor Spyder. In questa parte ci concentreremo sulle basi della programmazione con Python.
L’approfondimento è a cura di TRADERS’ Magazine Italia
Spiegazione dei termini per la comprensione dei tipi di dati
Prima di iniziare con la spiegazione dei singoli tipi di dati in Python, vogliamo discutere dei loro componenti. Questi includono la variabile e il valore.
Sicuramente conoscete le variabili dalle lezioni di matematica quando si trattava di risolvere equazioni per x. Se si arrivava alla soluzione, x alla fine aveva un certo valore. Questo è esattamente ciò che fa Python. Ad esempio, è possibile definire che x è uguale a sette. Il carattere x è il nome della variabile e può consistere in una qualsiasi combinazione di caratteri dell’alfabeto della lingua inglese. Se quindi si inserisce x nella console, viene visualizzato il numero sette.
Immaginate in questo contesto una casella in cui è possibile memorizzare i dati. Una variabile non è nient’altro che questo. La casella porta il nome di x e contiene il valore 7. Ovviamente, una casella può assorbire molto più di un semplice numero. Ad esempio, si potrebbe anche inserire una stringa. La differenza rispetto alla casella con il numero semplice è che si tratta di un altro tipo di casella. E così abbiamo costruito il ponte per i vari tipi di dati in Python.
Tipi di dati
Ci sono quattro tipi di dati di base: Integer, Float, Stringa e Boolean. Se si assegna un valore a una variabile, non è necessario indicare a Python di che tipo di dati sia il suo valore. Questa è una cosa che Python fa automaticamente. Diamo un’occhiata al nostro esempio precedente: se il valore non è un decimale, allora è un numero intero.
Il semplice numero 7 quindi appartiene a questo tipo di numeri. È inoltre possibile utilizzare una variabile a più lettere e assegnarvi un numero con un punto decimale. Ad esempio, definire la variabile “costo della transazione” con il valore 10.5 immettendo quanto segue in Python: costi di transazione = 10.5 (attenzione: Python usa il punto invece della virgola!).
In questo caso, è il tipo di dati Float. Il prossimo tipo di dati è la Stringa. Puoi anche assegnare una stringa a una variabile (la chiamiamo semplicemente “string_name”), ad esempio “ciao a tutti”. In questo caso, è importante scrivere in Python il testo dietro il segno uguale tra virgolette (‘...’).
Che risulterebbe così: String_ name = ‘Ciao a Tutti’.
Scriviamo ora nella console “string_name”, quindi si ottiene il valore di output “Ciao a Tutti “. Va notato che non è importante per i tipi di dati quale nome di variabile si assegna. Potremmo anche aver scritto “integer_name = ‘text’” o “initiation = ‘text’”. In ogni caso, Python avrebbe riconosciuto, indipendentemente dalle virgolette, che si tratta di una stringa.
Il tipo di dati Boolean è un tipo di dati salvaspazio. Memorizza solo due valori: “vero” o “falso”. Dietro “falso” si nasconde il collegamento al numero 0. “Vero” a sua volta è considerato come 1. Il Boolean è un tipo di dati utile quando si desidera creare quesiti specifici.
In termini astratti, si potrebbe formulare un quesito come questo: Sei è meno di cinque? Tradotto in Python si dovrebbe scrivere la frase “6 <5”. Come risposta, Python stamperebbe “falso”. In particolare, come trader, si può chiedere se un determinato titolo è stato tradato in un determinato momento. Phyton vi direbbe semplicemente se era il caso oppure no. Se si desidera creare un Boolean da sé, basta scrivere: bool_name = Vero. Poiché si nasconde un numero dietro il Boolean, si può anche utilizzare il Boolean per scopi di calcolo.
Python come calcolatrice
Questi quattro tipi di dati rendono Python una calcolatrice tascabile, ad esempio, per eseguire calcoli complessi più velocemente. I simboli di calcolo comuni (+, -, * e /) che si conoscono dalla calcolatrice hanno la stessa funzione nel linguaggio di programmazione.
Se si vuole salire ad una potenza superiore, basta scrivere “**”, per esempio “5 ** 2” il risultato sarà 52 cioè 25. L’uso delle parentesi funziona come al solito in Python. Ma la calcolatrice non deve basarsi solo sui numeri. È anche possibile impostare le variabili insieme. Se si scrive “5 + x – costi di transazione – bool_name”, sullo sfondo viene calcolato “5 + 7 – 10.5 – 1”. Questo è il lavoro per voi come programmatori.
Invece, se si tratta solo di valori e li si calcola, può succedere che non si sappia più cosa significhi realmente ogni rispettivo valore. Ma, se si ha un nome di variabile adatto, allora questo semplifica immensamente il lavoro. Si può anche trasferire il valore di una variabile ad un’altra. Ad esempio, se si definisce la variabile A come “2”, si può anche dire che “B = A” e il valore viene copiato nella variabile “B”.
Quindi digitare “B” nella console, e verrà visualizzato il valore “2”. Se si desidera anche annunciare il risultato con un testo, usiamo i cosiddetti comandi nella console: in questo caso, il comando “print ()” già menzionato nell’ultima parte. I comandi sono istruzioni standardizzate che vengono automaticamente riconosciute dal programma.
Il comando print (“”) stampa tutto ciò che è nelle parentesi come una stringa. Il testo è di nuovo tra virgolette. Diversi tipi di dati possono essere collegati al comando print () con una virgola. In Python appare così: print (“Ora arriva il risultato:”, 5 + 3 + costi di transazione). Il risultato è mostrato nella figura 1.
Funzioni
Per non dover ogni volta inserire manualmente le sequenze di programmazione, c’è uno strumento: quello delle cosiddette funzioni. Esse consentono di programmare una volta i processi di programmazione e di riprodurli ripetutamente con valori diversi.
Supponiamo di voler creare una nuova variabile con il nome “nuovo”. Questa variabile è di nuovo composta dalle variabili “A” e “B”. La variabile “nuovo” dovrebbe calcolare quanto segue: A + 2 * B + 35. Per le variabili “A” e “B” si hanno valori diversi. Una dovrebbe essere “A = 2, B = 3” e l’altra “A = 5, B = 6”.
Di solito si dovrebbe definire “A” e “B” ripetutamente con nuovi valori. Tuttavia, è possibile semplificare il tutto definendo una funzione con il comando “def” e il nome della funzione seguente e anche i parametri variabili, che calcolano sempre la variabile “nuovo” con valori diversi per “A” e “B”. È importante che le variabili “A”, “B” e “nuovo” siano definite solo all’interno di questa funzione con le informazioni corrispondenti.
Funzione definizione e chiamata
Per una più facile comprensione, definiamo una funzione per il nostro esempio. Iniziamo con l’uso del comando “def”. Questo è seguito dal nome della funzione “some_functionname ()”. Tra parentesi dopo il nome, devono essere inseriti i parametri “A” e “B”, poiché sono necessari per il calcolo della variabile “nuovo”. Per fare in modo che Python sappia che la riga successiva è anch’essa parte della funzione, essa deve essere rientrata.
Ora si può specificare ciò che la funzione dovrebbe effettivamente fare. Nel nostro caso vogliamo solo che sia calcolata la variabile “nuovo”. Per questo definiamo come “Nuovo = A + 2 * B + 35”. Per fare in modo che la funzione calcoli anche il valore della variabile “nuovo”, abbiamo bisogno del comando “return”.
Dietro a questo comando c’è quello che vogliamo eseguire, cioè il nome della variabile. Se ora si scrive semplicemente il nome della funzione nella console e si definiscono i valori dei parametri “A” e “B” tra parentesi dietro ad esso, il programma calcola automaticamente la variabile “nuovo” con i valori corrispondenti immessi.
Nel nostro caso apparirebbe così: any_functionname (A = 2, B = 3). Il risultato è mostrato in fIgura 2. Il bello è che è possibile salvare di nuovo il risultato come variabile. È sufficiente definire quanto segue: variable_name = any_functional name (A = 2, B = 3).
Pertanto il risultato della funzione è memorizzato come variabile “variable_name”. È possibile utilizzare di nuovo questa variabile per continuare a contare come nell’esempio della calcolatrice.
Se, invece, si desidera sapere che cosa esce con “A = 5, B = 6”, ovviamente è possibile verificarlo di nuovo con la stessa funzione. Basta solo modificare i valori dei parametri “A” e “B”: some_function_name (A = 5, B = 6).
Modulo per la memorizzazione delle funzioni
È possibile rendere la vita in Python ancora più semplice accedendo alle funzioni create e pubblicate da voi o da altre persone. Questo funziona utilizzando i moduli. Un modulo è un file con funzioni e istruzioni programmate. Ogni modulo ha anche un proprio spazio dei nomi per le variabili.
In altre parole, è possibile definire le stesse variabili in modo diverso in due moduli. Vengono salvati moduli come gli script Python con estensione “.py”. A titolo illustrativo, memorizziamo il modulo con la funzione “some_function_name” incluso come “function_module. py” al suo interno. Se ora iniziamo un nuovo file Python e vogliamo usare la funzione dal modulo, dobbiamo importarne uno.
Questo funziona con il comando “import”. Nel nostro caso, si scrive: “modulo funzione di importazione”. Il finale “.py” è omesso. Può capitare che Python non trovi il modulo che è stato creato. Quindi è necessario dire a Python esattamente dove cercarlo.
Per poter utilizzare i propri moduli, è necessario prima utilizzare i moduli Python standard, che sono memorizzati lì dove possono essere trovati immediatamente dal sistema. Per importare il modulo “sys”, che dà chiamate di sistema, utilizzate “import sys”. Utilizzare questo modulo per scoprire dove Python è alla ricerca di moduli da importare ovunque.
Il comando “sys.path” mostra tutti i percorsi che si trovano nell’elenco dei percorsi. È possibile estenderli e creare la propria cartella in cui inserire i moduli. Ad esempio, si crea la cartella “pythonModule” nella cartella del documento e semplicemente si copia il percorso dalla finestra del documento (nel nostro caso si tratta di “C:\users\ alank\Documents\pythonModule”).
Per utilizzare questo percorso con Python, è necessario sostituire “\” con “/”. Per dire a Python della nuova cartella, si scrive: “sys.path. append (‘C:/users/alank/Documents/python-Modules’)”. “Append ()” è una funzione che consente a “sys.path” di aggiungere un nuovo elemento.
Infine, quando il nuovo percorso viene aggiunto, Python cercherà i moduli. Ora è possibile importare il modulo desiderato dalla cartella “pythonModule”. Dopo aver inserito tutte le funzioni e averle salvate come moduli, ora è possibile usarle scrivendo: “function_module.any_function_name (A = 4, B = 5)”. È necessario il punto tra il nome del modulo e il nome della funzione perché è necessario specificare quale funzione si desidera utilizzare dal modulo.
Conclusioni
In questo articolo, avete imparato a conoscere i quattro tipi di dati di base. Inoltre, avete già scritto la vostra funzione, l’avete salvata correttamente e, cosa che non deve assolutamente essere sottovalutata, richiamata correttamente. Nel prossimo articolo, approfondiremo le basi di Python e analizzeremo anche le librerie per voi disponibili con altre utili funzioni.
Ci si renderà conto che non è necessario reinventare la ruota e ci sono già librerie che consentono il backtesting delle vostre strategie di trading. Così, sarete in grado di accedere alla conoscenza di altri programmatori e trader e di sviluppare il vostro approccio in una strategia redditizia.
© RIPRODUZIONE RISERVATA