martedì 31 marzo 2020

PYTHON LE BASI

''' CON # commento UNA SOLA RIGA CON LE TRE VIRGOLETTE
APRO I COMMENTI E LI CHIUDO SU MULTI LINEA
'''

a=5 #integer
b='6' #stringa
c=a+int(b) #trasformo la stringa b in numero integer
#posso stampare a video così
print (str(a)+" + "+ b +" = "+str(c))
#oppure così
print(a," + " + b + " = ",c)
#se faccio questo assegnamento
d=a," + " + b + " = ",c
print (d)
#ottengo una lista
print (d[0])
print (d[1]) #guarda bene questo
print (d[2])
#ma se faccio questo assegnamento
d=str(a)+" + "+ b +" = "+str(c)
print (d)
#ottengo una stringa
str(variabile) trasforma da numero a stringa int(variabile) trasforma la stringa in valore integer float(variabile) trasforma la stringa in valore con virgola mobile

VPN - AVIRA PHANTOM VPN

Una VPN ci permette di navigare anonimi. Chiunque potrebbe rispondere non ho bisogno di navigare anonimo, non ho nulla da nascondere. Anche io non ho nulla da nascondere, ma non voglio nemmeno essere tracciato. AVIRA PHANTOM fornisce dei proxy anonimi veloci ed è gratuita fino a 500MB al mese.
Esempio d'uso:
il web banking è molto diffuso al giorno d'oggi, ed è molto sicuro, ma le informazioni che trasmettiamo passano tutte attraverso il nostro provider Interne (Tim, Vodafone ecc ecc) con una VPN il traffico tra il nostro PC ed il server è tutto criptato e chiuso in un tunnel, aggiungendo una nuova sicurezza.

PYTHON - TRASFORMAZIONE MILLI SECONDI IN DATA

PYTHON e BINANCE API
Binance rilascia le date in millisecondi, per renderle capibili basta importare dateparser.
File di esempio

from binance.client import Client
from binance.enums import *
import sys
import keys #un file contenente le chiavi Binance Pkeys la pubblica / Skeys la privata
import dateparser #per il parsing della data
'''
Trasformazione dei milli secondi in data e ora umanamente
capibili
'''
client=Client(api_key=keys.Pkeys, api_secret=keys.Skeys)
v=client.get_klines(symbol=sys.argv[1], interval=client.KLINE_INTERVAL_1DAY)
for i in range(len(v)):
    data=dateparser.parse(str(v[i][0]))#passaggio del valore in millisecondi
    data=str(data)#trasformo il tutto in stringa
    oD=data.split(" ")#splitto la stringa con lo spazio
    #oD è una lista composta da oD[0] e oD[1]
    print(oD[0],v[i][1],v[i][4])

L'esempio qui sopra riportato funziona solo se avete le chiavi per le API Binance.

lunedì 30 marzo 2020

PYTHON - DIZIONARIO - LISTA - VETTORE

Il dizionario raccoglie valori diversi, non ordinati, e tipi diversi. Al suo interno possono esserci liste. Adoro il dizionario e le sue potenzialità.
dizionario = {"chiave": "valore", "età": 24, 3.14: "pi_greco", "numeri": [1, 2, 3]}

print(dizionario['chiave'])

print(dizionario[3.14])

print(dizionario['numeri'][0])
print(dizionario['numeri'][1])
print(dizionario['numeri'][2])
Mi sembra chiaro no?

domenica 29 marzo 2020

PYHTON - ALGORITMO RICERCA PATTERN DI PREZZO

Elaborare algoritmi che valutano numeri è semplice.
Valutazione sui prezzi, sui tempi ciclici.
Valutare la formazione di figure quali tazze, testa e spalle e triangoli è un po' più complesso.
Un abbozzo di una prima soluzione:

'''ricerca del pattern tazza
programmazione per trading
soluzione algoritmica
di Porcari Daniele '''

vettorePrezziMedi=[45,42,41,24,22,25,18,15,21,22,38,44]
 
#divido il vettore in due con //
primaP=len(vettorePrezziMedi)//2
secP=len(vettorePrezziMedi)-primaP
#la prima parte deve essere discendente
#la seconda parte ascendente
max=vettorePrezziMedi[0]
discesa=False
print(max)
i=1
print(vettorePrezziMedi[i])
while i < primaP:
    if vettorePrezziMedi[i]<max:
        print(vettorePrezziMedi[i])
        discesa=True
    else:
        discesa=False
        break
    i+=1
if discesa:
    print("Discesa")
max=vettorePrezziMedi[len(vettorePrezziMedi)-1]
print(max)
salita=False
i=primaP
print(i)
print(vettorePrezziMedi[i])
while i < secP+primaP-1:
    if vettorePrezziMedi[i]<max:
        print(vettorePrezziMedi[i])
        salita=True
    else:
        salita=False
        break
    i+=1
if salita:
    print("salita")
if discesa==True and salita==True:
    print("Possibile tazza")
else:
    print("Tazza non trovata")

import matplotlib.pyplot as plt
x=[]
for i in range(len(vettorePrezziMedi)):
    x.append(i)
plt.plot(x, vettorePrezziMedi, marker = "o", color = 'red')
plt.show()


PYTHON?

Usare Python perchè si può fare qualsiasi cosa, grazie ai suoi moduli e alla sua portabilità.
Software open source adatto a qualsiasi tipo di sviluppo.

PYTHON - DECIDERE I DECIMALI IN MODO DINAMICO

Abbiamo visto come decidere i decimali dopo la virgola tramite l'uso :
"{0:.2f}".format(variabile)
in una stringa.
A volte però può essere comodo avere una decisione dinamica dei decimali.
Ecco la soluzione:

import sys
import modulo

modulo.controllo(sys.argv)
risultato=modulo.calc(float(sys.argv[1]),sys.argv[2],float(sys.argv[3]))
#definiamo la precisione dei decimali dopo la virgola in modo dinamico
#costruzione delle stringa
dec="{0:."+str(sys.argv[4])+"f}"
#somma della stringa alla stringa in print e il .format(risultato)
print("= "+dec.format(risultato))
Puoi scaricare il listato e il modulo modulo.py da questo LINK.

FLOAT - DECIMALI IN ORDINE E NON A GREGGE IN PYTHON

Il numero reale FLOAT in output è molto libero, ma se vogliamo avere un output pulito ?
Ecco risolto:

''' Decimali limitati dopo la virgola nei numeri float '''
a=23.4
b=17.3
c=a/b
print ("Risultato:",c)
#2 cifre dopo la virgola
print ("Risultato: {0:.2f}".format(float(c)))
#5 cifre dopo la virgola
print ("Risultato: {0:.5f}".format(float(c)))

sabato 28 marzo 2020

PYTHON SU WINDOWS

Per utilizzare Python su windows ho installato anaconda: link per il download ANACONDA.
Anacondo ci permette di utilizzare Python e il comando pip su windows.
Si può programmare in python utilizzando anche blocco note, ma con listati lunghi non è molto comodo.
Io utilizzo ATOM qui il download :Atom

FARE UNA LISTA VUOTA CON PYTHON

Ecco qui come si crea una lista vuota e come si aggiungono elementi alla lista:

a = [] #ho creato la lista vuota a
a.append(1) #ho appeso ad a il primo elemento
a.append(2) #ho appeso ad a il secondo elemento
print (a[0]) #stampo a video gli elementi di a
print (a[1])