Ubuntu Desktop 22.04.1 LTS 新規環境構築メモ docker 2023-01-19

 

今使っているUbuntu 16.04はすでにサポートが切れている。

物理マシンからddでクローンしてVirtualboxで動かすことも考えたけどなかなかうまく行かなかった。

そもそもVirtualbox内で動かすサーバーにして冗長化させた方が何かあった後の復旧も楽だと思います。

よって、現在のリテールの最新、Ubuntu Desktop 22.04.1 LTS をベースに環境構築しなおした方が良いだろう。

あと、なるべくDockerで動かすようにして、環境をなるべく汚さないように作るつもりでいます。

 

2023-02-27(MO) ネットワーク切換設定追加。。

ローカルとリモートで切り替え。

ローカルはブリッジ。NATとかは切断。

リモートはVPNとする。

VPNとブリッジのNICは同じIPを設定して、ローカルでもリモートでも同じIPで接続できるようにする。

start_network_set.sh



#!/bin/bash
vpn_connect=xxxx
vpn_passwd_file=/path/file
eth_bridge=enpxx1
eth_nat=enpxx2
eth_hostonly=xx3
check_connect_ip=192.168.x.xxx

sudo nmcli device disconnect $eth_bridge
sleep 10
nmcli con up buffalo_home passwd-file $vpn_passwd_file
sleep 10
ping_result=$(ping -w 5 $check_connect_ip | grep '100% packet loss')
if [[ -n $ping_result ]]; then
    echo "vpn_not connected"
    sudo nmcli device connect $eth_bridge
    sleep 5
    ping_result=$(ping -w 5 $check_connect_ip | grep '100% packet loss')
    if [[ -n $ping_result ]]; then
        echo "vpn_bridge connected"
        sudo nmcli device disconnect $eth_hostonly
        sudo nmcli device disconnect $eth_nat
        echo "add local setting script"
    fi

else
    echo "vpn_connected its remote env"
fi



 

2023-02-25(SA) Virtualboxコマンド実行調査。

 

参考

cd C:\Program Files\Oracle\VirtualBox

VBoxManage startvm “Ubuntu_xxxxxxxxxx”

 

 

2023-02-24(FR) ネットワーク接続設定事前調査。

自宅にいるときとモバイルの時で接続状態を変更したほうがいいだろう。

自動で認識して接続を変更するように調査。

参考

VPNに接続する時。

nmcli con up vpn接続先 passwd-file /path/パスワードファイル

デバイスリスト

nmcli device

DEVICE TYPE STATE CONNECTION
enp0s3 ethernet 接続済み 有線接続 1
enp0s8 ethernet 接続済み 有線接続 2
enp0s9 ethernet 切断済み —

nmcli device connect enp0s9

エラー: デバイスのアクティベートに失敗しました: Not authorized to control networking.

sudoを付けて実行すればOK

sudo nmcli device connect enp0s9

curl で今接続したIPが通信できるか確認しようか。

curl 192.168.xxx.xxx:port/kakunin_file

切断
sudo nmcli dev disconnect enp0s9

 

 

2023-02-20(MO) Softether VPN serverを使ってテスト。

ChatGPTと会話していて気が付きました。
Softetherのサーバーをいま使っているWin10にインストールしてローカルに接続すればVirtualboxのブリッジ接続でIPを固定、ポートフォワーディング設定も固定できるのではないか?

現在固定で使っている32bitのwin10のVPN Serverと競合しないようにポートを変更した方が良いだろう。

いや、無理そうだ。ブリッジするアダプタをルーターの内側に置かないといけない。それが無いんだな。

矢張りローカルの時だけスクリプトで経路を変更した方が良いだろう。

 

 

2023-02-20(MO) 運用方法変更

VPNの動作が怪しい。ローカル接続時はつながらない。
そういう仕様なのだろう。

またリモートでVPNを接続しても、ポートフォワーディングで飛ばせなかった。

ということで、Virtualboxの設定をローカルともモバイルで変更で対応しよう。

ローカルの時はブリッジ接続だけにする。
これでルーターのポートフォワーディングが有効になる。

モバイルの時はNATにする。
VPNへの接続は無くていいかな多分。

SoftEtherのようにはいかないようだ。

Softetherの融通の利きようは凄かったんだなと。

よって、VPN自動接続を削除。

次の実験は、ブリッジアダプタで接続できた時に、NAT、ホストオンリーアダプタを無効にして、更に、その状態で、ルーターからのポートフォワーディングに対応できるか?だろう。

つまりローカル接続時を自動的に判定して、接続を変えたいわけだ。

Let’s encryptの自動更新もローカル接続の時だけ実行すればいいだろう。

参考

docker-compose run –rm certbot renew –dry-run

 

 

 

2023-02-13(MO) VPN設定中,コマンドライン

恐らくこちらの内容かな。参考

2023-02-16(TH)

警告: ‘vpn.secrets.password’ のパスワードが ‘passwd-file’ で提供されていません。

結果的にはpasswd-fileファイルを指定してコマンドから接続できました。参考

sudo nmcli -a con up my-vpn-name

で実行すると、

パスワード (vpn.secrets.password):
Pre-shared key (PSK) (vpn.secrets.ipsec-psk): ••••••••••••••

という事でしたので。

sudo nmcli con up my-vpn-name passwd-file /path/to/password

vi password

vpn.secrets.password:パスワード
vpn.secrets.ipsec-psk:キー

VPN のユーザー自体は Ubuntuから接続するように専用に設けました。

用はユーザーを使いまわすと前に使っていたPCが自動的に切断されていたので。

#password-flags=1
password-flags=0

は関係なかったかも?

 

cronに設定。

@reboot nmcli con up vpn-name passwd-file /path/to/password

接続されていない。おかしいな。

@reboot sleep 2:m ;nmcli con up vpn-name passwd-file /path/to/password

 

 

2023-02-13(MO) VPN設定中

ルーターのVPN Server ,no-ip でのDDNSなどある程度設定しました。

Win10,AndroidからのVPN接続可能になりましたし、ルーターの設定画面からWOLも可能と思う。

一応Softetherみたいに仮想ネットワークカードを指定してブリッジ接続できないかと思ったけどVirtualboxからできない?

代わりに、Ubuntu22からスタートアップでVPNに接続したい所だけど今のところで来ていません。

Ubuntu22からVPN接続自体は可能でした。GUIで。

ゲストOSからルーターのl2tp/IPSECにつなぐ。

参考

VPNに自動接続されない。要はコマンドラインで接続できていません。

参考

nm-connection-editor というGUIツールをを使えばできそうなんだけど、今の所コマンドラインからはで来ていません。

と言うかVPNを自動起動に設定すると起動時にEther自体が起動しないようです。

nmcli 参考

コマンド実行結果。

仮想プライベートネットワーク“vpn_name”にアクセスするには認証が必要です。
警告: ‘vpn.secrets.password’ のパスワードが ‘passwd-file’ で提供されていません。nmcli は ‘–ask’ オプションがないと尋ねることができません。
エラー: 接続のアクティベーションに失敗: 有効なシークレットはありません
ヒント: ‘journalctl -xe NM_CONNECTION=xxxxxxxxxxx + NM_DEVICE=enp0s999’ を使用して詳細を取得します。

用はパスワード系の話のようだ。けど、ベタ打ちではちょっとなと思ってしまうからな。

今度これを試そう。

nmcli con up uuid MY_UUID passwd-file /my/vpn/password

用はパスワードファイルを作るのかもしれないが、フォーマットどうなっているのかな。

というか、GUIで設定したファイルは使えないのかな?

 

 

2023-02-06 ポートフォワーディング、外部からアクセス

ブリッジアダプターで接続しました。

普通にポートフォワーディングしただけですが、VirtualboxのNATを無効にしたら接続可能になりました。

 

2023-01-30 default.conf を設定。Serverを追加した方が良い。Laravelだけで使うわけではないからという事で。

 

nginx.conf の設定をした方が良いだろう。

nginxの設定ファイル nginx.conf の読み方 超入門

server は default.conf の所に追加できるんじゃないかな。

2023-01-30 laravel環境構築_nginxなど。

nginxの所でエラーが発生

nginx: [emerg] unknown directive “//” in /etc/nginx/conf.d/default.conf:6

→コメントを削除したら起動しました。
用は全角駄目。

基本コピペですが、

// 書き換え

とかのコメントをとりあえず削除して起動しています。

Mysqlまで作った所。

取りあえずイメージがごちゃごちゃしてしまったので一回全部削除して作り直しました。

現在こんな感じになっています。

/docker_sample$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_sample_db latest xxxxxxxxxxxx 19 seconds ago 517MB
docker_sample_web latest xxxxxxxxxxxx 3 minutes ago 23.2MB
docker_sample_app latest xxxxxxxxxxxx 3 minutes ago 547MB
mysql 8.0 xxxxxxxxxxxx 2 days ago 517MB
php 8.0-fpm xxxxxxxxxxxx 2 weeks ago 445MB
nginx 1.20-alpine xxxxxxxxxxxx 8 months ago 23.2MB
composer 2.0 xxxxxxxxxxxx 20 months ago 173MB

 

2023-01-26 laravel環境構築。

 

こちらに載っているコマンドをそのまま適用。

docker compose up -d

の所だけ、docker-compose ではなくハイフンが無い状態だと動作した。

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read

うまく行かない。

こちらに載っている記事を参考にした方が詳しくていいようだ。

app の所のビルドでいきなり躓いた所。

docker compose up -d –build

yaml: line 5: mapping values are not allowed in this context

と言うエラー

sudo apt install docker-compose

エラーメッセージが変わった

ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
in “./docker-compose.yml”, line 5, column 10

なんだけど、実際はディレクトリ構造が間違っていたのが原因。

docker ディレクトリ作り忘れてただけ。

あと、コメントを外しました。これは関係ないのかもしれないけど。

nginxの所でエラーが発生

nginx: [emerg] unknown directive “//” in /etc/nginx/conf.d/default.conf:6

 

2023-01-23 Dockerインストール。

 

Docker インストール、参考

 

 

 

2023-01-21 SSH接続設定。

こちらを参考にSSH接続設定。

2023-01-20 ブリッジアダプターが未選択に対応。

ブリッジアダプターが未選択に対応。
用はブリッジアダプターを使います。

こちらによると、再インストールで治るそうです。

完了。
アダプターはVPNを使おう。VPNに接続した時だけ有効になればいいかと。

ping 192.168.x.xx

OK

 

2023-01-19 ダウンロード、インストール

 

こちらからisoをダウンロード

Ubuntu Desktop 22.04.1 LTS は 2027年4月 までサポートされるようだ。

Ubuntu Desktop 22.04.1 LTS_20230119_1.vdi

とか言う名前で作成しています。

システムの詳細

インストール中に画面が見切れる対応。こちらを参考にしました。

グラフィックコントローラー の設定を変更。

インストール完了後に元に戻さないと起動しなかった。

GuestAdditionインストール。

IOSを追加しただけではインストーラーが起動しなかったため、コマンドでインストール。

再起動でコピペができるようになりました。

/media/username/VBox_GAs_6.1.22$./VBoxLinuxAdditions.run

この時点でのディスク容量は12.0 GB

この時点で一時的にコピー、バックアップ

 

 

 

2023 bybit cryptact byfi カスタムファイル作成開始。

2023-10-16

Cryptact側の回答。

ーーー

ご認識の通り、Bybit資産運用(旧ByFi)/ Bybitステーキングはファイルでの対応をしておりますが、
API経由に関しては取引所からAPI経由で取引履歴の配信がされていないため、対応しておりません。

ーーー

しかしCryptact Webでの調査ーーーーー

5.Bybit/Bybit資産運用(旧ByFiセンター) 積立ステーキング、定期ステーキングのダウンロード方法
大変恐れ入りますが、取引所側で画面の構成が変わってしまったため、以前の方法ではダウンロードができなくなってしまいました。弊社では履歴を持ち合わせておりませんため、取引所にダウンロード方法をご確認ください。なお、お客様からダウンロードを方法をご説明いただけましたら、ヘルプページをアップデートさせていただきます。

ーーーーーーーーーーーーーー

つまり、ステーキング履歴ファイルはなくなっている。となるとカスタムファイルを作るか。

 

また、Bybitのデータが壊れていた件。

結局bybitにはメール問い合わせでデータを取得しました。

以下がbybit earnのデータと思われます。

UUID Bybit Earn data to 2023-03-27.csv

UUID Bybit Earn data from 2023-03-27 to end.csv

3月27日からフォーマットが変わったのかな??2つあるんだこれがめんどくさいことに。

とにかくファイル突合。
UUID Bybit Earn data to 2023-03-27.csv
2022年は11月12日までステーキングしていたようです。
クリプタクトのデータと突合。

この時点でbybit使うのやめようと思ってしまいます。めんどくさすぎる。

まずファイル突合で、日付でソートの作業、表示桁数を合わせる、見出しを固定する。日付をUTCからJSTに変換して数量を比較する。
この作業が必要で、めんどくさい。

一般的には全然おすすめではないよね。

Libreofficeで形式をそろえました。

=A1+TIME(9,0,0)
セルの書式設定で、後に表示形式を変更、日付も出すように。

この形式のまま取りあえず、

converted_UUID Bybit Earn data to 2023-03-27.ods

として保存。

 

change_amount wallet_balance

を見比べながら、
wallet_balanceが少しづつ増えているのがステーキング報酬として目視で抽出。

となると、1月7日からステーキング報酬が増えているということが分かりました。

2月1日にUSDCを引き出しています。
なんだったかな。25ドルほど。
3月1日にもUSDCを引き出していました。
27ドルほど。

3月11日にUSDCを引き出してステーキングをやめている。
まあ、いろいろ厳しいイベントがありましたからね。

3月20日に以下のやつを引き出していたようです。
ETH
USDT
RUN
SYNR
MV
MMC

取りあえずそれ以外、コンスタントに入金されているのがステーキング報酬ということになるでしょう。

この辺は目視で確認しています。
このデータをクリプタクトのカスタムファイル形式にしないといけないので、GoogleSheetにコピーします。

 

去年はローカルのOpenOfficeだったけどローカルだと不便だのでGoogleSheetに移行してプログラムを作るかと。

Timestamp Action Source Base Volume Price Counter Fee FeeCcy Comment
2022/11/12 9:33 STAKING Bybit_ByFi BIT 0.07516986 JPY 0 JPY Flexible staking

こんな項目で新規に作成。

フォーマットは変わっていないと思われます。CryptactのWebで一応確認。

別フォーマット”UUID Bybit Earn data from 2023-03-27 to end”の確認。

UpdateTime
2023-03-27T00:31:38Z
これをJSTに変換
=VALUE(LEFT(J2,10) & ” ” & MID(J2,12,8)) + TIME(9,0,0)

 

——chatgpt4 に聞いて変換——

次に、LibreOfficeでの表示データで以下のようなものがあります。

TxnAmount
2.5490000E-05

これではE-05 となっていてよろしくありません。

元のCSVファイルを見ると、

0.000025490000000000

となっているようです。

0.000025490
となるように表示してほしいのですが。

LibreOffice Calcで科学的表示法 (例:2.5490000E-05) から通常の表示形式に変更する方法は以下のとおりです:

1. 対象のセルまたはセルの範囲を選択します。この場合は、`TxnAmount` の値が入っているセルを選択します。

2. メニューバーで「書式」を選択し、ドロップダウンメニューから「セル」をクリックします。

3. 「数値」タブをクリックします。

4. 「数値」のカテゴリーを選択します。

5. 「表示形式のコード」の領域に次の形式を手動で入力します:

“`
0.000000000
“`

この形式は、小数点以下9桁までの数字を表示することを指示します。必要に応じて桁数を増減させることができます。

6. 「OK」をクリックしてダイアログボックスを閉じます。

この手順を完了すると、セルの値は `0.000025490` のように表示されるはずです。

————–
converted_uuid Bybit Earn data from 2023-03-27 to end.ods

として保存。
同様にGoogleSheetに手作業コピー

次に、積み立てBotの調査。

メモによると、3月12日から積み立て設定している。
2023-03-12 積み立てボット設定 bybit BTC,ETH,XRP

シリコンバレー銀行破綻。
とか、
2024年にBTC半減期。
とかいうことで買い始めた記録がある。

converted_Bybit UID UUID – Funding Asset History.ods

によると、
2023-03-11 20:50:06
Transfer in-Transfer from Spot Account
Bot-Transfer to Trading Bot

となっているので、記録とあっている。
しかしこのファイルは取引の記録になっていないな。口座の増減だけだろう。

よってWEBから手作業で取得

停止中のボット

詳細

稼働開始時間
2023/03/12 05:53:19
稼働終了時間
2023/06/21 05:54:00

となっているので、記録とあっている。

注文履歴で一応内容が見れる。

となると、これを手動コピーしてデータを作るかな。

時間 取引ペア 平均価格 約定数量 約定金額 アクション
買い注文
06-21 05:53:20
BTC/USDT 28,128.7 USDT 0.000142 BTC 3.9942754 USDT
詳細
買い注文
06-21 05:53:20
ETH/USDT 1,784.36 USDT 0.00224 ETH 3.9969664 USDT
詳細

手作業でコピーだとこんなデータになってしまう。
これを成型する必要があるだろう。

manual_auto_bot.ods
を作成。

 

現物注文
こちらからダウンロードできるみたい。

取引履歴

2022-12-01 ~ 2023-06-01
2023-10-16 15:17:29
完了
今すぐダウンロード

Bybit-Spot-TradeHistory-2022-12-01-2023-06-01.xls

調べてみたらCryptactに記録されていない。
手動で入れるか??

2023-06-01 ~ 2023-10-15
2023-10-16 15:20:51
も一応ダウンロードして確認

こちらは一件だけだった。
Bybit-Spot-TradeHistory-2023-06-01-2023-10-15.xls

カスタムファイルにするか検討中。

清原 さんの書籍「わが投資術 市場は誰に微笑むか」に関するメモ

 

 

バフェットコード

Kabutan

N/C比率1以上=スクリプト

Tradingview スクリーニング

2025-03-06 US銘柄とかもスクリーニングできるのは便利だ。Tradingview

 

まあ、あまりに極端なスクリーニング過ぎるけど。

 

時価総額スクリーニング逆のほうがいいかな。

2025-03-06 Tradingviewでのスクリーニング。

これってSMA(100)>価格みたいにチャートで絞ることもできそう。

用は便利っぽい気がする。

“流動資産”、”負債合計”で絞れないのでマニュアル追加で目視って事にはなるけど。

N/C比率のスクリプトは作っていないから目視でだいたいでってことにとりあえずはなるんだけど。

 

2025-03-06 スクリーニング条件若干変更。超厳しめ。

用は営業利益率の条件追加。

で、スクリプト実行でNC比率を出す。

絞るとこれが残る。

銘柄コード 会社名 流動資産-負債 NC比率
8772 アサックス 38504 1.59

 

 

株探で調査。配当増やせるはずと思う。

チャートは微妙。

 

2024-07-22とりあえずシートに貼り付けた後の処理をスクリプトで自動にした。

 

024-07-22とりあえずシートに貼り付けた後の処理をスクリプトで自動にした。

要は比較日を設定して、前回のデータを突合することにした。

メモはそのまま同期、新規は太字でわかるように。

流動資産-負債 、NC比率 とかの計算は自動、ソートも自動、背景色も移行。

GASを使います。



function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // メニューを追加
  ui.createMenu('Custom Menu')
    .addItem('Execute Tasks', 'myFunction')
    .addToUi();
}
function myFunction() {
  freezeRowsAndColumns();
  addColumnsAndCalculate();
  sortData();
  formatColumnHeadersAndData();
  copyMemoAndBackground();
  highlightNewEntries();

}
function freezeRowsAndColumns() {
  // アクティブなスプレッドシートを取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // アクティブなシートを取得
  var sheet = ss.getActiveSheet();
  
  // 行を固定(この場合は3行目までを固定)
  sheet.setFrozenRows(2);
  
  // 列を固定(この場合は3列目までを固定)
  sheet.setFrozenColumns(3);
}

function addColumnsAndCalculate() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();

  // ヘッダー行を取得
  var headers = sheet.getRange(2, 1, 1, lastColumn).getValues()[0];

  // 各カラムのインデックスを取得
  var liabilitiesCol = headers.indexOf('負債') + 1;
  var currentAssetsCol = headers.indexOf('流動資産') + 1;
  var marketValueCol = headers.indexOf('時価総額') + 1;

  if (liabilitiesCol === 0 || currentAssetsCol === 0 || marketValueCol === 0) {
    Logger.log("必要なカラムが見つかりません。");
    return;
  }

  // 新しいカラム見出しの追加
  sheet.insertColumnAfter(lastColumn);
  sheet.insertColumnAfter(lastColumn + 1);
  sheet.getRange(2, lastColumn + 1).setValue("流動資産-負債");
  sheet.getRange(2, lastColumn + 2).setValue("NC比率");

  // 各行に対して計算を実行
  for (var i = 3; i <= lastRow; i++) { var liabilities = sheet.getRange(i, liabilitiesCol).getValue(); var currentAssets = sheet.getRange(i, currentAssetsCol).getValue(); var marketValue = sheet.getRange(i, marketValueCol).getValue(); if (typeof liabilities === 'number' && typeof currentAssets === 'number' && typeof marketValue === 'number' && marketValue !== 0) { var netCurrentAssets = currentAssets - liabilities; var ncRatio = netCurrentAssets / marketValue; sheet.getRange(i, lastColumn + 1).setValue(netCurrentAssets); sheet.getRange(i, lastColumn + 2).setValue(ncRatio); sheet.getRange(i, lastColumn + 2).setNumberFormat("0.00"); // 小数点以下2桁のフォーマットを適用 } else { sheet.getRange(i, lastColumn + 1).setValue("#NUM!"); sheet.getRange(i, lastColumn + 2).setValue("#NUM!"); } } } function sortData() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); var lastColumn = sheet.getLastColumn(); // ヘッダー行を取得 var headers = sheet.getRange(2, 1, 1, lastColumn).getValues()[0]; // 各カラムのインデックスを取得 var ncRatioCol = headers.indexOf('NC比率') + 1; var perCol = headers.indexOf('PER(会予)') + 1; if (ncRatioCol === 0 || perCol === 0) { Logger.log("必要なカラムが見つかりません。"); return; } // ソート範囲を取得 var range = sheet.getRange(3, 1, lastRow - 2, lastColumn); // ソート実行 range.sort([{ column: ncRatioCol, ascending: false }, { column: perCol, ascending: true }]); } function formatColumnHeadersAndData() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); var lastColumn = sheet.getLastColumn(); // ヘッダー行を取得 var headers = sheet.getRange(2, 1, 1, lastColumn).getValues()[0]; // カラムのインデックスを取得 var marketValueCol = headers.indexOf('時価総額') + 1; var liabilitiesCol = headers.indexOf('負債') + 1; var currentAssetsCol = headers.indexOf('流動資産') + 1; var netCurrentAssetsCol = headers.indexOf('流動資産-負債') + 1; var ncRatioCol = headers.indexOf('NC比率') + 1; // 緑色にするカラム if (marketValueCol > 0) {
    sheet.getRange(2, marketValueCol, lastRow - 1, 1).setFontColor("green");
  }
  if (liabilitiesCol > 0) {
    sheet.getRange(2, liabilitiesCol, lastRow - 1, 1).setFontColor("green");
  }
  if (currentAssetsCol > 0) {
    sheet.getRange(2, currentAssetsCol, lastRow - 1, 1).setFontColor("green");
  }

  // 赤色にするカラム
  if (netCurrentAssetsCol > 0) {
    sheet.getRange(2, netCurrentAssetsCol, lastRow - 1, 1).setFontColor("red");
  }
  if (ncRatioCol > 0) {
    sheet.getRange(2, ncRatioCol, lastRow - 1, 1).setFontColor("red");
  }
}
function copyMemoAndBackground() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();
  var comparisonSheetName = activeSheet.getRange("C1").getValue();
  var comparisonSheet = ss.getSheetByName(comparisonSheetName);
  
  if (!comparisonSheet) {
    Logger.log("比較するタブが見つかりません。");
    return;
  }

  var lastRowActive = activeSheet.getLastRow();
  var lastRowComparison = comparisonSheet.getLastRow();
  var lastColumnActive = activeSheet.getLastColumn();
  
  // アクティブなタブに「メモ」列を追加
  activeSheet.insertColumnAfter(lastColumnActive);
  activeSheet.getRange(2, lastColumnActive + 1).setValue("メモ");

  // アクティブなタブと比較タブの会社名の列を取得
  var activeCompanyNames = activeSheet.getRange(3, 1, lastRowActive - 2, 1).getValues().flat();
  var comparisonCompanyNames = comparisonSheet.getRange(3, 1, lastRowComparison - 2, 1).getValues().flat();

  for (var i = 0; i < activeCompanyNames.length; i++) { var activeCompanyName = activeCompanyNames[i]; var comparisonIndex = comparisonCompanyNames.indexOf(activeCompanyName); if (comparisonIndex > -1) {
      // 比較タブからメモをコピー
      var memo = comparisonSheet.getRange(comparisonIndex + 3, lastColumnActive + 1).getValue();
      activeSheet.getRange(i + 3, lastColumnActive + 1).setValue(memo);
      
      // 比較タブの背景色をコピー
      var bgColor = comparisonSheet.getRange(comparisonIndex + 3, 1, 1, comparisonSheet.getLastColumn()).getBackground();
      activeSheet.getRange(i + 3, 1, 1, activeSheet.getLastColumn()).setBackground(bgColor);
    }
  }
}
function highlightNewEntries() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();
  var comparisonSheetName = activeSheet.getRange("C1").getValue();
  var comparisonSheet = ss.getSheetByName(comparisonSheetName);
  
  if (!comparisonSheet) {
    Logger.log("比較するタブが見つかりません。");
    return;
  }

  var lastRowActive = activeSheet.getLastRow();
  var lastRowComparison = comparisonSheet.getLastRow();
  
  // アクティブなタブと比較タブの会社名の列を取得
  var activeCompanyNames = activeSheet.getRange(3, 1, lastRowActive - 2, 1).getValues().flat();
  var comparisonCompanyNames = comparisonSheet.getRange(3, 1, lastRowComparison - 2, 1).getValues().flat();

  for (var i = 0; i < activeCompanyNames.length; i++) {
    var activeCompanyName = activeCompanyNames[i];
    var comparisonIndex = comparisonCompanyNames.indexOf(activeCompanyName);

    if (comparisonIndex === -1) {
      // 比較タブに存在しない会社名の行を太字にする
      activeSheet.getRange(i + 3, 1, 1, activeSheet.getLastColumn()).setFontWeight("bold");
    }
  }
}







 

 

2024-07-11 、2024-07-15本のメモ

 

 

??????

2024-07-19追加メモ

100個のサイコロ中、1個が絶対6が出るいかさまサイコロ。
1つ選んで6が出た。

6が出たんだけど、それが「いかさまサイコロ」であったときの確率は、

「いかさまサイコロで6が出る確率」*「いかさまサイコロを選ぶ確率」/ 「全体の6が出る確率」

「全体の6が出る確率」=「いかさまサイコロ」で6が出る確率*「いかさまサイコロ」を選ぶ確率  + 「正常サイコロ」で6が出る確率 * 「正常サイコロ」を選ぶ確率

2024-06-24 データをスプレッドシートに張り付け後。

手動で、

流動資産-負債 NC比率

を計算。

すべて選択。

データ > 範囲を並べ替え > 範囲の並び替え詳細オプション >

データにヘッダー行が・・・をチェック > 並び替え条件(NC比率) >

降順チェック > 並び替え

例えば0.8とかまで残して削除。

次に、PERの昇順で並び替え。

とか。

 

2024-06-21 とりあえず動画を見た時のメモ

 

割安小型成長株。

大型株はTOPIXを上回れないのでは?

PER 重視

Kabutan、トヨタ

決算業績推移、修正一株益

つまり、265円が基準、けど、PER11.7倍

けど株価は3102円だから、265*11.7倍になっている。

ネットキャッシュ比率。

=ネットキャッシュ(現金みたいなもの)/ 時価総額

要は本当に割安か?PERだけでは本当か分からない。

要は本当に現金持っているのか?

スクリーニング。

・PER 10b倍以下

・PBR(固定資産入っちゃう) 1倍以下

・(流動資産 > 負債)=ネットキャッシュ

・(ネットキャッシュ > 時価総額)= NC比率 1以上 

・時価総額 500億円以下

 

つまり、

NC比率1は、ほぼ現金(100万円)が入った財布を、100万円で買える状態。

財布の価値はプラスになっている。

買った後は、”増配”、”自社株買い”=株価上昇する要因。を期待。

 

バフェットコードスクリーニング

これで検索した結果。

検索結果は127件あります。売上高の上位100件を表示します。

との事。

このデータをGsheetに張り付け。

手計算。

追加は、

流動資産-負債

NC比率 = ”流動資産-負債” / 時価総額

NC比率順にソートして使う。つまり1以上は超割安。

 

次に、株探、検索、ニュース、決算速報、一番上の決算

事例はプロパスト3236

決算単信PDF

中身。

流動資産:一年以内に現金化できる。

これが276億=バフェットコードにもいきなり出ている。

負債は、流動(すぐに返す)と固定を合わせた額がバフェットコードに出る。それ以上に現金みたいなものが多くある。

それなのに株価がそれより安い。っていう話のようだ。

最終的にここから。

配当金どうなる?自社株買いしそうか?

これを見ると、

配当金を増やしてきている。まだ利回りは1.96%だから、もっと増やしそう。

っていうか、隣の一株当たりの利益は45円あるのに、4円しか配当出していない。という話のようだ。

チャートは好み。