Örneğin şöyle bir soru sorsak:
"Tesla Nasdaq için 5 dakikalık periyotta en iyi ortalama stratejisini bul:"
Aldığımız cevap***:
Kod:
import pandas as pd
import numpy as np
# Tarih sütununu datetime formatına dönüştürmek için bir fonksiyon tanımlayalım
date_parser = lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
# Telsa'nın 5 dakikalık periyotlu NASDAQ verilerini yükleyelim
data = pd.read_csv('tesla_5min_stock_data.csv', parse_dates=['Date'], date_parser=date_parser)
# Test edilecek hareketli ortalama periyotlarını tanımlayalım
ma_periods = range(5, 60, 5) # 5 dakika ile 60 dakika arasında 5'er dakikalık artışlarla
# Sonuçları saklamak için bir sözlük oluşturalım
results = {}
# Her bir hareketli ortalama periyodu için işlem stratejisini test edelim
for ma_period in ma_periods:
# Hareketli ortalama hesaplayalım
data[f'MA_{ma_period}'] = data['Close'].rolling(window=ma_period).mean()
# Alım sinyali (kısa periyotlu MA, uzun periyotlu MA'yı yukarıdan keserse)
data[f'Signal_{ma_period}'] = np.where(data[f'MA_{ma_period}'].shift(1) > data[f'MA_200'].shift(1), 1, 0)
# Günlük getirileri hesaplayalım
data['Returns'] = np.log(data['Close'] / data['Close'].shift(1))
# Strateji getirilerini hesaplayalım
data['Strategy_Returns'] = data[f'Signal_{ma_period}'].shift(1) * data['Returns']
# Kumulatif getirileri hesaplayalım
data['Cumulative_Returns'] = data['Strategy_Returns'].cumsum()
# Son kümülatif getiriyi saklayalım
results[ma_period] = data['Cumulative_Returns'].iloc[-1]
# En iyi hareketli ortalama periyodunu bulalım
best_ma_period = max(results, key=results.get)
best_cumulative_returns = results[best_ma_period]
print(f"En iyi hareketli ortalama periyodu: {best_ma_period} dakika")
print(f"En yüksek kümülatif getiri ile: {best_cumulative_returns}")
Bunu bir de önce makine öğrenmesi ve hatta mümkünse yapay zeka öğrenmesine bağlasak...?
Not***: Python kurulu bir makine ve orta-üst seviyede python bilgisi gerektirir.
Yer İmleri