さくら VPS Python 豪ドル/円 4時間足予測
Money Partners サイト 4時間足デ-タ取得
さくら VPS Python で豪ドル/円 4時間足予測をします。
まずは、Money Partners サイトで4時間足デ-タ取得を自動的に行なっていきます。
Money Partners サイトに入る前準備については
Selenium Web 自動操作動作停止
Google Chrome のインストール
selenium4 テストプログラムまとめ
Selenium4 で CSV ファイルダウンロード
を順に読んでください。
これらを読むと Money Partners のサイトに自動的に入ることができるようになりますので、
4時間足デ-タ取得のための Money Partners サイトでの準備を行なっていきます。
- ダウンロードディレクトリ変更
(2023/3/23日追加変更)
options.headless = True
を有効にして、ヘッドレスで実行すると、デ-タをダウンロ-ドしてくれないことに気がつきました。
もともとヘッドレス実行ではデ-タをダウンロ-ドができなかったのですが、最近は可能でした。
しかし、2023年3月よりまたできない設定に Google は戻したようです。
対応の方法は
Selenium CSV ファイルダウンロード Chromium 画面なし
の中で説明していますので参照してください。
変更内容は、元の記述内容
options.add_experimental_option("prefs", {
"download.default_directory": "/home/yamada/public_html/manep_4h"
})
を削除し次の内容を追記します。
なお、Page.setDownloadBehavior コマンドは非推奨になりました。
Browser.setDownloadBehavior を使用します。# 20230323 追加 driver.command_executor._commands["send_command"] = ( 'POST', '/session/$sessionId/chromium/send_command' ) params = { 'cmd': 'Browser.setDownloadBehavior', 'params': { 'behavior': 'allow', 'downloadPath': '/home/yamada/public_html/manep_4h' } } driver.execute("send_command", params=params) # 追加ここまで
- ウィンドウ最大化
Money Partners のサイトは横幅が広く作られているので、クリックボタンが見えるように、 ウィンドウを最大化します。
options.add_argument('--kiosk') - 認証情報を環境変数から取得
認証情報を環境変数から取得します。
load_dotenv()
MANEPA_ID = os.environ['MANEPA_ID']
MANEPA_PA = os.environ['MANEPA_PA'] - 23日前の年月日を取得
今日から23日前の年月日を取得を取得します。
23日前からのデ-タを取得すると約100本の4時間足デ-タを取得することができます。 now = datetime.datetime.now()
# 23日 減算
now100 = now - datetime.timedelta(days=23)
now100str = now100.strftime('%Y%m%d')
strftime(): 日付、時間から文字列へ変換します。 - マネパ Login 画面を開く
マネパ Login 画面を開きます。
serv = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=serv, options=options)
driver.get('https://www.moneypartners.co.jp/login/')
wait = WebDriverWait(driver, 5)
すべてのページが表示されるまで待機します。
今回は最大5秒とします。element = wait.until(expected_conditions.visibility_of_all_elements_located)
2022/10/10日追記
ウィンドウ画面が小さいと 「お困りの方へ」のポップアップが「ログイン」画面にかぶってしまい ログインボ タンがクリックできないことが判明しました。
これを回避するため、垂直方向に 200 ピクセル下にスクロールします。
driver.execute_script("window.scrollBy(0, 200);")
そして、タイトルに'マネーパートナーズ'が含まれていることを確認します。
assert 'マネーパートナーズ' in driver.title
これで、マネパ Login 画面が開きました。
以上をまとめると、以下のようになります。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
import time
options = webdriver.ChromeOptions()
# options.headless = True
# prefs オプションを設定、デフォルトのダウンロードディレクトリを変更
# options.add_experimental_option("prefs", {
# "download.default_directory": "/home/yamada/public_html/manep_4h"
# })
# ウィンドウを最大化
options.add_argument('--kiosk')
serv = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=serv, options=options)
# 20230323 追加
driver.command_executor._commands["send_command"] = (
'POST',
'/session/$sessionId/chromium/send_command'
)
params = {
'cmd': 'Browser.setDownloadBehavior',
'params': {
'behavior': 'allow',
'downloadPath': '/home/yamada/public_html/manep_4h'
}
}
driver.execute("send_command", params=params)
driver.get('https://www.moneypartners.co.jp')
wait = WebDriverWait(driver, 10)
# すべてのページが表示されるまで待機:今回は最大10秒
element = wait.until(expected_conditions.visibility_of_all_elements_located)
# タイトルに'マネーパートナーズ'が含まれていることを確認
assert 'マネーパートナーズ' in driver.title
マネパ CSV ダウンロードファイル作成後半
マネパからダウンロードできる CSV ファイルには多種多様のものがあります。
今回は、ID とパスワ-ドを入力して、豪ドル/円 17日(カレンダでは23日)分の4時間足デ-タを取得をします。
ID,Password 入力
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') print("login_button 発見") login_button.click() time.sleep(1)
ログイン完了
ここまででマネーパートナーズ会員専用サイトにログインできましたので パートナーズFX - チャート足情報サイトに移動します。
driver.get('https://account.moneypartners.co.jp/retail/pfx_download_chart.do')
次に、日付欄にダウンロ-ドしたいデ-タの開始日 now100str を入力します。
開始日入力欄は
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)
開始時間も入力する必要があります。
00:00分~を設定します。
設定値は「0000」です。
fr_time = driver.find_element_by_id('timeFrom')
fr_time.send_keys("0000")
そして足種欄をさがし、6番目にある4時間足を選択します。
tp_chat = driver.find_element_by_id('chartType')
select = Select(tp_chat)
select.select_by_value('6')
銘柄選択を豪ドル/円 に変更
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) # 秒
ログアウト
2022/10/10日追記
ウィンドウ画面が小さいと 「ログアウト」ボタンが見えないことが判明しました。
ログアウトボタンを探すのは止めて 3秒待ってブラウザーを終了するようにします。
ログアウトボタンをクリックすると
[OK]ボタンと[Cancel]ボタンがポップアップします。
これを処理する必要があります。
そのためには Alert クラスが必要です。
ダイアログを制御するクラスです。
まずは Alert を import します。
from selenium.webdriver.common.alert import Alert
少し待って
time.sleep(4)
"OK or Cancel" の確認で OK を選択します。
Alert(driver).accept()
time.sleep(4) # 秒
driver.quit() # ブラウザーを終了する。
ここまでで、求める CSV ファイルをダウンロ-ドできました。
引き続き、ダウンロ-ドしたファイル名を変更していきます。