過去の 表計算ソフト(スプレッドシート) の思い出

表計算ソフト(スプレッドシート)といえば、マイクロソフトの EXCEL がほぼ一択だった時代がある。
2020年現在、他にも、Googleスプレッドシートや、Appleの Numbers、OpenOffice、LibreOffice等、いくつか選択肢がある。
スプレッドシートの機能は、ほぼ成熟しているので、どれを使っても、それほど機能に違いがあるわけではない。

ここからは思い出話しになる。
PCの黎明期には、かつて、いろいろな表計算ソフトが登場し、消えていった。
思い出してみると、なつかしい。

PCの歴史からすれば、

・ソード(SORD)の「ピップス(PIPS)」
・Appleの「ビジカルク(VisiCalc)」
・マイクロソフトの「マルチプラン(Multiplan)」

等が出てくるけれども、残念ながら私は使ったことがない。

私が使ったことがあるものを時系列に並べてみたいと思う。

■書院カルク

1988年、私が大学に入学した頃に使っていたワープロ専用機「SHARP 書院 WD-650」に付属のソフト。
私にとって、これが初めての 表計算ソフト だった。
それ以前は、PC-8801mkII の N88-BASICで、表計算のようなものを作ったことはあった。
プログラムを作らなくても、項目を入力するだけで合計額を都度計算し直してくれるのを見て感動した記憶がある。
あまり大きな表は作れなかったけど、基本的な関数は使えて、学習用として非常に役に立った。
いろんなものを入力して計算して遊んで、楽しんだ。

■Lotus 1-2-3

1991年頃、既に社会人になっていた姉が PC-9801NS を買って、そこにソフトを入れて使っていた。
姉が「一太郎 と Lotus 1-2-3 が要る」と言っていたので、「一太郎dash」は買ったけど、「Lotus 1-2-3」は 98,000円くらいしたので躊躇して 9,800円の「アシストカルク」を勧められたような記憶がある。
当時、秋葉原のソフマップで、疑似レンタル方式(買って次の日に9割で売り戻す)で借りてきて、コピーして使っていた記憶がある。
業務用で使うわけではなく、あくまでも体験してみるだけなので、勘弁してもらおう。

その後、私が社会人になってから、Lotus 1-2-3 はすぐに活用することができた。

■エポカルク(EPOCALC)

富士通の独自OS「APCS」で動作する表計算ソフト。
私が新入社員の時、最初に使ったPCは、富士通の FMR-50Λ(ラムダ)シリーズだった。
これは、MS-DOSが動作する FMR-50 の機能と、富士通の独自OS「APCS」が動作する F9450シリーズの機能が両方入っている、非常に高価なPCだった。

その会社では当時、MS-DOSが使える人は少なくて、ほとんど「APCS」モードで使っていたので、表計算ソフトといえば「EPOCALC」だった。
Lotus 1-2-3 を使ったことがある私にとっては、とても貧弱で使いづらいソフトだったが、これしか知らない人には十分すぎる機能だったと思う。
グラフ作成のような機能はなく、あまり大きな表は作成できなかったと思う。

「EPOCALC」で最も困ったことは、四則演算の優先度 が他のソフトと違うこと、だった。
四則演算は、かけ算 と 割り算 が優先されるはずなのに「EPOCALC」は違っていた。
たしか、左から出てくる順に計算されていたような気がする。

せっかく括弧を使って、足し算 や 引き算 を優先に計算させようとしても、左から順番に計算されているようで、どうしても計算が合わなかった。

だから、Lotus 1-2-3 であらかじめ作成した表を、EPOCALCに移植すると、そのままの計算式だと計算結果が違ってしまうのである。

これを回避するためなのか、「EPOCALC」ユーザーが作成した表は、表の欄外に、計算途中の中間値を入れるセルがいくつか設けていることが多かった。
気をつけないと、欄外に数字が、ゴミみたいに印刷される。

■Quattro Pro(ボーランド製)

1993年、私が始めて Windows PC を買った時に、選んだ表計算ソフト。価格は 98,000円(税抜)。
当時、マイクロソフトの Excel はバージョン4で、同じ価格で機能がかなり見劣りしていて、迷ったあげくに「Quattro Pro」を選んだ。
Excelは、バージョン5の時に、現在と同じような機能が完成したが、そのほとんどが、当時の「Quattro Pro」で既に実現していたものだった。
右クリックで表示されるメニューや、複数のタブをグループ化したり切り替えたりできる機能は、この頃に完成したものだった。
Quattro Proは、その後、ボーランド社とともにPCの表舞台から姿を消し、今ではその名を知る人も少ない。

■三四郎 (ジャストシステム製)

一太郎ユーザーは格安で買えたので、試しに買って、いじってみただけ。
後に、商標の問題からか「ジャスト三四六」という名に変わった。
このソフトの存在を知っている人は、もともと、あまりいないと思う。

 

 

青ザリガニ(フロリダハマー)が2匹、我が家にやってきた。

ザリガニが2匹、新たに家族の一員になった。

数日前、息子がザリガニを持ち帰ってきたのが始まりだった。
本当に飼うつもりだったようなので、水槽を用意したのだが、
水槽に移す前に、残念ながら、亡くなってしまっていた。

きちんと埋葬して、彼はとても悲しんだけど、
せっかく水槽を用意したので、
代わりのザリガニを迎えようということで意見が一致した。

ところが、ザリガニを売っている店は、なかなか見つからない。

ちょっと大きめの、海老名の「かねだい」というお店で、
店員さんに「ザリガニはありますか?」と訊いてみたら、

「どのザリガニですか?」と返ってきた。
ザリガニにもいろいろ種類があるらしい。

「何のザリガニがあるんですか?」と訊いたら、

「アメリカザリガニは今いないです。そこになければ・・・・、あっ、いますよ」
と言われて、珍しい名前がついているザリガニが、いくつか売っていた。

結局、「フロリダハマー。ペアで 3,980円」という青いザリガニを買った。

店員さんが「ブラシで磨いてあげれば、きれいになりますよ」と言ってくれたけど、
そこまでする趣味はない。そういうマニアがいるのかもしれない。

ザリガニは臭い! という先入観があったけど、
熱帯魚と同じような水槽環境にすれば、べつに臭くはないらしい。

用意した水槽は、「テトラ ラクラクお手入れ金魚セット S」で、
小型水槽(幅29.0×奥行き16.0×高さ25.1cm。約10L)で、
外掛けフィルター(テトラ オートワンタッチフィルター AT-mini)が付いていた。

これに、底面フィルター(水作 ボトムフィルター S)を加えて、
金魚用の砂利を追加で入れたので、環境は、まずまずだろうと思う。

我が家の水槽は、グッピー水槽、金魚水槽、そしてこの ザリガニ水槽 で計3個になった。

青ザリガニ(フロリダハマー)

「はいからさんが通る」という少女漫画を一気読みした

dアニメストア(月額のアニメ見放題サイト) で、
「はいからさんが通る 劇場版」というのを偶然見つけて、ふと思い出した。

これは、小学校の頃に、姉が見ていたTVアニメだったと思う。
私も途中から見ていたけれども、最終回で話が中途半端に終わっていて、
気持ちの悪い終わり方に納得しないまま、数十年も忘れていた・・・のだった。

2~3年前に、そのアニメが40年ぶりに劇場版になっていた
ということは知っていたけれども、私は少女漫画の趣味は一切ないので
特に気にならなかった。

でもなぜか、今回、気になったのは、
「はいからさんが通る」は、たしか大正時代のお話だったので、
ちょうど100年前の スペイン風邪の話があったような気がしたからだ。

さっそく調べてみると、当時のアニメ版は、モスクワオリンピックの放送枠の関係で、
急きょ打ち切りになったために、あんなに 納得のいかない終わり方になってしまった らしい。

今回、2年前の 劇場版(後半)で初めて、その省略されていたストーリー部分の
アニメ化が実現したとのことなので、今さらながら、気になり始めた。

無料なので、劇場版アニメの前半と後半をひととり見て、ようやく納得した。
テレビシリーズ42話もひととおり見て、
原作の漫画8巻も、Kindleで一気読みして、
南野陽子の実写版(1987年)も Amazon Prime Videoで見た。

結果、スペイン風邪の話は、原作の漫画にも 劇場版にも出てこなくて、
TV版アニメの第37話だけに登場する、おまけの部分だった。

スペイン風邪のおかげで、出席できない女学生が多すぎたという事情で、
今年だけ特別に、出席日数が足りない生徒も卒業が認められることになり、
ヒロインの紅緒はすでに中退してたのに、親友のはからいで、
みんなで卒業式に出席することができた、というエピソードである。

それにしても、現在(2020年)は、
月額の動画見放題サービス や Kindleの電子書籍 のおかげで、
思いついたときに、一機に、まるごと観たり読んだりできるのが、嬉しい。

この「はいからさんが通る」という漫画は、あれほどのストーリーが
実質たったの7巻半、つまり、1日かからずに読み切ってしまえる分量で
ストーリーが完結しているのが驚きだった。

私は、アニメファンでもなんでもないけれども、
子供の頃に気になって忘れていたことの一つが解決したので、嬉しかった。

これも、コロナ禍騒動があったおかげで実現できたこと、なのだろうと思う。

解決! Google Chart でローソク足を表示すると、途中でズレと切れる!事象

WEB画面上に、ローソク足と移動平均線の複合チャートを表示するために、
「Google Chart」を使ってみたら、実に簡単に、実現することができたが、
うまく動作しなかった。

ローソク足が10本、つまりグラフデータが10行以上になると、
途中で ズレ と 切れ、さらには、データの 抜け が発生して、
表示が崩れてしまうのである。

その後、「Google Chart」以外にも、良さそうなツールはあったけど、
相場師朗先生が使用している移動平均線の色パターン
(相場師朗 「相場の赤本」(宝島社)の p93、p139 に記載)
で表示させようとすると、なかなか難しかった。

そこで、1つずつ試行錯誤しながら調べてみたところ、
ローソク足10本以上で、正常に表示させることに成功した。

例)日経平均株価 2020年4月28日の日足チャート 50本

もしかすると、オプションのパラメータをどこかいじれば
解決するのかもしれないけれども、結局、

チャートの元データとなる、スプレッドシートの表データに、
一定間隔で(8行ずつ?)、ダミーデータ行を挿入することで、解決した。

 

それでも、ローソク足が80本くらいを過ぎると、
この8行ずつの法則ではうまくいかず、法則が変わってしまうので、
またどこかに、ダミーデータ行を、追加する必要があり、
まだまだ100点満点の解決策ではない。

今回のグラフは、ローソク足と移動平均線を組み合わせた
複合グラフ(ComboChart)なので、何かもっと、
特別な設定が必要なのかもしれないけれども、それはまだ分からない。

ローソク足80本以上の表示が必要になった時に、
あらためて、解決しようと思う。

相場師朗先生の 株トレード技術 と 有料「株塾」との出会について

私が、相場師朗先生のことを知ったのは、2019年3月9日開催の、
パンローリング社イベント「投資戦略フェア2019」のことだった。

「一生モノの株のトリセツ」という本が、
ブルベア大賞2018 の「大賞」だったので、
それが、興味をもつきっかけになったことになる。

さっそくその日の朝、行きの電車の中で、Kindleアプリで
「マンガでわかる1億円株塾」という本を買ってすぐに読んでみたら、
とても分かりやすくて、内容も おもしろかった。

「投資戦略フェア2019」フェアの会場の書籍販売コーナーでは
相場師朗先生の本は一冊も販売されていなかったので、
帰りに、秋葉原の書泉ブックタワーに寄って買うことにした。

「株は技術だ!」だけが売り切れていたので、
それ以外を全部まとめて購入して、読み始めていた。

最初、ひととおり読んてみた感想は、内容はおもしろいいけど、
私が既に「知っていること」以上のノウハウは見つからず、
古典的ノウハウ(ダウ理論、グランビルの法則 等)を
いかにもオリジナル手法のように見せかけただけの商売臭さ を感じた。

インターネット上でも悪い評判がたくさん出ていているし、
怪しいので、あまり深入りしない方がよいのかな? くらいに思っていた。

ところが、2019年6月になって、「株は技術だ!」を入手して読んでみると、
評価が一変することになった。

直前に読んだ「株チャート図鑑」に書かれているような、
目を引きそうな おもしろい名前の「技」のことは一切載っていなくて、
今の 有料「株塾」の勉強会でやっているような
深いレベルの解説が盛り込まれていたことに気づいた。

特に、「建玉の操作」について書かれているところが新鮮だった。

私は、デイトレードやシステムトレードを経験してきているので、
両建てを容認している考え方は、新鮮だった。

そんなことを思っていた頃、
毎日しつこく出てくる迷惑ポップアップ広告の中に、たまたま

「2019/07/17 相場師朗のうねり取り株セミナー 今なら 3,000円が無料」

と出てきたので、ちょうど都合がよかった日なので、参加してみることにした。

セミナーは3時間程度だったけど、その大半は、
高額教材(SHIRO トレーダー養成基礎講座」)と 有料「株塾」の宣伝
に時間が割かれていたことは当然だけど、それが かえって よかった。

有料「株塾」や、直前の大練習会? の抜粋映像ばかりを紹介してくれたおかげで、
相場師朗先生のノウハウが、表面的な「決め技」を教えるレベルではなく、
もっともっと本質的(原因的、核心的)な 低レイヤー部分に位置する
プロのノウハウであることが理解できたので、無限の奥深さを感じたのである。

さっそくその場で、高額教材(SHIRO トレーダー養成基礎講座」)を購入し、
有料「株塾」に自動入会することになって、
そこからが私にとっての再スタートとなった。

さて、
相場師朗先生の書籍に書かれているような「技」や「手法」は、
あまりにも基本中の基本の「相場のイロハ」部分のものなので、
古典的ノウハウ(ダウ理論、グランビルの法則 等)と重なる部分も多く、
「門外不出の秘密ノウハウ」という要素 は 皆無 である。

難解な理論として語られることの多い、相場(そうば)の法則を、
初心者でも理解しやすく、実践で活用できそうな
ユニークな名前(下半身、9の法則 他)をつけて、
共通ルール(色や記号) を設けて、再現性のある「技術」として、
分かりやすく解説してくれているところに特長があると思う。

だから、相場師朗先生のノウハウを そのままパクって転用して
高額教材にして販売しているような 二番煎じ、三番煎じの 偽物くん が
氾濫してしまうのは、ある意味、宿命なのかもしれない。

かといって、
「この手法は相場師朗先生のオリジナル手法だから、権利侵害だぞ!」
と、いちいち主張していくのも限界があると思う。

偽物くん たちは、どんどん現れて どんどん消えていき、
どんどん現れて どんどん消えるような客 ばかりを引き寄せ続ける。

「最も 基本セオリーに忠実で、長い年月 信念を貫き通せた手法」こそが
最終的に生き残る、という法則は、株式トレードの世界も同じだと思う。

真贋を見分ける目」を持つことこそが、
株トレードにしても、人生にしても、根本的に重要なことだと思う。

相場師朗先生のノウハウの 神髄 は、

「知っていることを できることにする」、つまり、
「トレード技術の知識を使って、利益を出し続けられるようにする」

ということに尽きると思う。

今日は、相場師朗先生の新刊
「37年連戦連勝 伝説の株職人が教える 株の技術大全」の発売日。

有料「株塾」で 教えてくれている 秘伝ノウハウ を
もったいぶらずに 書籍でオープンにしてくれているので、
「真贋を見分ける目」を育みつつ、そのご厚意を十分に享受したいと思う。

知識を修得するフェーズまでは、
「書籍」や「無料動画」等で制限なしに学ぶことができるけど、
有料「株塾」は、そこから先のフェーズ(「できることにする」)
があるので、知識だけで終わらせたくない人にとって、
とてもよい選択肢 が用意されているのは幸いだと思う。

相場師朗先生のノウハウと、有料「株塾」については、
公式サイトから、どうぞ。

相場師朗 公式サイト
https://aibashiro.jp/

 

Google Chart でローソク足を表示すると、途中でズレと切れる!

WEB画面上に、ローソク足と移動平均線の複合チャートを表示したい!

過去のチャートだったら、画面ハードコピーでもいいけれども、
それをリアルタイムに表示させようと思えば、それなりのツールが必要になる。

幸い、現在は、無料で高機能なチャートを表示できるツールが溢れていて、
サンプルのコードをコピーしながら作れば、何となく作れてしまうので、
それほど難しい技術は必要としない。

ということで、メジャーで、利用者も多く、ノウハウ情報も多く見つかる
「Google Chart」を使ってみたら、実に簡単に、実現することができた。

ところが、試しに、
日経平均株価の直近100日分のチャートを表示させてみたところ、
途中で ズレ と 切れ が発生して、表示が崩れてしまう。
オプションのパラメータをいろいろといじってみたが、分からない。

Google Chart でローソク足と移動平均線

しかも、その切れた部分に該当する日のデータは、
飛んでいたり順番も違っていたりして、やっぱりおかしい。

結局、ローソク足が9本以内だったら、この影響は受けず、
10本以上になると、何かがおかしくなる。

「Google Chart」以外にも、ローソク足が表示できるツールは
まだまだ他にもいくつかあるので、解決が難しければ、
他のツールを試してみようと思う。

この画面のチャートのソースコードは、次のとおり。
一体、何が、ダメなのだろう?


<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>
<title>Chart</title>
</head>
<body>

<!— ローソク足及び移動平均線グラフを配置 —>
<div id=’chart’></div>

<!— ここでGoogle Chartの読み込み —>
<script type=”text/javascript” src=”https://www.gstatic.com/charts/loader.js”>
</script>

<script type=”text/javascript”>

google.charts.load(‘current’, {‘packages’:[‘corechart’]});
google.charts.setOnLoadCallback(drawChart);

function drawChart(){
//チャートに描画するためのデータを入れる
var chartData = new google.visualization.DataTable();

//日付用のString型を一つ、四本値と5本MA用の数値型を計9個作成
chartData.addColumn(‘string’);
for(var x = 0;x < 9; x++){
chartData.addColumn(‘number’);
}
//行数
var length = 100;
//描画用のデータを一時的に入れる
var insertingData = new Array(length);

//[安値,終値,始値,高値,5MA,20MA,60MA,100MA,300MA]
insertingData[000] = [‘2019/08/19’,20502,20563,20590,20633,20499,21061,21176,21361,21770]
insertingData[001] = [‘2019/08/20’,20582,20677,20605,20684,20544,21024,21169,21352,21764]
insertingData[002] = [‘2019/08/21’,20482,20618,20489,20626,20536,20974,21159,21342,21758]
insertingData[003] = [‘2019/08/22’,20584,20628,20706,20731,20581,20920,21149,21339,21753]
insertingData[004] = [‘2019/08/23’,20579,20710,20579,20719,20639,20868,21144,21331,21748]
insertingData[005] = [‘2019/08/26’,20173,20261,20325,20329,20579,20798,21133,21320,21742]
insertingData[006] = [‘2019/08/27’,20439,20456,20467,20529,20535,20740,21130,21314,21735]
insertingData[007] = [‘2019/08/28’,20433,20479,20474,20511,20507,20679,21131,21307,21728]
insertingData[008] = [‘2019/08/29’,20361,20460,20500,20520,20473,20626,21132,21297,21721]
insertingData[009] = [‘2019/08/30’,20633,20704,20641,20748,20472,20584,21131,21289,21714]
insertingData[010] = [‘2019/09/02’,20614,20620,20625,20667,20544,20560,21128,21278,21707]
insertingData[011] = [‘2019/09/03’,20578,20625,20581,20662,20578,20556,21124,21267,21700]
insertingData[012] = [‘2019/09/04’,20554,20649,20578,20694,20612,20559,21116,21255,21692]
insertingData[013] = [‘2019/09/05’,20787,21085,20800,21164,20737,20587,21114,21248,21686]
insertingData[014] = [‘2019/09/06’,21145,21199,21201,21241,20836,20618,21115,21242,21681]
insertingData[015] = [‘2019/09/09’,21182,21318,21214,21333,20975,20649,21120,21239,21676]
insertingData[016] = [‘2019/09/10’,21350,21392,21363,21438,21129,20696,21125,21236,21672]
insertingData[017] = [‘2019/09/11’,21437,21597,21466,21619,21318,20743,21133,21233,21669]
insertingData[018] = [‘2019/09/12’,21743,21759,21761,21825,21453,20811,21146,21229,21667]
insertingData[019] = [‘2019/09/13’,21820,21988,21907,22019,21611,20889,21157,21226,21664]
insertingData[020] = [‘2019/09/17’,21878,22001,21947,22041,21747,20961,21166,21224,21663]
insertingData[021] = [‘2019/09/18’,21942,21960,22014,22027,21861,21025,21177,21222,21661]
insertingData[022] = [‘2019/09/19’,22003,22044,22064,22255,21950,21097,21190,21221,21660]
insertingData[023] = [‘2019/09/20’,22047,22079,22130,22204,22014,21169,21205,21219,21660]
insertingData[024] = [‘2019/09/24’,22077,22098,22095,22168,22036,21239,21222,21218,21659]
insertingData[025] = [‘2019/09/25’,21906,22020,21961,22036,22040,21327,21233,21216,21658]
insertingData[026] = [‘2019/09/26’,21986,22048,22160,22184,22058,21406,21246,21213,21659]
insertingData[027] = [‘2019/09/27’,21733,21878,21934,21955,22025,21476,21248,21210,21659]
insertingData[028] = [‘2019/09/30’,21666,21755,21793,21811,21960,21541,21248,21208,21660]
insertingData[029] = [‘2019/10/01’,21811,21885,21831,21938,21917,21600,21252,21211,21661]
insertingData[030] = [‘2019/10/02’,21725,21778,21744,21795,21869,21658,21254,21214,21661]
insertingData[031] = [‘2019/10/03’,21277,21341,21422,21437,21727,21694,21247,21214,21658]
insertingData[032] = [‘2019/10/04’,21276,21410,21316,21410,21634,21732,21245,21217,21656]
insertingData[033] = [‘2019/10/07’,21328,21375,21445,21475,21558,21746,21242,21220,21654]
insertingData[034] = [‘2019/10/08’,21483,21587,21494,21629,21498,21766,21243,21224,21652]
insertingData[035] = [‘2019/10/09’,21359,21456,21359,21467,21434,21773,21239,21228,21648]
insertingData[036] = [‘2019/10/10’,21308,21551,21456,21601,21476,21780,21237,21231,21644]
insertingData[037] = [‘2019/10/11’,21658,21798,21749,21820,21553,21791,21242,21236,21641]
insertingData[038] = [‘2019/10/15’,22049,22207,22063,22219,21720,21813,21254,21245,21639]
insertingData[039] = [‘2019/10/16’,22434,22472,22479,22615,21897,21837,21278,21257,21638]
insertingData[040] = [‘2019/10/17’,22424,22451,22451,22522,22096,21860,21294,21270,21638]
insertingData[041] = [‘2019/10/18’,22466,22492,22528,22649,22284,21886,21312,21284,21638]
insertingData[042] = [‘2019/10/21’,22515,22548,22541,22581,22434,21911,21327,21297,21638]
insertingData[043] = [‘2019/10/23’,22457,22625,22619,22648,22518,21939,21343,21311,21638]
insertingData[044] = [‘2019/10/24’,22704,22750,22725,22780,22573,21971,21359,21328,21638]
insertingData[045] = [‘2019/10/25’,22715,22799,22753,22819,22643,22010,21378,21347,21639]
insertingData[046] = [‘2019/10/28’,22830,22867,22854,22896,22718,22051,21399,21370,21640]
insertingData[047] = [‘2019/10/29’,22935,22974,22950,23008,22803,22106,21420,21395,21641]
insertingData[048] = [‘2019/10/30’,22827,22843,22953,22961,22847,22160,21442,21420,21642]
insertingData[049] = [‘2019/10/31’,22875,22927,22910,22988,22882,22213,21465,21441,21643]
insertingData[050] = [‘2019/11/01’,22705,22850,22730,22852,22892,22266,21495,21462,21645]
insertingData[051] = [‘2019/11/05’,23090,23251,23118,23328,22969,22362,21537,21486,21647]
insertingData[052] = [‘2019/11/06’,23246,23303,23343,23352,23035,22456,21582,21507,21649]
insertingData[053] = [‘2019/11/07’,23253,23330,23283,23336,23132,22554,21629,21529,21651]
insertingData[054] = [‘2019/11/08’,23313,23391,23550,23591,23225,22644,21676,21551,21655]
insertingData[055] = [‘2019/11/11’,23323,23331,23422,23471,23321,22738,21720,21574,21660]
insertingData[056] = [‘2019/11/12’,23312,23520,23336,23545,23375,22836,21771,21598,21664]
insertingData[057] = [‘2019/11/13’,23270,23319,23439,23452,23378,22912,21815,21620,21667]
insertingData[058] = [‘2019/11/14’,23062,23141,23325,23360,23340,22959,21861,21642,21671]
insertingData[059] = [‘2019/11/15’,23121,23303,23160,23340,23323,23001,21909,21662,21674]
insertingData[060] = [‘2019/11/18’,23271,23416,23304,23420,23340,23049,21957,21681,21678]
insertingData[061] = [‘2019/11/19’,23244,23292,23366,23389,23294,23089,22000,21701,21682]
insertingData[062] = [‘2019/11/20’,23086,23148,23176,23303,23260,23119,22042,21720,21684]
insertingData[063] = [‘2019/11/21’,22726,23038,23071,23108,23239,23140,22083,21738,21686]
insertingData[064] = [‘2019/11/22’,23030,23112,23030,23219,23201,23158,22123,21759,21688]
insertingData[065] = [‘2019/11/25’,23255,23292,23292,23347,23176,23182,22173,21778,21690]
insertingData[066] = [‘2019/11/26’,23350,23373,23451,23608,23193,23208,22222,21799,21692]
insertingData[067] = [‘2019/11/27’,23418,23437,23452,23507,23250,23231,22271,21816,21693]
insertingData[068] = [‘2019/11/28’,23367,23409,23458,23482,23325,23259,22320,21833,21695]
insertingData[069] = [‘2019/11/29’,23273,23293,23497,23498,23361,23277,22363,21849,21697]
insertingData[070] = [‘2019/12/02’,23378,23529,23388,23562,23408,23311,22412,21868,21699]
insertingData[071] = [‘2019/12/03’,23186,23379,23231,23388,23409,23318,22458,21884,21702]
insertingData[072] = [‘2019/12/04’,23044,23135,23186,23203,23349,23309,22499,21900,21704]
insertingData[073] = [‘2019/12/05’,23259,23300,23292,23363,23327,23308,22536,21917,21706]
insertingData[074] = [‘2019/12/06’,23338,23354,23347,23412,23339,23306,22572,21936,21710]
insertingData[075] = [‘2019/12/09’,23360,23430,23544,23544,23320,23311,22607,21953,21713]
insertingData[076] = [‘2019/12/10’,23336,23410,23372,23449,23326,23306,22641,21971,21716]
insertingData[077] = [‘2019/12/11’,23333,23391,23421,23438,23377,23309,22671,21989,21718]
insertingData[078] = [‘2019/12/12’,23360,23424,23449,23468,23402,23323,22698,22009,21720]
insertingData[079] = [‘2019/12/13’,23775,24023,23810,24050,23536,23359,22732,22039,21724]
insertingData[080] = [‘2019/12/16’,23950,23952,23955,24036,23640,23386,22765,22063,21725]
insertingData[081] = [‘2019/12/17’,23996,24066,24091,24091,23771,23425,22800,22090,21727]
insertingData[082] = [‘2019/12/18’,23919,23934,24023,24046,23880,23464,22831,22113,21727]
insertingData[083] = [‘2019/12/19’,23835,23864,23911,23945,23968,23505,22861,22135,21727]
insertingData[084] = [‘2019/12/20’,23746,23816,23893,23908,23926,23541,22890,22155,21727]
insertingData[085] = [‘2019/12/23’,23810,23821,23921,23923,23900,23567,22920,22177,21726]
insertingData[086] = [‘2019/12/24’,23796,23830,23839,23853,23853,23590,22950,22199,21726]
insertingData[087] = [‘2019/12/25’,23782,23782,23813,23824,23823,23607,22981,22220,21725]
insertingData[088] = [‘2019/12/26’,23775,23924,23787,23931,23835,23633,23017,22244,21724]
insertingData[089] = [‘2019/12/27’,23837,23837,23953,23967,23839,23660,23050,22267,21723]
insertingData[090] = [‘2019/12/30’,23656,23656,23770,23782,23806,23666,23081,22292,21721]
insertingData[091] = [‘2020/01/06’,23148,23204,23319,23365,23681,23658,23112,22317,21719]
insertingData[092] = [‘2020/01/07’,23299,23575,23320,23577,23639,23680,23148,22347,21718]
insertingData[093] = [‘2020/01/08’,22951,23204,23217,23303,23495,23675,23179,22374,21717]
insertingData[094] = [‘2020/01/09’,23506,23739,23530,23767,23476,23694,23215,22406,21718]
insertingData[095] = [‘2020/01/10’,23761,23850,23813,23903,23514,23715,23255,22437,21722]
insertingData[096] = [‘2020/01/14’,23951,24025,23969,24059,23679,23746,23296,22473,21727]
insertingData[097] = [‘2020/01/15’,23875,23916,23923,23997,23747,23772,23331,22505,21732]
insertingData[098] = [‘2020/01/16’,23905,23933,23960,23975,23893,23798,23360,22541,21737]
insertingData[099] = [‘2020/01/17’,24013,24041,24103,24115,23953,23798,23386,22577,21741]

//チャート描画用の配列の中に、insertingDataの値を入れ込む
for (var i = length; i > 0; i–){
chartData.addRow(insertingData[i]);
}
//チャートの見た目に関する記述、詳細は公式ドキュメントをご覧になってください
var options = {
chartArea:{left:80,top:0,right:0,bottom:0},
legend: { position: ‘none’},
backgroundColor: ‘white’,
colors: [‘black’],
hAxis: {
format: ‘yyyy/MM/dd’,
direction: -1,
viewWindowMode: ‘maximized’,
},
bar: {
groupWidth: ‘90%’
},
width: 1920,
height: 1920,
lineWidth: 2,
//チャートのタイプとして、ローソク足を指定
seriesType: “candlesticks”,
//ローソク足だでなく、線グラフも表示することを記述
series: {
1:{
type: “line”,
color: ‘red’,
},
2:{
type: “line”,
color: ‘green’,
},
3:{
type: “line”,
color: ‘blue’,
},
4:{
type: “line”,
color: ‘purple’,
},
5:{
type: “line”,
color: ‘orange’,
},
}
};
//描画の処理
var chart = new google.visualization.ComboChart(document.getElementById(‘chart’));
chart.draw(chartData, options);
}

</script>

</body>
</html>

ペイント練習用の「チャート隠し」ツール ver3

先日(昨年)作った「ペイント練習用のチャート隠しツール ver2」

ペイント練習用の「チャート隠し」ツール ver2

を使って、自分のペイント練習で使おうとしたら、
いくつか不便を感じたので、少し改良してみることにした。

・対象ファイル名を 選択できるようにしたい!
・マウス(あるいはタップ)だけで、一時停止と再開をしたい!
(タブレットPCだと、カーソルキーが使えないので。)

こういうことも、「enchant.js」や「phina.js」を使うと、簡単に実現可能である。

そして、暫定的にできあがったのが、このページ。

< ペイント練習用の、チャート隠しツール ver3 >
https://shunichi.hosono.com/chart-mask3.html

 

残念ながら、ブラウザソフト側のセキュリティの関係で、
選択したファイルの「パス名」を取得することができない。

したがって、対象となるペイント練習画像ファイルがすべて、
このツールと同じフォルダ内に存在していることが利用条件となる。

設置方法は、ver2 と同じで、
次の3ファイルを、右クリックで ダウンロード選択して、
ペイント練習画像を溜めているのと同じフォルダへ入れておき、
chart-mask3.html をブラウザで起動すればよい。

・ダウンロードするページ 3種類

< ペイント練習用の、チャート隠しツール ver3 >
https://shunichi.hosono.com/chart-mask3.html

< enchant.js >
https://shunichi.hosono.com/enchant.js

< ブランク画像 >
https://shunichi.hosono.com/mask.png

 

多少の html または javascript の知識がある人は、
テキストエディタでカスタマイズすることも可能だし、
「enchant.js」や、他の開発技術を持っている人は、
これをきっかけ&ヒントに、もっともっと高機能な
練習支援ツールを開発してくれることをぜひ期待したい。

< chart-mask3.htmlのソース > ※未完成の箇所あり

<!DOCTYPE html>
<html>
<head>
<meta charset="Shift_JIS">
<title>Chart mask ver3</title>
<style>
body { margin: 0; }
</style>
<script src="enchant.js"></script>
</head>
<body>

<input type="file" id="targetfile" size="50" accept="image/*" onchange="chartmask()"><br>
<a href="#" onclick="chartmask()">start</a>

<script>
function chartmask(){

// ファイル名を取得
var imgFileName0 = document.getElementById("targetfile").value;
var array = imgFileName0.split(/\\|\\/);
var imgFileName = array[ array.length - 1];

// ライブラリの初期化
enchant();

// 変数の定義
var startX = 150; // スライド表示を開始する左位置
var maskspeed = 1; // スライド表示する速度
var maskadd = maskspeed; //
var isTouch = true; // タッチフラグ(タッチ中のみ true にする)
var isLeft = false; // タッチフラグ(右フリックで true にする)
var isRight = false; // タッチフラグ(左フリックで true にする)
var currentX = null; // 現在のX座標
var currentY = null; // 現在のY座標
var touchX = null; // タッチX座標
var touchY = null; // タッチY座標

// 1920×1080ピクセルサイズの画面(Canvas)を作成
var game = new Game(1920, 1080);

// フレームレートの設定。30fpsに設定
game.fps = 30;

// 画像データをあらかじめ読み込ませる
game.preload( imgFileName, 'mask.png' );

// データの読み込みが完了したら処理
game.onload = function(){

// チャート画像 を設定
var chart = new Sprite(1920, 1080);
// chart.image = game.assets['screenshot.png'];
chart.image = game.assets[ imgFileName ];
game.rootScene.addChild(chart);

// マスク画像 を設定
var mask = new Sprite(1920, 1080);
mask.image = game.assets["mask.png"];
game.rootScene.addChild(mask);
mask.x = startX;

// 説明文を表示します。
var Label1 = new Label("");
Label1.text = "マウスのクリック:一時停止と再開<br>" +
"左キー:少し戻る<br>" +
"右キー:少し加速<br>" +
"上キー:最初に戻る<br>" +
"下キー:一時停止";
Label1.font = "16px monospace";
Label1.color = "red";
Label1.x = startX; // X座標
Label1.y = 100; // Y座標
game.rootScene.addChild(Label1);

// シーンに「毎フレーム実行イベント」を追加します。
game.rootScene.addEventListener(Event.ENTER_FRAME, function(e) {
if( isTouch == true ) {
mask.x += maskadd;
}
});

// タッチイベントを登録
this.rootScene.addEventListener("touchstart", function(e) {
// タッチ開始
if( isTouch == true ) {
isTouch = false;
} else if( isTouch == false ) {
isTouch = true;
}

// 現在のマウス位置の取得
currentX = e.localX;
currentY = e.localY;

});

// フリック操作を監視
this.rootScene.addEventListener("touchmove", function(e) {
// 移動後のマウス位置の取得
touchX = e.localX;
touchY = e.localY;

if( touchX < currentX ) {
// 左フリック
isLeft = true;
} else if( touchX > currentX ) {
// 右フリック
isRight = true;
}

});

// フリック操作の判定
this.addEventListener("touchend", function(e) {
// タッチ位置をセット

if( isLeft == true ) {
// 左フリック
this.x -= (maskspeed + 1);
} else if( isRight == true ) {
// 右フリック
this.x += maskspeed;
}

});

// キー操作時に処理
mask.addEventListener('enterframe', function(){
if (game.input.left) this.x -= (maskspeed + 1);
if (game.input.right) this.x += maskspeed;
if (game.input.up) this.x = startX;
if (game.input.down) isTouch = false;
});

}

// 処理開始
game.start();

}
</script>

</body>
</html>

ペイント練習用の「チャート隠し」ツール ver2

先月作った「ペイント練習用のチャート隠しツール」と、
https://shunichi.hosono.com/?p=369

と、「チャートの自動めくり動画」を公開したところ、
https://shunichi.hosono.com/?p=443

数名の方から、ご意見・ご要望をいただいた。

・Chromeブラウザで利用できるようにしてほしい!
・いちいちキーを押さなくても自動でめくってほしい!
・自動再生を途中で一時停止したい!
・自動再生を、少し戻したい!

等々。

それほど難しい要望ではないけれども、
Windowsの「メモ帳」でカスタマイズできるくらいの
簡単なツールで実現しようとすると、それなりに難しい。

自動再生されているものを、一時停止したり戻したりするには、
アニメーションの停止やフレーム操作をすればいいかな? と思って
animation-play-state等、いくつかの方法を調べて試してみたが、
実際には、動かない。(transition で動かしたアニメは対象外?)

そこで思いついたのは、

ゲームを作るツールを使えば、てっとり早く実現するのでは?

ということだった。

実際、その通りで、以前に学んだ「enchant.js」を使えば
今回のようなものは、簡単に作ることができた。

「phina.js」等のような、さらに高速・高機能な
同種のツールが登場してきているようだけど、
「enchant.js」の書籍がたまたま手元にあって、
思い出したらすぐに使えるようになったので、
とりあえず、これを使うことにした。

ということで、暫定的にできあがったのが、このページ。

< ペイント練習用の、チャート隠しツール ver2 >
https://shunichi.hosono.com/chart-mask2.html

今度は、Chromeブラウザでも使えて、
自動再生 も 一時停止 も 少し戻り も可能である。

操作方法は、次のとおり。

白い部分をクリック:再生開始。
左キー:少し戻る
右キー:少し早く
上キー:最初に戻る
下キー:一時停止

このツールは、「メモ帳」で編集可能な 普通の html ファイルなので、
ソースをコピーするか、右クリックでファイルに保存すれば
カスタマイズして、使用可能である。

次の3ファイルをダウンロードして、
同じフォルダへ保存しておく必要がある。

・ダウンロードするページ 3種類

< ペイント練習用の、チャート隠しツール ver2 >
https://shunichi.hosono.com/chart-mask2.html

< enchant.js >
https://shunichi.hosono.com/enchant.js

< ブランク画像 >
https://shunichi.hosono.com/mask.png

対象の 画像ファイル(ペイント対象のチャート画面)は、
「screenshot.png」が初期値だが、
変更する場合は、「メモ帳」等で編集可能。

当然のことながら、カスタマイズするには、
多少の html または javascript の知識が必要となる。

< chart-mask2.htmlのソース >

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Chart mask ver2</title>
<style>
body { margin: 0; }
</style>
<script src="enchant.js"></script>
</head>
<body>

<script>
// ライブラリの初期化
enchant();
window.onload = function(){

// 変数の定義
var startx = 150
var maskadd = 2;

// 1920×1080ピクセルサイズの画面(Canvas)を作成
var game = new Game(1920, 1080);

// フレームレートの設定。
game.fps = 16;

// 画像データをあらかじめ読み込ませる
game.preload('screenshot.png',
'mask.png' );

// データの読み込みが完了したら処理
game.onload = function(){

// チャート画像 を設定
var chart = new Sprite(1920, 1080);
chart.image = game.assets["screenshot.png"];
game.rootScene.addChild(chart);

// マスク画像 を設定
var mask = new Sprite(1920, 1080);
mask.image = game.assets["mask.png"];
game.rootScene.addChild(mask);
mask.x = startx;

// キー操作時に呼ばれる
mask.addEventListener('enterframe', function(){
if (game.input.left) this.x -= (maskadd + 1);
if (game.input.right) this.x += maskadd;
if (game.input.up) this.x = startx;
if (game.input.down) this.x -= maskadd;
});

// タッチ開始時に呼ばれる
mask.addEventListener(Event.TOUCH_START, function(){

// シーンに「毎フレーム実行イベント」を追加します。
game.rootScene.addEventListener(Event.ENTER_FRAME, function() {
mask.x += maskadd;
});

});
}

// 処理開始
game.start();
}
</script>

</body>
</html>

ペイント練習用のハードコピー画像を、左から徐々に表示するツール

相場師朗先生の「株塾」で学んだ、
チャートギャラリーの画面ハードコピーに
コメントを書き込んでいく練習を行う際に、

同じ画面を、「動くチャート」で見てみると、
全く違った白熱感で、流れを見る ことができる。

移動平均線が横這ったり、クロスしたり、集中した後に、
ローソク足のトレンドがどのように変化するのか? は、
動きを見ながら練習すると、新たな発見がある。

これは、例えば、
白熱した会議が終わった後の ホワイトボードを見た時と同じで、
会議に参加して、それが書かれた経過を見ていたのと、
会議に参加せずに、書かれた結果だけを見たのでは、
伝わる質・量に違いがあるのと、同じことだと思う。

移動平均線が一斉に上昇して、PPP(パンパカパン)になる様子は、
動くチャートで見ると、その迫力が、より伝わってくる。
勢いのある PPP(パンパカパン)で空売りを入れるのは恐い!
というのが、実感として体験しやすいと思う。

で、その「動くチャート」の実現法だけど、
チャートギャラリーを自動でめくる方法もいいけれども、
今まさにペイント練習を行おうとしている、
その画像を、直接動かした方が、臨場感がある。

右端が見えない状態で右から左へスライドさせる、
という方法もあるけど、今回のターゲットはあくまでも
ペイント練習の 予習 と 復習」なので、
それと同じように、左から右へ徐々に見えていくのがよいと思う。

準備作業

  • PCのデスクトップ画面に「ペイント練習」というフォルダを作成する

  • ツール(paint-slideview.html)をダウンロードし、「ペイント練習」フォルダへ保存する。

paint-slideview.html
>> 右クリックで「ファイル名を指定して保存」を選択

都度の作業

  • ペイント対象のハードコピー画像を「screenshot.png」という名前で「ペイント練習」フォルダへ保存する。
  • paint-slideview.html をダブルクリックして、起動。

  

カスタマイズ方法( htmlの知識が、多少必要です )

  • paint-slideview.html を、「メモ帳」等で開き、表示スピードとファイル名を変更できます。

ペイント練習用の「チャート隠し」ツール (カーソルキー版)、もどうぞ。
https://shunichi.hosono.com/?p=369

日経平均株価のチャートを1秒ずつ自動的にめくっていく動画を作成

日経平均株価のチャートを1秒ずつ自動的にめくりながら、
目で確認できる動画を作ってみた。

既製品でも、このような機能を持つチャートソフトはあるけれど、
私の場合、現在 学んでいる 相場師朗先生の株塾 で使用している
相場(あいば)式の移動平均線 を使って実現してみたかったので、
自分で作ってみることにした。

「チャートギャラリー」ソフトの画面ハードコピー画像を
1つのフォルダに 時系列に名付けて、それを
Windows標準の「フォト」で動画を作成するだけだ。

エクスプローラから、ファイルを一括選択した状態で
右クリックして、「新しいビデオの作成」を選択すると、
Windows標準の「フォト」のビデオ作成画面が起動する。

こんな動画を何に使うのかというと、
トレード練習のトレーニング用 である。

ビデオは、1秒ごとにローソク足1本ずつめくっていくので、
そのまま眺めるか、あるいは早い速度で再生して眺めれば、

ローソク足 と 移動平均線(aiba式)の動き を目に焼き付ける

というトレーニングができる。

先の展開を予測しながら真剣に眺めるトレーニングを
何十回も繰り返して見れば、値動きのカンを養うのに役立つと思う。
月足だと、約22年分を約4分半、
週足だと、約30年分を約26分
で、見ることができるので、通勤電車で立っていても、気軽に見ることができる。

動画を見ながら、頭の中で「ペイント練習」や「チャートの感動リーディング」を行う。

そして、慣れてきたら、日足を使って、
再生速度を遅くしてみて、1本ずつ、建玉を記入していけば、
瞬発力を養うのに役立つトレーニングになると思う。

次の1手のトレード判断(エントリー、追加、手仕舞い)を
たった1秒で判断を下す特訓は、デイトレードでは必要になる。

 

日経平均株価(月足)チャートの自動再生 1997年1月~2019年11月

日経平均株価(週足)チャートの自動再生 1990年5月11日~2019年11月29日

日経平均株価(日足)チャートの自動再生 1988年9月20日~1999年12月30日

日経平均株価(日足)チャートの自動再生 2000年1月4日~2009年12月30日

日経平均株価(日足)チャートの自動再生 2010年1月4日~2019年12月6日

チャートギャラリーで、1日1画面ずつのハードコピー画像を、自動で一括保存する方法

パンローリング社の「チャートギャラリー」は、
過去の場面に戻って、先の展開(右側)が見えない状態で、
1日ずつめくりながら、トレード練習を行うことができる。

でも、そこで、画面に書き込みを行うことができたら最高だ。
先生のコメントと、自分のコメントを切り替えて、反省に役立てたり、
別のトレーディング日誌 や ブログへ貼り付けて二次加工したり、
いろいろとやりたいことがでてくる。

別のチャートソフトを使うか、作るのもいいけれども、
トレード練習は、自分が実際に本番で使うチャートを使いたいので、
やっぱり「チャートギャラリー」で、できた方が理想だ。

それならば、全部、画像ファイルに吐き出してしまえば、すべて解決する。
日足で、過去30年分だと 7,000~8,000日分になる。

これをいちいち、手作業で、1日ずつめくりながら
ハードコピーを取らなければならないと想像してしまう人には、
「それは無理だぁ」という考えになるかもしれない。
1枚あたり3秒かかるとしても、21,000秒~24,000秒、つまり6~7時間かかる。
これを根性でやり遂げた人がいたら、もちろん、称賛に値する 。

でも私の場合は、「ユースウェア」という技術があるので、
チャートギャラリーを1日ずつめくって7,000~8,000枚の画像を保存するのは、
「そんなの簡単だ」と、すぐに考えることができる。
私は根性はないので、手作業でやれと命令されたら「無理でぇ~す」になるけど、
自分なりのやり方でやってよければ、実現できる方法を探して、さっさと実現する。

そこで本題だけど、
チャートギャラリーを1日ずつめくって、1枚ずつハードコピー画像を保存するには、
「自動化」するソフト(ツール)を使えばよい。
今、はやりの言葉「RPA (obotic Process Automation)」も、ほぼ同じだ。

手作業でいちいち手間をかけて行っている作業は、
それを自動化することができれば、
その作業にかける時間を、
ほかのもっと重要なことに充てることができる。

たとえば、チャートギャラリーのハードコピー画面を、
大量に1枚ずつ保存しているのだったら、それを
トレード練習の時間に充てることができれば、その方がいい。

私はそんな思いで、今朝、とりあえず、
日経225先物 の 1990年から2017年までの画像を出力してみた。

 

使った道具は、uwsc という自動化ツールで、
次のようなスクリプトファイルを用意する。

// チャートギャラリーのウィンドウを選択
GETID("Chart Gallery")

// 真ん中付近で左クリック
BTN(LEFT,DOWN,533,23,0)

// [HOME] ボタンをクリック
KBD(VK_HOME , CLICK)

// 指定回数分繰り返し(数字は要調整)
FOR I = 1 TO 8000

// チャートギャラリーのウィンドウを選択
GETID("Chart Gallery")

// 右カーソルキーを押下
KBD(VK_RIGHT , CLICK)

// 0.5秒待つ
SLEEP(0.5)

// [Windowsキー]を押しながら[PrintScreen]キーを押下
KBD(VK_START , DOWN)
KBD(VK_SNAPSHOT , CLICK)
KBD(VK_START , UP)

// 0.5秒待つ
SLEEP(0.5)

NEXT

チャートギャラリーの画面を開いた状態で、これを実行すれば、
「右カーソルキーで1日めくって、ハードコピーを出力する」
という作業を、8,000回数分、繰り替えし自動実行してくれる。

すると、ピクチャ - スクリーンショット というフォルダに、
大量の画像が溜まってくるので、

これを一括で名前変更(rename)をするバッチファイルを作成して実行すれば、できあがり。

画像が溜まった後の、バッチファイルでの手順は、次のとおり。

 

(1)まず、チャートギャラリーで、チャートの数値データを、ファイル名をつけて(例 nik225f_D.txt)、テキスト出力しておく。
チャート画面で、 「表示」メニュー から 「表形式」を選択して、数値データの表示画面へ切り替える。

チャートギャラリーでデータ表示

チャートギャラリーでテキスト出力

 

(2)同じフォルダ内に、ファイル一覧をテキスト出力するためのバッチファイル「dir.bat」を作成し、実行する。

ファイル一覧を出力するためのバッチファイル

(3)自動出力された「ren.bat」を開き、一括リネーム処理を行うためのバッチファイルへと加工し、実行する。
縦方向のブロックコピー&貼り付け 等のテクニックも使うことになるので、
高機能なエディタソフト(秀丸エディタ 等)を使いこなしていないと、やや難易度が高いかもしれない。

一括リネーム用バッチファイル
加工前
一括リネーム用バッチファイル
加工後

 

以上のような操作は、大昔(MS-DOSの時代)からPCを使ってきた人が持っているスキルなので、新たに学ぶ機会は多くない。

最近の Windows PC でも、 昔のコマンドが発展しながら存続しているし、
PowerShell 等も使えるので、さらにいろいろな自動化ができるようになっているけど、
一部のシステム管理者を除いて、あまり利用する人はいない。

こういう、自動化の技があることを知っていると、ちょっと調べるだけで、
「やりたいこと」 が 「できること」 に変えることができるので、
自由度が高まって、時間をもっと有意義に使うことができるようになる。

「くりっく株365」の四本値をCSV形式で整形する方法

「くりっく株365」の四本値は、
無料でダウンロードすることは可能だけれども、
システムトレード用に、表形式にするには、
少しだけ加工する必要がある。

日経平均株価や現物株と違って、
「くりっく株365」はマイナーなので、
きれいな時系列の四本値データの入手は難しい。

そこで、EXCELを使ったデータ加工をしてみたので、
その方法を、紹介しておきたいと思う。
私は一応、「ユースウェア技師」という、幻の資格(?)
というか技能を持っているので、こういうのは得意である。

(1)価格データをCSV形式でダウンロードする

東京金融取引所の「くりっく株365:ヒストリカルデータベース」
https://www.tfx.co.jp/historical/cfd/
のページから、1年ずつ期間指定して、CSV形式でダウンロードする。

 

クリック株365のダウンドード画面

 

ファイル名を指定して、保存する。

クリック株365のCSVファイルの保存

以上の操作を、年数分、繰り返す。

 

(2)年単位にダウンロードしたファイルを、1つのCSVファイルにまとめる

ダウンロードしたファイルを、作業用ファイルにすべて移動させる。
この例では、 D:¥kabu365 というフォルダを作っている。

 

年単位に分かれたファイルを、1つの CSVファイルにまとめる。
メモ帳などのエディタを使って、1ファイルずつコピー&ペーストして作っても構わないけど、
面倒くさがり屋の人は、次のようなバッチファイルを作って、一発でやってしまう方が、楽になる。

 

合体されたファイル「cfd_result.csv」ファイルが出来上がる。

合体ファイル

(3)合体済みのCSVファイルをEXCELで開く

合体されたファイル「cfd_result.csv」をEXCELで開き、余分な箇所を削除する。
まず先に、主要な 四本値部分 を選択して、並び替えを行う。

合体済ファイルのEXCEL表示

 

次に、左の2列を削除する。

 

シートの一番下の方に、タイトル行他があるので、
タイトル行を1行だけ残して、それより下の行をすべて削除する。

 

タイトル行を選択して、切り取り、
先頭行に移動して、挿入する。

最後に、取引日で、並び替えを行う。

 

これで、クリック株365の四本値データが完成したので、
必要に応じてさらに加工し、CSV形式で保存すれば、できあがり。

 

ちなみに、この四本値を パンローリング社のチャートギャラリーで利用する場合は、
チャートギャラリー側であらかじめ、銘柄を新規登録(例えば 0365 「株365」)して、
指定のテキストファイルで取り込めばよい。

昨日分(2019/11/27)までのデータは、次のとおり。
これをチャートギャラリーで取り込めば、表示できると思う。

↓↓↓↓↓
株365のチャートギャラリー取込み用テキストデータ(kabu365_20101122-20191128.txt)

 

詳しい解説は、こちらへ。

https://www.hosono.org/2019/11/chartgallery-kabu365.html?m=1

日経平均株価の週足チャートと移動平均線 約17年間分(2003年~2019年)

日経平均株価の約17年間分(2003年~2019年)の動きを
週足チャートと移動平均線で俯瞰して見てみると、
現在(2019年11月)は、ちょうど、
上昇トレンド継続か?、それとも三番天井を打つか?
の転換点になっていることが分かる。

今までは、このような長期の俯瞰チャートを
ポイント・アンド・フィギュア または ローソク足だけ で
見ていたけれども、これに移動平均線を加えてみると、
今まで見えなかったものが、よく見えてくる。

前回高値(24,000円台)に到達して、上抜けたとしても、
その直後に すぐに下げてしまうようならば、
移動平均線の順番が入れ替わらないので、
失速してしまうリスクがある。

25,000円を上抜くほど、大きく上昇するか、あるいは、
24,000台で もみ合いながらも高値圏を維持できれば、
上昇時の「移動平均線パターン」になってくる。

上昇する時や、下落する時は、いつでも、
「移動平均線パターン」は、必ず 同じ経過を辿る。

だから、移動平均線は、
物理の諸法則と同じくらい、重要な意味を持つ。

ペイント練習用の「チャート隠し」ツール (カーソルキー版)

相場師朗先生の「株塾」で学んだ練習法の一つに、
チャート画面のハードコピー画像に、
売り買いのポイントや考察を書きこんで、
相場の流れをつかむ、という方法がある。

これを、野球やテニスなどの「素振り」練習のごとく、
毎日たくさん、習慣的にやることが推奨されている。

最初は、値動きの結果が見えている状態で、
つまり、カンニングしている状態で書き込んでいく。

ところがこのペイント練習は、
数をやっていくと、だんだんとマンネリ化して、
単純作業のように、手を抜いて行うようになりがちで、
これで脱落してしまう人も多い と想定される。

なので、ある程度分かってきたら、こんどは、
カンニングしなかった と仮定した想定で、
右の部分を一時的に隠して、本気で悩んで考えながら
こじつけて練習する、という練習を併用しながら、

だんだんとステップアップして実力をつけていくのが、
堅実なやりかただと思う。

ということで、
右の部分を一時的に隠して練習するのに、
私は、ちょっとしたツールを自作して使っている。

チャートギャラリーで建玉練習をする時のように、
キーボードの [右] カーソルキー で進めていきたい、
という こだわりがあるから、である。

ペイント練習用の「チャート隠し」ツール
ペイント練習用の「チャート隠し」ツール

以下のリンクをクリックすると、
ブラウザで1ページ開かれるので、
ペイント画面より前にこれを出して、
[右] カーソルキー でめくっていけばよい。

< ペイント練習用の、チャート隠しツール >
https://shunichi.hosono.com/chart-mask.html

このページは、普通の html ファイルなので、
ソースをコピーするか、ファイルに保存すれば
そのまま複製して、PCのハードディスクからでも起動できるし、
自分のPC環境に合わせて、内容を書き換えてもよい。

html の中に、以下の部分を貼り付ければ、動くと思う。
(Internet Explore か Edge で確認済み)

<script type="text/javascript">
<!--

window.focus();

Xsize = screen.width - 200
Ysize = screen.height

window.resizeTo( Xsize, Ysize ); // (左右 , 上下)
window.moveTo( 200, 0 ); // (左右 , 上下)

addEventListener("keydown", keydownfunc, false);

function keydownfunc( event ) {
var key_code = event.keyCode;

if( key_code === 37){ // 左に移動
window.moveBy( -5, 0); // (左右 , 上下)
window.resizeBy(+5, 0); // (左右 , 上下)
}
else if( key_code === 39){ // 右に移動
window.moveBy( 5, 0); // (左右 , 上下)
window.resizeBy(-5, 0); // (左右 , 上下)
}
}
// -->
</script>

チャートギャラリーの株価データを EXCELからピンポイントで参照する方法

パンローリング社の「チャートギャラリー」 というソフトは、
全銘柄の株価を過去30年分持っていて、そのデータを、
ActiveXコントロール で、VB や EXCEL等で利用することができる。

ところが、この機能については、
ソフトのヘルプ画面には記載されているが、
それ以外の情報があまりなく、
活用している人は多くないと思う。

パンローリング社のサイトで、
無料のサンプルプログラムが、
https://www.panrolling.com/etc/users/sakurai/
のサイトで公開されているけど、

株価を一括で読み出す方法は参考になるけれども、
ピンポイントで、たとえば

・「9101 日本郵船」の 「2019年7月17日」の「終値」を参照したい

というような場面で、どう使えばよいのか、分かりづらい。

メタトレーダー等、他のソフトとは違って、
「チャートギャラリー」は、プログラミングの専門家でなくても

EXCELから気軽に株価データをピンポイントで参照することができる

というのが特長であってほしい と思う。

先週、私がちょっと作ってみたので、
ノウハウを共有しておこうと思う。

「EXCELの関数」を作っておけば気軽に使える、

ので、独自関数として定義しておけばよい、ということになる。

次のような準備の後に、

・EXCELの「開発」タブの「Visual Basic」を選択

Visual Basic 設定

 

・マクロのセキュリティを押して、セキュリティセンターを表示

マクロのセキュリティ

 

・ActiveX の設定を確認

ActiveXの設定

 

・マクロの設定を確認

マクロの設定

 

・VBAの開発画面で、標準モジュールに追加して、プログラムを描き込む。

 

その後に、以下の関数を貼り付ければよい。
急いで作ったので、本格的に使うには、アレンジは必要かと思う。

関数の一覧

機能 関数名 引数 記述例
当日の始値を求める yori (銘柄コード, 取引日) =yori(1001, DATEVALUE(“2019/7/16”))
当日の高値を求める taka (銘柄コード, 取引日) =taka(1001, DATEVALUE(“2019/7/16”))
当日の安値を求める yasu (銘柄コード, 取引日) =yasu(1001, DATEVALUE(“2019/7/16”))
当日の終値を求める hike (銘柄コード, 取引日) =hike(1001, DATEVALUE(“2019/7/16”))
翌営業日の始値を求める yokuyori (銘柄コード, 取引日) =yokuyori(1001, DATEVALUE(“2019/7/16”))
翌営業日の終値を求める yokuhike (銘柄コード, 取引日) =yokuhike(1001, DATEVALUE(“2019/7/16”))
N営業日後を求める kdate (銘柄コード, 取引日, 加算日数N ) =kdate(1001, DATEVALUE(“2019/7/16”), 1)
銘柄名を求める kname (銘柄コード) =kname(1001)

 


'当日始値
Public Function yori(kcode As String, kdate As Date) As Long

    Dim Calendar As New ActiveMarket.Calendar
    Dim Prices As New ActiveMarket.Prices
    Dim DatePos As Long
    
    DatePos = Calendar.DatePosition(kdate, 1)
    
    Prices.AdjustExRights = True
    Prices.Read kcode
       
    '翌日が休場日ならば、
    If Prices.IsClosed(DatePos) Then
       DatePos = DatePos + 1
       
       '2日後が休場日ならば、
       If Prices.IsClosed(DatePos) Then
          DatePos = DatePos + 1
                
          '3日後が休場日ならば、
          If Prices.IsClosed(DatePos) Then
             DatePos = DatePos + 1
          
          End If
       End If
    End If
    
    yori = Prices.Open(DatePos)

End Function

'当日高値
Public Function taka(kcode As String, kdate As Date) As Long

    Dim Calendar As New ActiveMarket.Calendar
    Dim Prices As New ActiveMarket.Prices
    Dim DatePos As Long
    
    DatePos = Calendar.DatePosition(kdate, 1)
    
    Prices.AdjustExRights = True
    Prices.Read kcode
       
    '翌日が休場日ならば、
    If Prices.IsClosed(DatePos) Then
       DatePos = DatePos + 1
       
       '2日後が休場日ならば、
       If Prices.IsClosed(DatePos) Then
          DatePos = DatePos + 1
                
          '3日後が休場日ならば、
          If Prices.IsClosed(DatePos) Then
             DatePos = DatePos + 1
          
          End If
       End If
    End If
    
    taka = Prices.High(DatePos)

End Function

'当日安値
Public Function yasu(kcode As String, kdate As Date) As Long

    Dim Calendar As New ActiveMarket.Calendar
    Dim Prices As New ActiveMarket.Prices
    Dim DatePos As Long
    
    DatePos = Calendar.DatePosition(kdate, 1)
    
    Prices.AdjustExRights = True
    Prices.Read kcode
       
    '翌日が休場日ならば、
    If Prices.IsClosed(DatePos) Then
       DatePos = DatePos + 1
       
       '2日後が休場日ならば、
       If Prices.IsClosed(DatePos) Then
          DatePos = DatePos + 1
                
          '3日後が休場日ならば、
          If Prices.IsClosed(DatePos) Then
             DatePos = DatePos + 1
          
          End If
       End If
    End If
    
    yasu = Prices.Low(DatePos)

End Function

'当日終値
Public Function hike(kcode As String, kdate As Date) As Long

    Dim Calendar As New ActiveMarket.Calendar
    Dim Prices As New ActiveMarket.Prices
    Dim DatePos As Long
    
    DatePos = Calendar.DatePosition(kdate, 1)
    
    Prices.AdjustExRights = True
    Prices.Read kcode
       
    '翌日が休場日ならば、
    If Prices.IsClosed(DatePos) Then
       DatePos = DatePos + 1
       
       '2日後が休場日ならば、
       If Prices.IsClosed(DatePos) Then
          DatePos = DatePos + 1
                
          '3日後が休場日ならば、
          If Prices.IsClosed(DatePos) Then
             DatePos = DatePos + 1
          
          End If
       End If
    End If
    
    hike = Prices.Close(DatePos)

End Function

'翌営業日の始値
Public Function yokuyori(kcode As String, kdate As Date) As Long

    Dim Calendar As New ActiveMarket.Calendar
    Dim Prices As New ActiveMarket.Prices
    Dim DatePos As Long
    
    DatePos = Calendar.DatePosition(kdate, 1) + 1
    
    Prices.AdjustExRights = True
    Prices.Read kcode
       
    '翌日が休場日ならば、
    If Prices.IsClosed(DatePos) Then
       DatePos = DatePos + 1
       
       '2日後が休場日ならば、
       If Prices.IsClosed(DatePos) Then
          DatePos = DatePos + 1
                
          '3日後が休場日ならば、
          If Prices.IsClosed(DatePos) Then
             DatePos = DatePos + 1
          
          End If
       End If
    End If
    
    yokuyori = Prices.Open(DatePos)

End Function

'翌営業日の終値
Public Function yokuhike(kcode As String, kdate As Date) As Long

    Dim Calendar As New ActiveMarket.Calendar
    Dim Prices As New ActiveMarket.Prices
    Dim DatePos As Long
    
    DatePos = Calendar.DatePosition(kdate, 1) + 1
    
    Prices.AdjustExRights = True
    Prices.Read kcode
       
    '翌日が休場日ならば、
    If Prices.IsClosed(DatePos) Then
       DatePos = DatePos + 1
       
       '2日後が休場日ならば、
       If Prices.IsClosed(DatePos) Then
          DatePos = DatePos + 1
                
          '3日後が休場日ならば、
          If Prices.IsClosed(DatePos) Then
             DatePos = DatePos + 1
          
          End If
       End If
    End If
    
    yokuhike = Prices.Close(DatePos)

End Function

'取引日
Public Function kdate(kcode As String, startdate As Date, addcount As Integer) As Long

    Dim Calendar As New ActiveMarket.Calendar
    Dim Prices As New ActiveMarket.Prices
    Dim DatePos As Long
    
    DatePos = Calendar.DatePosition(startdate, 1) + addcount
    
    Prices.AdjustExRights = True
    Prices.Read kcode
    
    '翌日が休場日ならば、
    If Prices.IsClosed(DatePos) Then
       DatePos = DatePos + 1
       
       '2日後が休場日ならば、
       If Prices.IsClosed(DatePos) Then
          DatePos = DatePos + 1
                
          '3日後が休場日ならば、
          If Prices.IsClosed(DatePos) Then
             DatePos = DatePos + 1
          
          End If
       End If
    End If
    
    kdate = Calendar.Date(DatePos)

End Function

'銘柄名
Public Function kname(kcode As String) As String

    Dim Names As New ActiveMarket.Names
    Dim C() As String, N() As String
    
    Names.AllNames AM_KINDFLAG_SPOTS, C, N
    
    mpos = Application.Match(kcode, C, False)
    
    If IsError(mpos) Then
       kname = mpos
    Else
       kname = N(mpos)
    End If
    
End Function

 

フォートラン プログラム用紙

家の中を整理していたら、
こんなものが発掘された。
「フォートラン プログラム用紙」

私は、これを使ったことはないけど、
その昔、コンピューターのプログラムは、
このような用紙に手書きで記入してから
入力専任者が入力する、というものだったらしい。

なぜそんな無駄なことを?? と思ったら、
昔は、今のようなエディタ等がないので、
入力した文字を都度訂正することができないので、
事前に完璧に清書しておく必要があったから? なのだろうか。

ワープロでさえも、最初の頃は、
事前に手書きで清書したものを入力する機械
として使われていたそうだ。

今はさすがにそんなことをしなくなったかもしれないけど、
事前に「人間が仕上げた 結果 」を入力して処理させる、
という発想は、あまり変わっていないのかもしれない。

便利になることと、効率的になることは、必ずしも一致しないのだろう。

細野俊一のトレーディング日記 再開

約16年前に、日経平均先物取引に初チャレンジした時の
「細野俊一のトレーディング日記」というホームページが、
自分のPCの中から発掘された。

その後、FXや株365等にチャレンジするも、
試行錯誤ばかりやっていて、利益が伴わなかったが、

今年になって相場師朗さんの書籍を見つけて、
「株塾」に入塾することになったのをきっかけに
利益を出す努力をしてみようと思い立った。

「株塾」3ヶ月目の節目なので、
トレーニングの過程を記録に残して、
自分の励みにしようと考えて、
次のブログを開始することにした。

「細野俊一のトレーディング日記」
https://usemanage.blogspot.com/

トレーディング関連の話は適時、
この新しいブログの方に更新していこうと思う。

ポイントアンドフィギュアによる、日経平均株価の値動き動画

日経平均株価の値動きを、一般的なチャートではなく、
ポイントアンドフィギュアという形のチャートで見ると、
「上下に」どのように動いてきたか? がよく見えてくる。

特に、レンジ相場から、支持線または抵抗線を突き破って
上下にブレイクアウトした時の、
値動きが跳んでいく様子が、よく見えてくる。

ポイントアンドフィギュアは、
時間の流れが一定速度ではないので、
途中経過が分かりづらい。

途中経過の歩みを見えるように改良したのが、
細野式ポイントアンドフィギュア である。

https://www.usemanage.jp/pfmonitor.asp

「ポイント&フィギュア」の基本に戻る

私はなぜ、「ポイント&フィギュア」にこだわるのか?

平成最期の日の今日、その答えが、とうとう分かった。
なぜ、こんな単純なことに気づかなかったのだろう。
今まで、遠回りしすぎていて、本質をすっかり見失っていた。

「ポイント&フィギュア」に独自の改良を加えて、
その欠点を補おうと、いろいろ工夫してみたが、
そんな必要も なかったかもしれない。

「ポイント&フィギュア」の極意は、
「価格の動きだけをシンプルに見せること」
なので、その基本に帰ったら、見るべきものが見えてきた。

「ポイント&フィギュア」だからこそ実現できる売買手法が、すごいのだった。

令和元年、「細野式トレーディング」が本格始動します。

https://www.usemanage.jp/pandf/

 

3DプリンタのSDカード内のファイル数は少なくしておこう

3Dプリンタ「ANYCUBIC I3 MEGA」を使っていたけど、ここ最近、

「印刷開始直後に、すぐに終了して、何も動かない」
「印刷途中なのに、終了してしまう」

という、おかしな事象が起きるようになった。

機械の調子が悪いわけでもなく、ファイルの中身も問題なさそうだし、
この事象が発生するファイルと発生しないファイルがあって、
一体何が原因なのか分からないので、気持ちが悪かった。

いろいろ調べてみたら、SDカードからプリントする場合、
ファイル数が増えてきたり、
日本語のファイル名が存在すると調子が悪くなる、
という事象があるらしい。

いつも使っているSDカードを調べてみたら、
日本語名のフォルダが1つあって、
ファイルが60個以上あった。

これらのファイルを、下のフォルダへ移動させたら、
おかしな事象はすべて解決した。

「SDカード内のファイル数」が原因だったというのは意外だったけど、
安価な3Dプリンタでは、まだまだ このレベルのトラブルは
覚悟しておく必要がありそうだ。

Y!mobileは取り止めて、楽天モバイルの「スーパーホーダイ」へ、のりかえた。

先週、2台のスマホのうち、1台を MINEO にのりかえて、これは成功だった。
けど もう1台の ワイモバイルへの のりかえは、失敗した。

MNPを複数かけていたのが悪かったのかどうか分からないが、
ワイモバイルから、審査結果がきて、
「ご契約を見合わせて頂くことになりました。」

そこで急遽、別のサービスをさがしてみたところ、
「楽天ダイヤモンド会員向け特典」というのが目に止まって、
楽天モバイル(R-Mobile)の「スーパーホーダイ」が
かなり良さそうなので、それに決めた。

これは、一番安いプランで、
規定の通信容量2Gを超えた場合に、
スピードが1Mbps (混雑時は 300kbps)までしか落ちない
というもので、私の場合は、これで十分だった。

スピードが 128kbps とか 200kbps まで落ちてしまうと
明らかに、使い勝手が 大幅に落ちるけど、
300kbps だと、かなり違うことが分かっている。
(以前使っていた POINTY が 300kbpsだった)

格安SIM は、安いけど遅い のを覚悟して使うものなので、
規定の通信容量を使い切った後の速度を
とっても重要視した方がよいと思う。

アプリ更新、ダウンロード等 を「手動」にして
動画閲覧等も 必ず Wifi環境で行うようにすれば、
通信容量は それほど消費しないと思う。

MINEO と Y!mobile へ、のりかえた。

今月は、格安SIMへの変更を2台分やった。

au解約済の iPhone6S と
au契約中の iPhoneX である。

iPhone6Sの方は、SIMロック解除をしていなくて、
auを解約してから100日を超えると、
もう SIMロック解除は できないとのこと。

auのSIMロック状態のまま使えるのは
「MINEO」(VoLTE非対応版)だけらしいので、
それしか選択肢がなかった。

さて、iPhoneX の方は、
昨年、4年縛りで機種変更してしまったので、
2年目には絶対に解約しようと決めていたが、

1年経つと、各種キャンペーンの割引が終了して
月額料金が高くなることに気づいたので、
1年経たないのに、すぐに解約することにした。

残金は残り3年で払い続けるけど、
違約金とかを考慮しても、
前倒しで解約した方が、結局安くなる。

iPhoneXは My au のWEB画面から
SIMロック解除ができたので、
のりかえ先は、ワイモバイルにした。

ワイモバイルのオンラインショップで、
「Android One S1」が 100円のタイムセールで付いていて、
家族割りで 500円引きで、
「Yahooプレミアム」(月額約500円相当)が含まれていて、
ソフトバンクの WiFi スポットも使えて、
回線の品質も良さそうなので、これにした。

使えるエリアは auに比べれば狭くなるかもしれないけど、
どうせ docomoも一緒に持ち歩いているので、
あまり気にしなくてもいいだろう。

格安SIMに買えても、1年縛りとか2年縛りとか、
期間限定の割引(333キャンペーン、ワンキュッパ割 等)
が付いてきたので、またその頃に再検討しようと思う。

3大キャリア(ドコモ、au、ソフトバンク)と
MVNO(格安SIM提供会社)のどちらを選ぶか?について、
私の基準は、

・新発売のiPhoneに機種変更する時は 3大キャリア が有利
・手持ちの機器を使用する場合は、格安SIM が有利

だったけど、
その垣根がなくなりつつある。

やがては、個人ユーザーは全てMVNOを使うようになって、
3大キャリアは 法人向け(卸売)または セレブ向けの
上級ブランドに格上げされるのでは? と予測したい。

現時点では、高額なスマホ代を払い続けるのは、もったいないと思う。

NINTENDO LABO のリモコンカーを 3Dプリンターで作成してみた

NINTENDO LABO は、ダンボールだから壊れやすいと思っていたが、やっぱり壊れた。
そこで、3Dプリンターで、これと同じものを作れないだろうか? と考えた。

3Dデータのダウンロードサイト「Thingiverse」で、「NINTENDO LABO」と検索すると、いくつかヒットした。
https://www.thingiverse.com/

さっそく、リモコンカーを 3Dプリンターで作成してみた。

形はたしかにそれらしいものが出来上がるけれども、ジョイコンを挿入するレールの部分が、微妙にサイズずれしているので、まっすぐに挿入できなかった。

これは私の3Dプリンターの調整が不十分だったから、かもしれないけど、
数時間かけて再プリントするのは、もったいない。

3Dプリントの動作が記述されている、GCODEファイルの仕様を理解すれば、
特定の部位のところだけ、造形の密度、印字速度、重なり 等のパラメータを変えて、
より精密に印刷することが可能だと思う。

GCODEファイルの実体は、プレーン・テキストファイルで、
座標軸データのほか、プリントの指示が記述されている。

一応、ドキュメントはあるが、
https://reprap.org/wiki/G-code

3Dプリンターが一般に普及していないので、
これを分かりやすく記述した解説書などは、まだない。

今回作ったリモコンカーは、飾っておくだけのものになったけど、
3Dプリントのノウハウをもっと身に付けて、
これを正しく造形できるようにしたいと思う。

ロカボーイの、次に使う 交換ろ材 を、上に重ねて置く。

アクアリウムをやってみて、最初に疑問になるのが、
水槽の投げ込み式フィルターの、ろ材の交換方法である。

以前の水槽の時も、ジェックスの「ロカボーイ」シリーズを使っていた。
当時は知識がなかったので、交換時期が来ると、新しい ろ材 と交換していた。
これは、いけない方法である、ということは知っていた。
でも、他に ろ材と同じような素材のマットを敷いていて、バクテリアが全滅することはないだろうという判断である。
小さなベタ一匹だけだったので、それで十分だったと思う。

でも今回は、50cm水槽で、たくさんのタニシ、グッピー、コリドラス、カージナルテトラ等が泳いでいるので、以前の方法では良くない。

この水槽では、ジェックスの「サイレントフロー パワー」というフィルターが付属していたので、それを使っている。
このフィルターは、バクテリアをなるべく温存させるための工夫として、内部にもう1枚別のスポンジが入っていて、ろ材をまるごと交換しても大丈夫、とのことである。

でも、1か月経ってみて、念には念を入れようと思って、今日「ロカボーイM」を入れてみた。
これも、ろ材をまるごと交換すれば、バクテリアがいなくなってしまうそうなので、いろいろと調べていたら、

「次に使用する 新しいろ材を、ロカボーイの上に重ねて置くとよい」

という情報を見つけたので、それが一番よい方法だと思った。
あらかじめバクテリアがいる状態の交換ろ材を使えば、たしかに確実だ。

難点は、見栄えが悪くなることであるが、魚の健康の方を優先に考えたいので、今日の時点では妥協しようと思う。
今は、こんな感じである。

「サイレントフロー パワー」の前面をふさぐ形で「ロカボーイM」を置き、その上に、次回使う交換ろ材を置いて、さらにその上に、重りとして「土管ミニ」を 建てて置いてみた。

実はこれ、グッピーの稚魚が「サイレントフロー パワー」の前面の吸い込み口に近づかないようにするための障害物 という役目も果たしている。

しばらく、ダブルフィルターの状態で、続けてみようと思う。

3Dプリンタ「ANYCUBIC I3 MEGA」の、フィラメント詰まりで、ノズル交換

3Dプリンタ「ANYCUBIC I3 MEGA」を使い始めて10日目。
またまた、フィラメントが排出されなくなり、プリントできなくなった。

今度は、フィラメントが、白いチューブの中で切れて、詰まって、
押し出すことも引っ張ることもできない状態になっていた。

こんな時、本来ならば、チューブだけを交換すればよいのだが、
最初から「チューブ付きの交換用プリントヘッド」が付いていたので、
プリントヘッドごと交換してしまうことにした。

この部品は、Amazonで売っているので、次回のために1つ注文しておいた。

中国製の安価な3Dプリンタは、いわゆる オープンソース なので、
パソコンの自作と同じ感覚で、部品交換やカスタマイズができる。

ATX電源や、冷却用のファン等、パソコン部品を流用しているので、
規格が合えば、自己責任で交換することもできる。

というわけで、プリントヘッドを交換したら、きちんと印刷できるようになった。


グッピーとタニシの赤ちゃんが、生まれる。

5月5日(こどもの日)に、アクアリウムを再開して、ちょうど3週間が経つ。

最初、グッピーを4匹、タニシ(貝)を2匹、コリドラスを2匹 でスタートした。
タニシは初日から赤ちゃんを産んで、ほぼ1日1匹のペースで赤ちゃんが増えていき、今は20匹くらいになっている。
グッピーは、1週間後に赤ちゃんが産んだ。6匹を隔離して育てて、だんだん大きくなっている。
コリドラスは、今のところ産む気配はないけど、もし卵を産んだら、もちろん育てる。

熱帯魚は、中学生だった頃に買っていたことがある。
グッピーの赤ちゃんも育てたことがあるので懐かしい。

この赤ちゃんたちが、大人に育っていくのが、楽しみだ。

3Dプリンタ「ANYCUBIC I3 MEGA」の、フィラメント押出機の空回り のトラブル

3Dプリンタ「ANYCUBIC I3 MEGA」を使い始めて2日目。
突然、フィラメントが排出されなくなり、プリントできなくなった。

買ってすぐなので、初期不良扱いで、交換してもらえるかもしれないけど、
これは中国製の格安品なので、自力で解決しなければならないことは覚悟している。

インターネットで情報を探せば、解決策はたくさん出てくる。

どうやら、フィラメントの挿入口にある押出機のギヤが、空回りしていて、
フィラメントがぜんぜん中に入っていかないという、よくあるトラブルらしい。
よく見ると、軸は回っているのに、ギヤは回っていない。

そこで、ギヤについているネジを、六角レンチで締めたら、ギヤが回るようになって、
きちんとフィラメントが挿入されるようになった。

私の場合、1台目の3Dプリンタ「BIQU MAGICIAN」(中国製)で、
ロッドアームのナットが1つ付いていなくて印刷中にネジが抜けたり、
リミットスイッチが外れて飛んだり、というトラブルを経験しているので、
この程度のトラブルは、経験値を積むのに役に立つ。

3Dプリンタ「ANYCUBIC I3 MEGA」を買った

ここ2ヶ月ほど、3Dプリンターがフル稼働中である。
初めての3Dプリンタ「BIQU MAGICIAN」で、いろいろなものを印刷してみたけれど、最近は失敗率が高く、試行錯誤で調整を繰り返さないと、まともに印刷ができなくなっている。

そこで、2台目を検討していたら、一昨日に、AMAZONのタイムセールで、「ANYCUBIC I3 MEGA」という機種が \39,999円(税込)で売っているのを見つけたので、買った。

実はこの機種、組立ても簡単だし、値段のわりに、なかなか高精度らしいので、候補だったのである。

今度は、20cm×20cm×20cm くらいのものが製作できるので、もう少し実用的なものを作ってみようと思う。

アダムスキー全集を図書館に献本してくれた方たちへ、感謝。

最近、故・久保田八郎先生の、日本GAPでの月例セミナーの音源を順番に聴いている。
これは、かつて、カセットテープで頒布されていたもので、今は、mp3形式で音声データ化されたものを、Cosmic Consciousenessの「会員専用ページ」内に掲載している。
全部で、約26GB、620ファイル、約485時間分 の分量が遺されている。

この膨大な量の音源は、Cosmic Consciouseness会の主催者である 清水正さんが数年前にデジタル化してくれたものである。
そのおかげで、今でも、故・久保田八郎先生の貴重な講演を、スマホで、いつでもどこでも、聴くことができる。
私が、日本GAPの月例セミナーに参加したのは、1992年4月以降だけど、それより約10年前からのセミナーを遡って聴けるのは、嬉しい。
順番に聴いていくと、1983年に、世界で初めて(というよりも唯一)、アダムスキーの書籍をまとめた「アダムスキー全集」を、文久書林から、立派なハードカバーの本として出版するという話が出てくる。

考えてみれば、私が、アダムスキーの宇宙哲学を知ったのは、1992年1月頃だった。
学生時代がもうすぐ終わるので、できるだけたくさんの本を、分野を問わずに読みまくっていた時期だった。
当時、町田市立中央図書館というのができたばかりだったので、ここにある本を全部読んで、世の中のあらゆる問題を解決できる「究極のノウハウ」 を見つけてやろうという野心に燃えていたことをよく覚えている。
それには、できるだけすべての棚に目を通して、興味の有る無しにかかわらず、あらゆる分野の問題に関心を持って、世の中にどんな分野の本があるのかを掴む必要があるので、自分が絶対に買わないだろう本(宗教、オカルト)も、無料だから、もちろん目を通した。

結局、いろいろな本に目をとおした結果、
人間(自分含む)にとって最も肝心な知識(つまり「究極のノウハウ」)は、聖書・仏典等の聖典が一番近いけど、それがゴールではない。
ということだった。
やはり何か足りないか、余計なものが含まれているか、間違っているか、不十分なのだ。

それから、聖書で「神」と書かれているものは、本当のところは一体何を意味するのか?といろいろ調べていくと、昔の人は「空から飛来してくる人間」を神と呼んだのでは?と考えるようになった。
そして、遠藤昭則さんの「ヨハネ黙示超解読」を読んだ時に初めて「アダムスキー」の名前を偶然知ったのである。

その後、「宇宙人」というキーワードでいろいろな本を読みまくってみると、いろんな話は出てくるけれどもみんな似たようなパターンで、気持ち悪い話ばかりだった。
その中で唯一、アダムスキーとビリー・マイヤだけは、単なる作り話ではなく、実はスゴい話が隠されているはず!と直感で感じたのである。
UFOの写真とか多少インチキなものが含まれているのは想定内として、私が求めているのは「究極のノウハウ」なのだから、地球人よりも進化していて、生老病死を克服している「宇宙人」が日常生活で活用している 新鮮なノウハウ を求めていたのである。

そんな中、「天文学」の棚で、アダムスキー全集という、カバー付きの、まるで文学書のような立派な本が並んでいるのを見つけた。
題名をよく見ると、「宇宙哲学」 「テレパシー開発法」 「生命の科学」 という書物があったのを見て、まさにこれ(アダムスキーの宇宙哲学三部作)こそが、私が求めていた「最強のノウハウ」であることを悟ったのである。

おそらく「宇宙」と「科学」のキーワードを含むので「天文学」に分類されていたのだと思うけど、この時から私は、今に至るまでずっと、アダムスキーの宇宙哲学を、この世で最高の書物と位置づけていて、今でも全くブレていない。
もしあの時、アダムスキー全集が、宗教やオカルトの棚に分類されていたら、さほど関心を持たずに、余計な回り道をすることになったと思う。
「天文学」の棚にあったことで、アダムスキーの書物が、まじめな研究に値する内容であることを迷わなくて済んだのだった。

今になって知ったことだが、アダムスキー全集を書店や図書館へ置いてもらうように献本活動してくれた、日本GAP会員のボランティアの人達がいた、ということだった。

彼らのおかげで、私は社会人になる前に、アダムスキーの宇宙哲学という「最強のノウハウ」と巡り会うことができたので、助かっている。

というわけで、故・久保田八郎先生と、日本GAP会員のボランティアの方々 に、あらためて感謝したいと思う。

「BIQU Magician」修理完了!

3Dプリンター「BIQU Magician」が壊れたので、
先週、メーカーに問い合わせたら、部品を送ってくれることになった。

中国の会社なのに、日本語でメールしたら、
きちんと日本語で返事をくれたので、好感が持てた。
文法は微妙におかしいけど、丁寧な日本語で、十分意味は通じる。
おそらく、翻訳ソフト等を使って、
いろんな国の言語でサポート対応しているのだと思う。

さて今回は、リミットスイッチの金具がおかしいので、
金具を送ってくれるとのことだったが、
結局、金具を含むスイッチごと送ってくれた。

 

取り付け方法は、動画ファイル(MP4)のリンクを付けてくれけど、
機械の中を開けて、なかなか大変な作業だった。

でもおかげで、また元通り使えるようになったので、よかった。


My Company Links

合資会社ユースマネージメント
ドメインサービス
インターネット活用の入り口

My Website Links

細野俊一のトレーディング日記
日経225+JPX400銘柄の PPP(パンパカパン) 一覧
株価指数+外国為替(FX)の PPP(パンパカパン) 状態
「生命の科学」学習メモ
大安心と大冒険を求めて

Facebook Pages

ポイント&フィギュア活用研究会
合資会社ユースマネージメント
アダムスキー「生命の科学」活用研究会
細野俊一 (宇宙哲学研究家)