Python で 豪ドル/円チャ-ト を探求

豪ドル/円 CSV ダウンロ-ド,グラフ化合体ファイル

ここまでで、
豪ドル/円 CSV ダウンロ-ドデ-タ グラフ化ファイル動作確認
を行なうことができました。
引き続き、次のファイルをまとめて定時自動実行します。
まずは、2つのファイル
豪ドル/円 CSV ダウンロ-ドファイル
sc_sele_mane_go.py と
豪ドル/円 CSV ダウンロ-ドデ-タ グラフ化ファイル
mane_polyfit-7.py
を合体します。
そして、途中経過は一切表示しないようにします。
ヘッドレスモードを有効にします。
options.headless = True
また、Virtual Ubuntu 起動後最初の Chromium-browser の立ち上げ時間も配慮し
driver = Chrome(options=options)
直後の待ち時間設定を3秒から180秒に
time.sleep(3) # 必須
   ↓
time.sleep(180)
に延ばしています。
また、マネパ Login 画面を開いた後の待ち時間設定6秒を
driver.get('https://www.moneypartners.co.jp/login/')
time.sleep(6)
追加しています。
以下に合体したファイル内容を表示します。


from selenium import webdriver
from selenium.webdriver import Chrome, ChromeOptions, Remote
from selenium.webdriver.common.keys import Keys
# 追加ボップアップ対応
from selenium.webdriver.common.alert import Alert

import time
from selenium.webdriver.support.select import Select
import datetime

import os
from dotenv import load_dotenv
load_dotenv()
# 認証の情報は環境変数から取得する。
MANEPA_ID = os.environ['MANEPA_ID']
MANEPA_PA = os.environ['MANEPA_PA']

now = datetime.datetime.now()
# 140日 減算
now100 = now - datetime.timedelta(days=140)
now100str = now100.strftime('%Y%m%d')

options = ChromeOptions()
# ヘッドレスモードを有効にする
options.headless = True
# prefs オプション設定、デフォルトダウンロードディレクトリ変更
options.add_experimental_option("prefs", {
  "download.default_directory": "/home/yamada/public_html/manep"
})

# ChromeのWebDriverオブジェクトを作成する。
driver = Chrome(options=options)

time.sleep(180) # 必須、初回は 3ダメ180
# マネパ Login 画面を開く。
driver.get('https://www.moneypartners.co.jp/login/')
time.sleep(6) # 追加
# タイトルに'マネーパートナーズ'が含まれていることを確認する。
assert 'マネーパートナーズ' in driver.title

# ID,Password を入力する。
id = driver.find_element_by_name('loginId')
id.send_keys(MANEPA_ID)
password = driver.find_element_by_name('password')
password.send_keys(MANEPA_PA)
time.sleep(1)
# ログインボタンをクリック
login_button = driver.find_element_by_id('loginBtn')
login_button.click()
time.sleep(1)

driver.get(
 'https://account.moneypartners.co.jp/retail/pfx_download_chart.do')

fr_date = driver.find_element_by_id('dateFrom')
fr_date.send_keys(Keys.CONTROL, "a")
fr_date.send_keys(Keys.DELETE)
# 一旦値を選択してから消してそして入力する
fr_date.send_keys(now100str)

tp_chat = driver.find_element_by_id('chartType')
select = Select(tp_chat)
select.select_by_value('7')
# valueが"7"のoptionタグを選択状態にする

# 銘柄選択
commo =  driver.find_element_by_id('commodity')
select = Select(commo)
select.select_by_value('3')
# valueが"3"のoptionタグを選択(豪ドル)状態にする

time.sleep(1)
# 送信ボタンをクリック
send_button = driver.find_element_by_id("outputChart")
send_button.click()
time.sleep(1) # 秒
logout_but = driver.find_element_by_id("logout")
logout_but.click()
time.sleep(3) # 秒
# 2行追加ポップアップ
Alert(driver).accept()
time.sleep(4) # 秒
driver.quit() # ブラウザーを終了する。

# ダウンロードディレクトリ、ファイル名変更
# フルパス指定
path = "/home/yamada/public_html/manep/"
# ここには適当に mane_chart_go.csv をおいておくこと
files = os.listdir(path)
# 取得できるのはパスの文字列のリスト。
# files[*] に取得した PFX_CHART_20210209160810.csv が入る
# files[*]='mane_chart_go.csv'
files0 = files[0]
if len(files[1]) > len(files[0]):
  files0 = files[1]
path1 = path + files0
path2 = path + 'mane_chart_go.csv'
os.rename(path1, path2)

import datetime

def addBusinessDays(from_date, add_days):
  cur_date8 = [] # 21/03/30
  cur_date4 = [] # 3/30
  business_days_to_add = add_days
  current_date = from_date
  while business_days_to_add > 0:
    current_date += datetime.timedelta(days=1)
    weekday = current_date.weekday()
    if weekday >= 5: # sunday = 6
      continue
    #土日は以下はスキップ
    # 年/月/日として文字列にする
    #例 21/03/30      
    e11 = current_date.strftime("%y/%m/%d")
    e22 = e11.replace("/0", "/")
    e33 = e22[3:] # 21/ 削除
    cur_date8.append(e22)
    cur_date4.append(e33)
    business_days_to_add -= 1
  return cur_date8, cur_date4

import pandas as pd
import numpy as np
from datetime import datetime as dt
import matplotlib.pyplot as plt
# import mplfinance as mpf
from mplfinance.original_flavor import candlestick_ohlc

xl_df = pd.read_csv(
 "/home/yamada/public_html/manep/mane_chart_go.csv",
 encoding="cp932")

Close = xl_df["終値(売り)"].values
Idx = xl_df.index

# Idx は 0 スタ-ト
Idx5 = Idx[-5:] + 5
z = np.polyfit(Idx, Close, 9)
p = np.poly1d(z)
# print("予測値=最終日+1~+5日")
# print(np.round(p(Idx5),3))
p_pand = np.round(p(Idx5),3)
# ここから結果表示

Open = xl_df["始値(売り)"].values
High = xl_df["高値(売り)"].values
Low = xl_df["安値(売り)"].values
# Closea = xl_df["終値(売り)"].values
Date = xl_df["日付"].values
Idx = xl_df.index

tstr = Date[-1]
tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M:%S')
# 文字列をdatetimeに変換するのがstrptime()関数
# datetime.datetime.strptime(文字列, 書式指定文字列)
lastday = addBusinessDays(tdatetime, 5)
# pandas concat 関数で横(列)方向へ連結 axis=1 を忘れるな
lastday_pd = pd.DataFrame(lastday[0])
p_pand_pd = pd.DataFrame(p_pand)
df_concat = pd.concat([lastday_pd, p_pand_pd], axis = 1)
# print(df_concat)
df_concat.to_csv(
 '/home/yamada/public_html/manep-img/mane_chart_go.csv',
 header=False, index=False)

xDate = []
xD = []
for i, key in enumerate(Date):
  if(i % 10 == 0):
    e4 = str(key)[4:10]
    e6 = e4.replace("/0", "/")
    e8 = e6.lstrip("/")   
    xDate.append(e8)
    xD.append(i)

xDate.append(lastday[1][4])
xD.append(i + 5)

ohlc = zip(
 Idx, Open, High, Low, Close)
fig = plt.figure(
 figsize=(8.34, 5.56)) #③

ax = fig.add_subplot(1,1,1)  #④
ax.grid()
plt.plot(
 Idx, p(Idx),
 Idx5, p(Idx5),'bo')
candlestick_ohlc(
 ax, ohlc, width=0.5, alpha = 1,   
 colorup='r', colordown='g') #⑤
plt.xticks(xD, xDate)        #⑥
plt.title('AUS$ / JPY chart')#⑦
plt.xlabel('Date')
plt.ylabel('Yen')
plt.savefig(
 '/home/yamada/public_html/manep-img/mane_chart_go.png')#⑧

上記ファイルは動作確認のため TeraPad 等で作成したら、ファイル名を適当に
sc_sele_mane_poly.py
として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の 共有フォルダ c:\vb_public_html にしました。
なお、
c:\vb_public_html
はゲスト OS Ubuntu のなかの
/home/yamada/public_html
とリンクしていて共有フォルダの関係にあります。
詳細は ユ-ザ-ごとの公開ディレクトリを用意する を読んでみてください。

ここまでで、豪ドル/円 CSV ダウンロ-ド、グラフ化合体ファイルが完成しました。
引き続き、本ファイルの動作確認をします。

  • 豪ドル/円 CSV ダウンロ-ド、グラフ化合体ファイル動作確認 に進む
  • 豪ドル/円 チャ-ト 予測表示 に戻る
  • 豪ドル/円 CSV ダウンロ-ドデ-タ グラフ化ファイルまとめ に戻る
  • ロ-ソク足本体の表示 に戻る
  • 予測日/予測値の一覧表を作成 に戻る
  • 予測最終日取得 に戻る
  • Numpy polyfit 関数で豪ドル/円を予測 に戻る
  • 豪ドル/円 CSV ダウンロ-ドデ-タ グラフ化 に戻る
  • 豪ドル/円 CSV 改造ファイルまとめ に戻る
  • Python 豪ドル/円チャ-ト 概要 に戻る
  • 70VPS に戻る