見出し画像

Pythonでやる、CONNECT証券クレカ積立の即売&出金の自動化

はじめに

初めてnoteを書いてみます。
目的は「自分のプログラミングコードを公開してみたい!」「もしかしたらポイ活勢の役に立つかもしれない」と考えたからです。既にプログラミングをされている方、ポイ活が好き&プログラミングに興味がある方に見て貰えると嬉しいです。


CONNECT証券 クレカ積立スタート

2023年2月からCONNECT証券にてクレカ積立がスタートしました。クレジットカードを発行して取り掛かった人も多いと思います。

私もさっそく
「セゾンプラチナビジネスカード」
「eMAXIS Slim 国内債券インデックス」
の組み合わせで毎月50000円を設定しました。(最大1%還元で毎月500P獲得)

ただやってるポイ活勢の皆さんは知ってると思いますがクレカ積立設定後の即売ルーティーンって地味に面倒じゃないですか?


クレカ積立設定後にやること 2つ

  1. 投資信託の買付後に即売指示

  2. 即売から3営業日後に出金指示



1.買付後は信託手数料が少しでも掛からないよう、また価格変動リスクを考慮してなるべく早く売却する。
2.1日でも早くメインの銀行口座へ出金する。

ポイ活されてる方にとっては当たり前ですよね。

この2つについて「別に大した作業じゃない、毎月できないことない」と感じる人も多いと思います。ただよく考えてみると問題が。。。。


その問題とは他にも複数の同様な即売案件がある!ということ

おそらくCONNECT証券でクレカ積立、即売をされる方のほとんどが下記のような証券会社でも同様なことをしていると推測します。

  • 楽天証券(楽天カード)

  • SBI証券(三井住友ゴールドNLカード)

  • マネックス証券(マネックスカード)

  • auカブコム証券(aupayカード)

  • auじぶん銀行(じぶんプラス 外貨即売)

  • tsumiki証券(エポスゴールドカード)

やってなくて勉強したい方は例えばえまっちさんとこでぜひ勉強してみて下さい。


「ポイ活は大切だけれど1ヶ月に何社もやるのは正直だるいな。。。」
自分はそう思っちゃいました。

だからこそPythonで自動化してしまおうと考えました。(Pythonはプログラミング言語)


クレカ積立(即売)を自動化するメリット

  • 「複数社の即売管理が正直しんどい」の解消

  • 即売、出金のタイミングを意識しなくて済み別の作業、思考に時間を使える。

  • 指示忘れがなくなり損益リスクが小さくなる。

  • 資金効率アップすることでせどり、優待クロス等が有利になる。

これらを踏まえて自動化を図りました。


Pythonコード

以下がCONNECT証券クレカ積立の自動売却&自動出金のスクリプトになります。

from selenium import webdriver
import  chromedriver_binary
import time 
from discordwebhook import Discord


# メイン
def main():  

    # ログイン
    login()
    
    # 売却
    sell()
    
    # 出金
    withdrawal()
    
    driver.quit()
########################################################################    



##########################
# ログイン
##########################
def login():
    lg_id = "*************"
    lg_password = "*************"
    torihiki_password = "*************"

    global driver
    driver = webdriver.Chrome()
    url ='https://trade.connect-sec.co.jp/webbroker3/46/pc/WEB3AccountLogin.jsp'
    driver.get(url)
    driver.maximize_window()
    driver.implicitly_wait(10)

    driver.find_elements_by_name('aa_accd')[0].send_keys(lg_id)
    driver.find_elements_by_name('lg_pw')[0].send_keys(lg_password)
    driver.find_element_by_xpath('//*[@id="password2"]').click()
    driver.find_element_by_name('aa_pw').send_keys(torihiki_password)
    driver.find_element_by_xpath('//*[@id="outer"]/div[2]/div/div[1]/form/div/div[2]/div[9]/a').click()    
    
##########################
# 売却
##########################    
def sell():
    try:
        driver.find_elements_by_xpath('//*[@id="bs-example-navbar-collapse-1"]/ul/li[4]/a')[0].click()
        driver.find_elements_by_xpath('//*[@id="side_content"]/div/ul/ul[1]/li[2]/a')[0].click()
        driver.find_element_by_xpath('//*[@id="eqref1-2"]/div/div[2]/table/tbody/tr/td[9]/div[2]/a').click()
        driver.find_element_by_name('mf_qsdv').click()
        driver.find_elements_by_xpath('//*[@id="main_content"]/form[1]/div/div/div/a')[0].click()
        
        driver.find_elements_by_xpath('//*[@id="main_content"]/form[1]/div/div/div[2]/a')[0].click()
        global message
        message = "CONNECT証券にて投資信託の売却が完了しました。"
        print(message)
        #send_notify() Discord使ってる人用
    
    except Exception as e:
        print(e)
        time.sleep(3)

        
##########################
# 出金
##########################        
def withdrawal():
    try:
        driver.find_elements_by_xpath('//*[@id="bs-example-navbar-collapse-1"]/ul/li[6]/a')[0].click()
        driver.find_elements_by_xpath('//*[@id="side_content"]/div/ul/ul/li[3]/a')[0].click()
        driver.find_elements_by_xpath('//*[@id="main_content"]/div/div/form/div/table/tbody/tr[4]/td[2]/div[1]/input')[0].send_keys(
            driver.find_elements_by_xpath('//*[@id="paymentpower"]')[0].text.replace("円", "").replace(",", ""))
        driver.find_elements_by_xpath('//*[@id="main_content"]/div/div/form/div/div/a')[0].click()
        
        driver.find_elements_by_xpath('//*[@id="main_content"]/div/div/form/div/div[2]/a')[0].click()
        global message
        message = "CONNECT証券にて出金が完了しました。"
        print(message)
        #send_notify() Discord使ってる人用

    except Exception as e:
        print(e)
        time.sleep(3)

        
##########################
# 通知
########################## 
def send_notify():
    discord = Discord(url="******") #通知したいDiscordのウェブフックURL
    discord.post(content= f'{message}')



main()

前提条件
投資信託の保有銘柄数が1種類のみ。
自分はeMAXIS Slim 国内債券インデックスのみ。投資信託保有銘柄の一番上段を指定するコードになっているので複数保有の場合は注意。

スクリプトの流れ

  1. ログイン

  2. 投資信託の売却、該当なければ3へ

  3. 指定口座へ出金、該当なければプログラム終了

##########################
# ログイン
##########################
def login():
    lg_id = "***********"
    lg_password = "************"
    torihiki_password = "*************"

"*********"ここにご自身のログインID、パスワード、取引パスワードを記載してください。

またDiscordを使われてる方は指示完了後に通知することも可能です。

##########################
# 通知
########################## 
def send_notify():
    discord = Discord(url="******") #通知したいDiscordのウェブフックURL
    discord.post(content= f'{message}')

"*********"ここに通知先DisucordのウェブフックURLを記載してください。




まとめ

PythonでCONNECT証券の自動化について書いてみました。

もしまだPythonを使ったことが無くてやり方がわからない方も一緒に勉強してみませんか? 自分の代わりにbotが作業してくれるって楽しいし何よりラクですよ〜。

今回のプログラムだと1~2週間勉強すれば動かせるはず。最初の設定に時間はかかりますが少しずつやっていけば必ずbotは動きます。

何か気になる点等ありましたらTwitterの方へどうぞ〜



この記事が気に入ったらサポートをしてみませんか?