フヨダ

自分の勉強と記憶力改善のために、興味あることを書いていきます なるべく分かりやすく

松井証券のCSVファイルをまとめてくれるプログラム python

こんにちは。松井証券の取引履歴のcsvをダウンロードしたら、適当にまとめてくれるプログラムを作りました。

csvファイルをこう、売り買いをひとまとめにして欲しかったので。

Pythonの練習にやりました。現物取引しか対応してないです。

出力されたファイル

f:id:gajumaru7:20200421004449p:plain

 

f:id:gajumaru7:20200421003538p:plain

こんなふうにディレクトリつくって、csvのフォルダに取引履歴のデータをダウンロードして入れます。

CSVは勝手に古いcsvとまとめてくれます。

 

それで

matuiAggregator.pyを起動すると、csv_uniter.pyが呼び出されて、

このディレクトリに売り買いを1セットとした、売買データが出力されます

csv_uniter.py のコード

#! Python3
# -*- coding: utf-8 -*-
csv_uniter.py - 松井証券の取引履歴のcsvを統合する

import csv, os, sys, datetime, shutil
import logging
#logging.disable(logging.CRITICAL)
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")

logging.debug("csvファイルを探索中...")
f_list = 

for filename in os.listdir(".\\csv"):
    if filename.lower().endswith(".csv"):
        f_list.append(filename)

def cPath(filename):
    dirname = os.path.join(".\\csv", filename)
    return dirname


# {日付: ファイルネーム}の用にデータをリストに突っ込んでいく
csv_data = 



if len(f_list) <= 1:
    logging.debug("ファイルが1つ以下でした。終了します")
else:
        

    new_f = open(cPath("matsui_united_{}.csv".format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))), "w"newline="")
    new_f_writer = csv.writer(new_f)

    for f in f_list:
        f = open(cPath(f), "r")
        f_reader = csv.reader(f)
        f_data = list(f_reader)
        for i in range(1len(f_data)):
            if f_data[i] in csv_data:
                continue
            csv_data.append(f_data[i])

    csv_dataをすべて、sort可能なdatetimeオブジェクトにする
    for i in range(len(csv_data)):
        csv_data[i][0] = datetime.datetime.strptime(csv_data[i][0], "%Y/%m/%d")
    # 時間を元にソートする、新しい日付が上になるように、reverseで降順にする
    csv_data.sort(key=lambda x: x[0], reverse=True)
    # 元のフォーマットに戻す
    for i in range(len(csv_data)):
        csv_data[i][0] = csv_data[i][0].strftime("%Y/%m/%d")

    # データを貼り付ける
    new_f_writer.writerow(f_data[0])
    new_f_writer.writerows(csv_data)


    f.close()
    new_f.close()
    # 最後に参照ファイルをpastフォルダに入れる
    for file in f_list:
        shutil.move(cPath(file), ".\\csv\\past")

logging.debug("csv処理完了")

 

matuiAgrregater.pyのコード

#! Python3
# -*- coding: utf-8 -*-
# matuiAggregater.py - 松井証券の取引履歴のcsvを読み込んで集計してくれるプログラム

import csv, os, shutil
from openpyxl.utils import get_column_letter, column_index_from_string

import logging, openpyxl, datetime
#logging.disable(logging.CRITICAL)
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")

import csv_uniter

logging.debug("xlsxファイルを生成します")

# 古いxlsxデータは.\\past_xlsxにいれる
for xlsxfile in os.listdir("."):
    if xlsxfile.lower().endswith(".xlsx"):
        logging.debug("同フォルダ内の古いxlsxファイルをpast_xlsxに移動します")
        shutil.move(xlsxfile, ".\\past_xlsx")


for filename in os.listdir(".\\csv"):
    if filename.lower().endswith(".csv"):
        csvfilename = filename
def cPath(file):
    return os.path.join(".\\csv"file)

savename = "matui_matome_{}.xlsx".format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
f = open(cPath(csvfilename))
f_reader = csv.reader(f)
f_data = list(f_reader)

# 2つの視点、セッターとチェッカーとする。セッターは主観。チェッカーはペアを探す視点。チェッカーにマッチしたらchecked_row_listにいれて、その行をセッターはスキップする
checked_row_list = 
only_buy_list = 

# 貼り付け先はxlsxファイルにする
wb = openpyxl.Workbook()
sheet = wb.active
# データの型は{取引区分0, 銘柄1, コード2, 買付日3, 買値4, 売却日5, 売値6, 保有日数7, 損益率8, 損益額9}
data_type_order = ["取引区分""銘柄""コード""買付日""売却日""保有日数","買数量""売数量""買値""売値""損益率","損益額""コメント"]



# エクセルシートを新規作成したので、data_type_orderリストに従って1列目を埋める
for Col in range(1len(data_type_order)+ 1):
    sheet.cell(1, Col).value = data_type_order[Col - 1]
# 一列目はウィンドウ固定する
sheet.freeze_panes = "A2"

# 受け渡し日ごとにまとまった列のブロックとして、それを古い日から順番にサーチしていく。 {受渡日: row}
day_row_dict = {}
for row in range(1len(f_data)):
    day_row_dict.setdefault(datetime.datetime.strptime(f_data[row][0], "%Y/%m/%d"), )
    day_row_dict[datetime.datetime.strptime(f_data[row][0], "%Y/%m/%d")].append(row)
# 念のため日付をソートする. 古い日が先頭に来る reverse=False
day_row_key = sorted(day_row_dict, reverse=False)


def pasteExcel(data):
    """辞書データを受け取って、excelの先頭行に貼り付ける"""
    # エクセルシートに貼り付ける
    sheet.insert_rows(2)
    # エクセルの第一列目を参照して、貼り付ける
    for Col in range(1, sheet.max_column + 1):
        try:
            sheet.cell(2, Col).value = data[sheet.cell(1, Col).value]
        # dataにないキーがでたらスキップする
        except KeyError:
            continue

def pareset(ROW1ROW2):
    """データを並びかえて作る ROW1が買い、ROW2が売却。売りだけの場合も、買いだけの場合もこれを呼び出すこと"""
    data = {}
    data["コメント"] = ""

    if ROW1 ==  and ROW2:
        #売りでだけの時
        data["取引区分"] = f_data[ROW2[0]][9]
        data["コード"] = f_data[ROW2[0]][2]
        data["銘柄"] = f_data[ROW2[0]][3]
        data["売却日"] = f_data[ROW2[-1]][1]
        sell_sum = 0
        sell_num = 0
        for i in range(len(ROW2)):
            sell_sum += int(f_data[ROW2[i]][14])
            sell_num += int(f_data[ROW2[i]][10])
        data["売値"] = sell_sum
        data["売数量"] = sell_num
        data["損益額"] = sell_sum
        data["コメント"] += "買いデータが足りません"
    
    elif ROW1 and ROW2 == :
        #買いだけの時
        data["取引区分"] = f_data[ROW1[0]][9]
        data["コード"] = f_data[ROW1[0]][2]
        data["銘柄"] = f_data[ROW1[0]][3]
        data["買付日"] = f_data[ROW1[0]][1]
        buy_sum = 0
        buy_num = 0
        for i in range(len(ROW1)):
            buy_sum += int(f_data[ROW1[i]][14])
            buy_num += int(f_data[ROW1[i]][10])        
        data["買値"] = buy_sum
        data["買数量"] = buy_num
        data["損益額"] = buy_sum

    # 売り買いペアであるとき
    elif ROW1 and ROW2:

    
        data["取引区分"] = f_data[ROW2[0]][9]
        data["コード"] = f_data[ROW2[0]][2]
        data["銘柄"] = f_data[ROW2[0]][3]
        # 複数の場合は最後に売却した日が売り
        data["売却日"] = f_data[ROW2[-1]][1]
        #売値, 買値、株数はリストの受け渡し金額を合算する
        sell_sum = 0
        sell_num = 0
        buy_sum = 0
        buy_num = 0
        for i in range(len(ROW2)):
            sell_sum += int(f_data[ROW2[i]][14])
            sell_num += int(f_data[ROW2[i]][10])
        data["売値"] = sell_sum
        data["売数量"] = sell_num
        data["買付日"] = f_data[ROW1[0]][1]    
        for i in range(len(ROW1)):
            buy_sum += int(f_data[ROW1[i]][14])
            buy_num += int(f_data[ROW1[i]][10])
        data["買値"] = buy_sum
        data["買数量"] = buy_num
        保有日数はdatetimeを使って計算する.datetimeを引き算するとtimedeltaオブジェクトができる
        date1 = datetime.datetime.strptime(f_data[ROW1[0]][1], "%Y/%m/%d")
        date2 = datetime.datetime.strptime(f_data[ROW2[-1]][1], "%Y/%m/%d")
        data["保有日数"] = int((date2 - date1).days)
        # +-がすでに付加されているので注意
        data["損益額"] = int(data["買値"]) + int(data["売値"])
        # 損益率は 損益額/ 買値(絶対値) * 100 単位は%
        data["損益率"] = round(int(data["損益額"]) / abs(int(data["買値"])) * 1001)
        if len(ROW2) > 1:
            data["コメント"] += "分割売り. "
        if len(ROW1) > 1:
            data["コメント"] += "買い増し. " 
        if sell_num > buy_num:
            data["コメント"] += "買いデータが足りません"
    else:
        raise Exception("pareset()に例外があります")
    pasteExcel(data)

def notPhyTrans(ROW1):
    """現物取引以外の項目をxlデータに貼り付ける"""
    data = {}
    data["取引区分"] = f_data[ROW1][9]
    data["買付日"] = f_data[ROW1][0]
    data["コード"] = f_data[ROW1][2]
    data["銘柄"] = f_data[ROW1][3]
    data["損益額"] = int(f_data[ROW1][14])

    pasteExcel(data)

for date in day_row_key:
    for Row in day_row_dict[date]:


    # メインの視点Row: CSVデータの一番下から上に向かって、スキャンする
        
        #後述のペア探しチェッカーがチェック済みならスキップする
        if Row in checked_row_list:
            continue
        # 取引区分が現物以外の配当金等ならペアを探さない個別で表示する
        elif f_data[Row][9] != "現物":
            #単体で新しいワークブックの列の一番上に挿入
            notPhyTrans(Row)
            continue
        # 現物かつ、売りで始まっていたら、買いが空白のデータとしてエクセルの一番上に挿入。このCSVの期間には、買いのデータが乗っていないのだ。
        elif f_data[Row][7] == "売":
            # 買いが空白のデータを一番上に送る
            pareset(ROW1=ROW2=[Row])
            continue
        elif f_data[Row][9] == "現物" and f_data[Row][7] == "買":
            checked_row_list.append(Row)
            # 現物かつ買いなので、チェッカーが売りのペアを探す。チェッカーの売りの数量を設定しておく
            # 残株数
            num_stocks_remaining = int(f_data[Row][10])

            # チェッカーで探した同一株を探し続ける。買った株数に追いつくまで。また買った株数が0になる前に買えば残株数に加算され、さらに売りを探す。
            # 最後まで売り切っていなければ一番最後にエクセルの上に挿入しないといけない
            multiple_checker_sell_rows = []
            multiple_checker_buy_rows = [Row]

            # チェッカー: checker_row がペアを探す。ペアのRowはチェック済みにする
            for checker_date in day_row_key[day_row_key.index(date):]:
                for checker_row in day_row_dict[checker_date]:
                # ペアもしくはxl反映済みの列はスキップする
                    if checker_row in checked_row_list:
                        continue
                    # 条件に合うペアを探す
                    if (f_data[Row][2] == f_data[checker_row][2]) and f_data[checker_row][7] == "売":            
                        # マッチしたものは、メインのRowやチェッカーのchecker_rowでスキップできるようにする
                        checked_row_list.append(checker_row)
                        multiple_checker_sell_rows.append(checker_row)
                        num_stocks_remaining -= int(f_data[checker_row][10])
                        if num_stocks_remaining == 0:
                            # ペアとみなして、エクセルデータにペアのデータを渡して、チェック済みにする            
                            pareset(ROW1=multiple_checker_buy_rows, ROW2=multiple_checker_sell_rows)
                            break
                        elif num_stocks_remaining > 0:
                            continue
                        else:
                            # なぜか売りの方が多い、CSVデータに買いがない
                            pareset(ROW1=multiple_checker_buy_rows, ROW2=multiple_checker_sell_rows)
                            

                    elif (f_data[Row][2] == f_data[checker_row][2]) and f_data[checker_row][7] == "買":
                        checked_row_list.append(checker_row)
                        multiple_checker_buy_rows.append(checker_row)
                        # 残株数が0になる前にまた買いがあれば、残株数を増やす。
                        num_stocks_remaining += int(f_data[checker_row][10])
                        continue
                    else:
                        # この列はチェッカーに引っ掛からなかった
                        continue
                
                else:
                    #1つのdate内でがブレイクなしに終わった
                    continue
                # チェッカーがブレイクして終わったらチェッカーのループを抜ける
                break
            
            else:
                #チェッカーがすべての列を見終わったのに、残株数がある場合
                if num_stocks_remaining > 0:
                    #TODO: 一番最後に一番上に持っていく, 残株数を表示したい
                    only_buy_list.append*1
        else:
            raise Exception("メイン視点で例外が存在しました")


# まだ売却していないものは上に持っていく
for row1, row2 in only_buy_list:
    pareset(ROW1=row1, ROW2=row2)
              

wb.save(savename)
f.close()


logging.debug("xlsx処理完了")

    
    

 



*1:multiple_checker_buy_rows, multiple_checker_sell_rows

エクセルファイルのすべてのシートを一個ずつCSVファイルに変換してくれるプログラム

退屈な事はpythonにやらせようの14章の演習問題

 

こんな感じです。本が3年前のなので、本書に書かれてるopenpyxlの関数がちょっと古かったりして、注意が必要。

 

なんか、自動で膨大なデータをちゃかちゃか処理してくれるって、すごい良い。

python知らない人でも、anaconda3インストールして、このプログラムを

.pyつけて保存して、処理したいエクセルファイルがあるフォルダに突っ込んで起動すれば使えると思います。

 

#! Python3
# -*- coding: utf-8 -*-
# xlsxToCsv.py - exelデータを読み込んで、すべてのシートをCSVにする

import openpyxl, csv, os

foldername = "xlsxToCsv"
os.makedirs(foldername, exist_ok=True)

for xlsx_file in os.listdir("."):
    # .xlsxでなければスキップ
    if not xlsx_file.lower().endswith(".xlsx"):
        continue
    # ワークブック内をシートごとに全コピーしてCSVを作る
    print("ファイルが見つかりました {}を処理します...".format(xlsx_file))
    
    wb = openpyxl.load_workbook(xlsx_file)

    for sheetname in wb.sheetnames:
        sheet = wb[sheetname]
        excelファイル名とシート名からCSV名を作ってファイルを作る
        csv_name = xlsx_file[:-5] + "_" + sheetname + ".csv"
        csv_file = open(os.path.join(foldername, csv_name),"w", newline="")
        csv_writer = csv.writer(csv_file)
        
        csvライターには["文字", "文字"]とリスト型で一行ずつデータを渡したいのでデータを作る
        for Row in range(1, sheet.max_row + 1):
            # 毎行ごとにrow_listは初期化される
            row_list = []
            for Col in range(1, sheet.max_column + 1):
                row_list.append(str(sheet.cell(Row, Col).value))
            csv_writer.writerow(row_list)
        # 書き込みが終了したらファイルを保存するコマンドは必要ないのでファイルを閉じとく
        csv_file.close()
print("完了")

最近pythonを学びだしたのでモンティホール問題を

プログラミングできたらカッコいいなと思って、敷居が低くて人気のpythonを勉強?しながら遊んでます。

 

参考本はオライリーの退屈な事はpythonにやらせよう、とか、アプリのsololearnとかで見てます。あと一年位前にprogateってアプリでpythonとか学んだ程度です。

 

スクレイピングとかエクセル操作、ファイル操作とか一通りやって、しょぼいプログラムなら組めるようになってきて、楽しい。

単純な問題なら、コード書いてループしてもらえば、何百回でも計算を繰り返してくれて凄い。コンピュータを褒めたい。そんな気持ちになる。

 

例えばここに有名な

モンティホール問題というのがある。

 

3つの扉があって、正解は一つ。自分が適当にどれか一つ選ぶと、司会者は残り二つから、間違った扉を一つ教えてくれる。

次に自分は最初に選んだ扉を変えるか変えないか選べる。

変えるのが良いか変えないのが良いか、どっちでしょう。

 

という問題だ。

 

いっぱんの直感的には、変えても変えなくても同じだろ。と考えてしまうが、

正解は変えたほうが、正解率はぐっと上がる。

 

pythonでコード書いて、変える場合と、変えない場合1万回やってもらって試してみた。

結果は

>>>

変えない場合3323回正解、6677回失敗
変える場合6667回正解、3333回失敗

だった。コードは以下

 

#! Python3
# -*- coding: utf-8 -*-

# 0, 1, 2 三つの扉があり、司会者は1つ正解を知っている。
# 私は1つ扉を選ぶと、司会者はそれ以外の間違った扉を教えてくれる。
# 次に私は今いる扉を変更するか、しないか選ぶことができる。確立に違いはあるか

import random

correct_count = 0
miss_count = 0
# 変えないとき
for i in range(10000):        
    answer = random.randint(0,2)
    select = random.randint(0,2)
    select_list = [012]
    select_list.remove(answer)
    if answer == select:
        sikaisha = select_list[random.randint(0,1)]
    else:
        select_list.remove(select)
        sikaish = select_list[0]
    if select == answer:
        correct_count +=1
    else:
        miss_count += 1
print("変えない場合{}回正解、{}回失敗".format(correct_count, miss_count))

# 変える場合
correct_count = 0
miss_count = 0
for i in range(10000):        
    answer = random.randint(0,2)
    select = random.randint(0,2)
    select_list = [012]
    select_list.remove(answer)
    if answer == select:
        sikaisha = random.choice(select_list)
    else:
        select_list.remove(select)
        sikaisha = select_list[0]
    # 変える
    re_select_list = [012]
    re_select_list.remove(select)
    re_select_list.remove(sikaisha)
    select = re_select_list[0]
    
    if select == answer:
        correct_count +=1
    else:
        miss_count += 1
print("変える場合{}回正解、{}回失敗".format(correct_count, miss_count))


 

変えない場合3323回正解、6677回失敗
変える場合6667回正解、3333回失敗

 

おー。って感じです。なんか収束してる。

 

数学の素養があれば、確率の考え方でぱっと分かるんだろうけど、

こういった力技の計算だともっとなんか納得がいきます。

 

ありがとうpython

友人がN国にはまってる

 nhkから国民を守る党という、youtubeで人気を集めて参議院議席を獲得した党の事を、俺の仲の良い友達が好きみたいだ。

 俺はNHKがんばってるな、と日頃思っていて、進撃の巨人おもしろいな、とか、地震や台風、洪水とか自然災害に関して情報の質高いし、動物番組すきだとか、語学ラジオいいな、とかの理由でNHKには肯定的だ。合原アナウンサーの見た目がとても好きだったし。

 それをぶっ壊すと言っているN国党にはあんまりいい感想を持てなかったし、やばそうなやつらが演説してるな。とも思った。

 集金人の質の悪さや、効率的な集金システムや料金体制を指摘されてるので、そこんとこを直せばいいのに。彼らはNHKぶっこわすと言っている。nhkで働いてる中の人は一生懸命やってるんだから、破壊は勘弁してやれよ。だれが公共放送やるんだ?

 

 去年実家に帰ってきて、大学の友人とまた連絡を取るようになった。友人は厳しい仕事に疲れていた。色々話を聞いてるうちに、N国の話が上がって、その影響を受けて、彼は勤めている会社や、なぜかNHKの会社も爆破したいとも言っていた。もちろん冗談ではあるのだろうが。ただ確かにNHKを悪者として見るようになっていた。

 N国党の影響とはこんな身近にあるのだと危機感を感じた。ショックだった。しかも俺がN国に良い印象を持ってないことを伝えると、彼は驚いて、俺は少数派だといってきた。まじか。

 たしかにネット上はN国批判すると、逆に炎上するという空気が作られていた。党首が目的のためなら、犯罪行為も黙認するというようなラジカルな事を言っているようだ。

 

まあNHKみないひとにとって受信料は無駄遣いでしかないのかな。

ただ俺達の払ってる所得税や消費税、などの税金だってどこか知らない道路とか、自衛隊の装備とか、国立競技場とか、自分とは関係ないものに充てられてる。

 税として徴収してしまうと国との癒着になるので、公共性が失われる。NHKが個別にとるしかないのだ。

 

 でも最近えらいてんちょうが戦ってくれている。

はじめはN国の何年にもわたった動向分析を行い動画で批判を始めた。本まで執筆したようだ。

先日の立花党首と直接対決?奇襲をかけ、ネットで注目を集めている。

 双極性障害の躁のコンディション、やからの様なテンションで、危険な剣幕で立花党首を捲し立てる様子は、いつものえらてんではなく、立花党首を論破するための訓練をした戦士だった。これがゲリラ戦術なのかな。

 それぐらい強いNoを突き付けてあげれて、逃げ出させる力があるのはこの人しかいない。

ただ反対する著名人もだまらせる立花党首の手腕もおそろしい。直接やると負けるとわかっているので間接的な手段に走るとおもう。

 どうか勝ってほしい。党の解散が勝利だとおもうけど、ゲリラ作戦は大成功してるから、いまはクールタイムでいいと思う。その間、こんな間接的な攻撃をされている、ということを発信すれば、N国にとっては大ダメージだ。

 

俺の友人もちゃんとした企業で働いてるし、NHKの集金額なんて、国に吸いとられてるより微々たるもんなんだし、NHK語学ラジオつかってるし。N国に刷り込まれた憎悪をさっさと忘れてほしい。

 

なにを書いているんだろう。

俺は無職だ。

雑記


f:id:gajumaru7:20181220144323j:image

先日天井みえる化をしたニホンミツバチが全滅した。盗蜜は恐ろしい。

液糖を与えたのがまずかったかもしれない。

からっからの巣を残しもぬけの殻になっていた。

 

台風でやられた岐阜産のみつばちも死にそうだ。反して北海道産は異常なほど元気。

 

秋に分蜂したニホンミツバチは、コヂンマリしてるが元気


f:id:gajumaru7:20181220144731j:image

 

この冬は、運が悪ければ北海道の一群しか残らないかもしれない。良くてニホンミツバチも生き残れて2群。

めちゃくちゃ運が良くて3群。

 

英語の勉強し始めました。なんかやってないと人間がダメになる。

 

ホモデウスのやさしいマンガ本を読んだ。なんかニートの女の子がボルタリングする話だった。

人間と他の動物との違いはフィクションを信じることができるって考えが面白いな、と思った。まだ本物のホモデウスは読んでないけど。

宗教やお金、国っていう実体をもたない、実体があるみたいに作られたもの、色々あるよね。それを大多数が信じることで、強力な

実態をもつね。すごい能力だ。

 

最近ポルノ依存の記事を見た。

ポルノ依存はadhdに似た症状を引き起こすらしい。あと睡眠不足。 やばい。

俺はポルノを見るのをやめた。

 

 

食品衛生責任者

f:id:gajumaru7:20181206000740j:plain

食品衛生責任者プレートゲット

 

 

先日神奈川県の食品衛生責任者養成講習会を受けてきました。

これでちゃんとした施設があれば、食品衛生責任者になって、食品を扱うことができる。やりました。

 

私ははちみつを売ったりするのを最近始めたのですが(メルカリで)、食品をつくる衛生的な知識を勉強しといたほうが良いと思ったので、とって来ました。

 

といっても1万円払って、1日缶詰で講演を聞けば取れます。

 

内容は主に、食中毒や感染症についてのお話がメインでした。

それと鶏肉のトサツ過程の話とか、普段聞けない面白い話が聞けたので、あと久しぶりにお勉強みたいな空気が学生時代みたいで、楽しんで話を聞いていました。

 

もっと加工食品を作る際の設備的な話を掘り下げてくれれば良かったなと思いました。

そこはテキストを見て勉強しようと思います。

 

はちみつは加工食品ではないので、本当は講習を受けなくても売れるのですが、

 

資格あったほうがかっこいいので取りました。

 

巣箱の天井部分見える化

こんなの作ってみました。


f:id:gajumaru7:20181125214504j:image

 

ふたがパカッと開きます

 


f:id:gajumaru7:20181125214541j:image

 

透けてます

 


f:id:gajumaru7:20181125214557j:image

 

蜂の巣箱の天板です。

 

巣箱に乗せてみました。

 


f:id:gajumaru7:20181125214659j:image

 

 


f:id:gajumaru7:20181125215920j:image

 

 

ニホンミツバチの巣にめちゃくちゃ西洋ミツバチが蜜を盗みに来るので、完全に巣門を閉じて対応しました。

ついでに天井部分に給餌スペースを作ったのでそこが覗けるようにしたのでした。

 

観察がはかどります。

 

西洋ミツバチは、夜もニホンミツバチの巣に泊まって、 朝帰りしながらしつこくやって来るんですよね。

 

夜に巣門締めて何日かほっとく作戦しても、画像のように覗くとまだセイヨウミツバチがいるんですよね。

 

巣門を開けたらまた戻って位置を知らされるのでなかなか効果がない。

 

もう最後のわるあがきに

巣箱は10mくらい移動しました。

もとの場所にはダミー巣箱を置いておきました。

 

次の日見たらすこし盗蜜がおさまってた気がします。まだ少し西洋みつばちの盗蜜いたけど。

すべて吸い付くしたのかな?

 

弱群なんで巣虫の薬も買って塗布しときました。

 

できることはやったし、あとはもういいや。

ここ何日も対応して疲れた感があります。

ホントは二キロ移動がいいんだけど。

 

今後は天井だけでなく重箱部分も見える化できたら良いかもしれない。観察が捗るかもしれないです。