3、防篡改。この自動化スクリプトは、任意のファイルをテストし、それが改ざんされているかどうかを識別するのに役立ちます。
# hashlibモジュールをインポートし、暗号化ハッシュ機能を使用します。
import hashlib
# osモジュールをインポートし、ファイルとディレクトリを操作します。
import os
# 関数calculate_sha256を定義し、ファイルのSHA-256ハッシュ値を計算します。
def calculate_sha256(file_path):
sha256 = hashlib.sha256() # sha256ハッシュオブジェクトを作成
# バイナリ読み取りモードでファイルを開く
with open(file_path, 'rb') as file:
# ファイル内容を読み取り、4096バイトずつ読み取る
for chunk in iter(lambda: file.read(4096), b''):
sha256.update(chunk) # ハッシュオブジェクトの状態を更新
return sha256.hexdigest() # ハッシュ値の16進数表現を返す
# 関数check_integrityを定義し、ファイルの完全性を検証します。
def check_integrity(file_path, expected_checksum):
actual_checksum = calculate_sha256(file_path) # ファイルの実際のSHA-256ハッシュ値を計算
return actual_checksum == expected_checksum # 実際のハッシュ値と期待されるハッシュ値が同じか比較
# このスクリプトが直接実行された場合。
if __name__ == "__main__":
file_path = input("ファイルのパスを入力してください: ") # ユーザー入力のファイルパスを取得
expected_checksum = input("期待されるSHA-256チェックサムを入力してください: ") # ユーザー入力の期待されるSHA-256ハッシュ値を取得
# ファイルが存在するか確認
if os.path.isfile(file_path):
# check_integrity関数を呼び出してファイルの完全性を検証
if check_integrity(file_path, expected_checksum):
print("ファイルの完全性が確認されました: ファイルは改ざんされていません。") # 検証成功
else:
print("ファイルの完全性チェックに失敗しました: ファイルは改ざんされている可能性があります。") # 検証失敗
else:
print("エラー: ファイルが見つかりません。") # ファイルが存在しないエラーメッセージ
4、スマートトレーディング。この自動化スクリプトは、トレーダーや投資家が投資したい任意の株式をよく理解するのに役立ちます。これは、Yahoo Finance から取得した過去の株式データに基づいて、Python の Prophet ライブラリを使用して最近の株価を予測します。
# Webアプリを作成するためにStreamlitライブラリをインポート
import streamlit as st
# 日付を処理するためにdateをインポート
from datetime import date
# Yahoo Financeから株式データを取得するためにyfinanceライブラリをインポート
import yfinance as yf
# 時系列予測を行うためにProphetライブラリをインポート
from prophet import Prophet
# ProphetのPlotly描画インターフェースとPlotlyグラフオブジェクトをインポート
from prophet.plot import plot_plotly
from plotly import graph_objs as go
# 予測の開始日と現在の日付を設定
START = "2015-01-01"
TODAY = date.today().strftime("%Y-%m-%d")
# Streamlitを使用してアプリのタイトルを作成
st.title('株式予測アプリ')
# ユーザーが株式を選択できる選択ボックスを設定
stocks = ('MSFT', "TSLA", 'GOOG', 'AAPL', "NVDA")
selected_stock = st.selectbox('予測のためのデータセットを選択', stocks)
# ユーザーが予測する年数を選択できるスライダーを作成、範囲は1年から4年
n_years = st.slider('予測年数:', 1, 4)
period = n_years * 365 # 年数を日数に変換
# 株式データをロードするためのキャッシュ関数を定義し、毎回セッションを再ロードしないようにする
@st.cache
def load_data(ticker):
data = yf.download(ticker, START, TODAY) # Yahoo Financeから株式データをダウンロード
data.reset_index(inplace=True) # DataFrameのインデックスをリセット
return data
# データのロード状態を表示
data_load_state = st.text('データを読み込み中...')
data = load_data(selected_stock) # 関数を呼び出してデータをロード
data_load_state.text('データの読み込み... 完了!') # ロード状態を更新
# 元のデータの最後の数行を表示
st.subheader('生データ')
st.write(data.tail())
# 元のデータの始値と終値を描画する関数を定義
def plot_raw_data():
fig = go.Figure()
fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'], name="株式始値"))
fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="株式終値"))
fig.layout.update(title_text='範囲スライダー付きの時系列データ', xaxis_rangeslider_visible=True)
st.plotly_chart(fig)
plot_raw_data()
# Prophetを使用して予測を行う
df_train = data[['Date', 'Close']]
df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})
m = Prophet()
m.fit(df_train)
future = m.make_future_dataframe(periods=period)
forecast = m.predict(future)
# 予測データを表示し、描画
st.subheader('予測データ')
st.write(forecast.tail())
st.write(f'{n_years}年間の予測プロット')
fig1 = plot_plotly(m, forecast)
st.plotly_chart(fig1)
# 予測コンポーネントを表示
st.write("予測コンポーネント")
fig2 = m.plot_components(forecast)
st.write(fig2)