クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.

メイン

7) マイ・ツール アーカイブ

2004年03月11日

マイ・ツール(目次)

VB  ・ツールについて

 ・3大ツールとマイ・ツール

 ・VBの勧め

 ・RSSとは?

 ・ツールの中身

 ・データベース

 ・「比較用セルなどVBの再計算量を軽減するセル」とは?

 ・マクロの自動起動

 ・マクロの自動起動(補足)

2006年06月23日

ツールについて

戦地に赴く兵士がそうであるように、トレーダーも生き残りたければ、サバイバル・ツールは慎重に選ばねばなりません。 ナイフ

・証券会社

・板情報

・チャート

・PC

・通信回線

・作戦 etc..

どれ一つ、おろそかにしてはいけません。 今後、それぞれについて書いていくつもりです。 そして最初に、私が使っている自作ツールについて書こうと思います。 私のトレードの75%は、順張りのブレイクアウトです。 普通ですよね。(順張りとか、ブレイクアウトについては、後で説明します。) でも、このトレードチャンスを発見するツールは自作しています。 私にとってはまさに必携のサバイバル・ツールです。 その、おおまかな作り方も書いていきますので、ぜひ「マイ・サバイバル・ナイフ」を作るつもりで挑戦して頂きたいと思います。

2006年06月24日

3大ツールとマイ・ツール

「これから始めるデイトレード」で紹介した二階堂さんの本では、  

 ・チャート  

 ・板  

 ・ランキング

をデイトレの3大ツールとして紹介しています。 確かに多くのトレーダーが、結局はこの3つを使って利益を出しています。 でも、私はランキングを使いません。 ランキングには、

・ 既に大幅に上がるか、下がるかしており、順張りにはリスクが大きい

・ 市場別には見られるものの、ミソもクソも一緒に表示されてしまう

・ ランキングそのものではなく、ランキングの中の動きを見なければならない

等の欠点があります。 上記の欠点がある為に、売買する標的銘柄が見つかっても、チャートや板で、更にエントリーに値するか判断する必用があり、時間がかかってしまいます。

私のツールは、エクセル+VB+RSS(後述)でできています。 東証一部用、新興市場用の2つがあり、それぞれ約200銘柄が登録されています。この200銘柄は、平均出来高や、ボラティリティがデイトレに適したものを厳選しており、「訳のわからない」銘柄は含まれていません。 更にそれぞれ、200銘柄ほどの「二軍」ファイルがあり、毎週末に「一軍」の下位銘柄と「二軍」の上位銘柄とでトレード(入れ替え)を行い、銘柄の質を保っています。

私のツールは、過去2ヶ月分の日足4本値を保存しており、そこから算出した様々なパラメータも保存しています。そしてRSSから取得したリアルタイム株価により、エントリー有望銘柄が、シートの上からランキング表示されます。 シートの情報は15秒毎に自動的にリフレッシュされます。 念の為、チャートや板も見ますが、既に多くの判断が織り込まれた銘柄ですから、エントリー時のストレスは少なく、また間違いも少なくなります。

このツールは、今でこそ機能満載で非常に複雑なものになっていますが、基本は簡単なものであり、エクセルとVBの基本的な知識さえ身につければ、殆ど誰でも作る事ができると思います。基本機能を備えたツールをまず作成し、日々これを改良していけば、どんどん強力なサバイバル・ツールに育っていきます。 このブログで、順をおって説明していきます。 あなたも、いかがですか?

VBの勧め

インターネットやブログで、何気なく使っているパソコンですが、その計算能力の凄さは、あまり意識される事がありません。

例えば、右の式は、 VB1 1+2+3+4+、、、、、+1億 と、単純な足し算を1億回行わせるプログラムです。 これを、私がブログやメール用に使っているちょっと古いパソコン(購入して3年経過)で計算させると、約20秒で終了します。 私が電卓で 1+2+3+、、、、100の100回の計算をするのに、40秒はかかってしまいますから(桁数を考慮しなくても)、パソコンは200万倍も高速である事がわかります。200万倍高速という事は、パソコンが「1秒」かかる演算を私が電卓でやると、「200万秒」 つまり、23日もかかってしまう計算になります。 パソコンが1分かかる演算なら、手計算では4年近くかかります。 しかも、私が電卓で計算すると、しばしば間違えますが、パソコンはまず間違えません。 人とパソコンの計算能力を比較しても、あまり意味無い事とはいえ、物凄い能力ですよね。

プログラミングができるようになると、この物凄い能力を、あなたの思うとおりに使う事ができます。計算力抜群!記憶力抜群!の秘書を自分専用に雇っている状態です。

デイトレのコツは、ザラ場であまり考えない事かもしれません。 場が引けてから次の朝までの間、勉強し、考え、作戦を練る必要はありますが、ザラ場では作戦の遂行のみに集中するべきです。その為に、プログラムで作戦遂行用のツールをつくれれば、これは「優位性」以外のなにものでもありません。

プログラム言語は多種多様ですが、VB(Visual Basic)は、もっとも簡単(分りやすい)な言語です。簡単な言語でありながら、コンピューターに実行させたい事(コマンド)は殆どカバーしており、企業が使うアプリの開発用言語としても多用されています。 更にエクセルとの組合せで、より簡単に実用的なアプリケーションの開発が可能となっています。 そして、なんといっても、「安い!」です。 あまり安すぎて、「エクセルのオマケ」くらいにしか意識されていないほどです。 マニュアルは、エクセルのヘルプでも十分使えますが、プログラミングが初めての方は、参考書を一冊読まれたほうが良いかもしれません。

2006年07月22日

RSSとは?

私のツールは、エクセル+VB+RSSで出来ています。 RSSとは、楽天証券の、マーケット・スピード(略称マケスピ)の「オマケ」として、非常に控えめに提供されているサービスです。 いまや、すっかり「先進性」のなくなってしまったマケスピですが、RSSはユニーク且つ、強力なサービスです。ところが、全然宣伝に注力していない。 これは私の推測ですが、RSSのユーザー、特に私のようなヘビーユーザーが増えてしまったら、サーバーの負荷が大きくなりすぎて「無料サービス」を継続できなくなるからではないでしょうか?  私にすればこれだけのサービスが「無料」である方が不思議なんですけどね。

ちなみに、楽天で2ヶ月に1回以上「手数料の発生する」トレードをやれば、マケスピは無料になり、RSSも無料です。 手数料的には、もっと安い証券会社も多いものの、逆指値が使えて、マケスピとRSSが使えるので、楽天は私にとって「メイン証券会社」となっています。 ただ、チャートは カブドットコム証券のkabuマシーンを利用しています。その為に月数千円の使用料を払っていますが、マケスピのチャートでは、もう駄目ですから。 この事については、別途書くつもりです。 (その後書いた記事はこちら

RSSと言っても、ブログなんかでよく使われている「Rich Site Summary」ではなく、「Realtime Spread Sheet」の事です。 「リアルタイムで4本値が受け取れる」 何が凄いの? と、不思議に思われるかもしれません。 板情報でも、ありふれたチャートでも、「リアルタイム4本値」は受け取れますものね。

実は、リアルタイム情報と過去の情報がエクセル上で同時に料理できるところが凄いのです。 あなたがトレードしている時の事を思い出して下さい。 「3日前の高値をブレイクした。それ、買いだ!」 「上場来高値更新かよ、買うしか無いな。」 「損切しなくちゃいけないけど、サポートがあるから、もうチット様子見かな?」 「絶好の売り場だけど、出来高が薄い銘柄だから、踏上げが怖いな。」 等々、常に過去の情報と現在値との比較でトレードしている事がわかるはずです。 検討項目は非常に多く、正確な判断は難しいものです。 ところが、この判断の多くをパソコンに任せる事ができたら、楽になるだけでなく、トレードの正確性も増すに違いありません。 更に、 刻々と変動する株価を同時に数百も把握して、その中から「今、最も勝つ確率の高い銘柄」を選択する事は、人間には無理です。 でも、RSS+エクセルVBでできるとしたら?

次回は、更に具体的な事を書こうと思います。

[デイトレーダー生存率向上・トップ]

ツールの中身

私のツールは、東証一部用と新興用の一軍、二軍の3種類があります。 銘柄が違うだけで、どれも殆ど同じ構造になっています。 それぞれ約200銘柄の、直近20日間の4本値、出来高を保存する部分があります。 毎日1回、大引け後に「バッチ処理」を行い、最古の日のデータ捨て、直近20日分のデータを保存し直します。 こう書くとややこしい感じがしますが、実際には「Ctrlキー+B」を押すだけ。 バッチ処理用のマクロが全てを3秒ほどで完了させます。 しかも殆どは「マクロの記憶」機能で自動作成されたものですから、ほんとにエクセルは良くできています。 これだけのデータから、それぞれの銘柄について、

20MA(=Moving Average=20日移動平均)と5MAの位置を算出します。

これにより、翌日の株価が20MAと5MA両方の上に位置するものをロング(買出動)候補。 両方の下方に位置するものをショート(売出動)候補とする事が出来ます。 トレンドフォローにおいて、例えば数時間のエントリー時間しかない短期のものであっても、より長期間のトレンドに沿う方向に仕掛ける事が、勝率を良くします。 数百銘柄あれば、必ず20MAと5MA両方の方向が揃っている銘柄が含まれます。 これらは、例えば銘柄名のセルをロング=青、ショート=赤、その他=白に色づけする事で、簡単に見分けられるようにし、エントリー判断の重要な要素としています。

出来高の推移を加重平均し、最近出来高が増加したものを重視します

出来高が大きい方が、スリッページが少なくなるというメリットもありますが、なによりボラティリティの増加により、利幅が得やすくなります。

出来高x株価=売買代金の算出

一定基準を満たさないものは、二軍落ちさせ、二軍で基準を満たすようになったものを、一軍のファイルに引き上げます。

ボラティリティ=(1日の最高値 - 1日の最安値)/その日の株価

上記の式から、各株が平均して1日に何円動くかを把握します。 例えば、株価1000円で、1日に平均して100円動く株があるとしましょう。 既に始値から80円上昇した株に、今更買いエントリーするのがあまり効率的でない事が解ります。 また、100円のギャップアップ(窓を開けて始値を点けた)をした場合、既に危険水域にある事がわかりますね?

前日が、大陽線又は大陰線かどうか

前日のローソク足が、平均ボラティリティを超える長さである場合、同方向に仕掛けるのは、リスクが高く利幅が薄い傾向が、かなり顕著に見られます。「見送り」の重要な要因です。

何日間高値、又は安値を超えた位置にあるか

a)ローソク足の本体部分で、何日ぶりの高値、または安値か、 b)同じく、ローソク足のヒゲまで含めて、何日ぶりの高値、又は安値か。 リアルタイム株価が、a)又はb)の条件を満たすとき、a)かb)か、また何日ぶりであるかによって点数をつけてソート(並び替え)を行い、ブレイクアウトの強度によってランキング表示します。

妥当な押目からの反発かどうか

単に上げ続けている株を買うより、適度な押目から反発してきた株を買う方が効率が良い事がわかっています。この値動きを感知するロジックを組み込み、有望銘柄のセルを色付けし、なお且つ表示順位も上に来るように、設定しています。

リアルタイム株価を20秒刻みで上記各項目に反映させる

同じく表示順位も20秒毎に更新させ、エントリーポイントに入った株を見つける。 ランキングに入った株は、全て1分足チャートや5分足チャートでチェックし、出動の可否を判定する。

以上で、私のツールの80%程度の内容が含まれます。残り20%は補足的なもので、私には「有った方が便利」という程度です。 とにかく、「エントリーしがいのある銘柄」が上位に表示され、ロングかショートかはセルの色で直感的にわかるようにしています。 寄付き直後から、これら優先順位の高い株のチャートを確認し、機械的にエントリーしていきます。始値がつくまで10分以上かかる銘柄は、何か材料が出た可能性が高いですが、そうした株も、「値がついていない」状態である事がわかるので、予めチャートでチェックしておく事が可能です。

さて、一杯書きましたが、これを読者の方がどう有効に使えるようにするか?が問題ですよね。考えてみます。 既にこの記事が、殆ど意味を成さない読者の方もいらっしゃるかもしれません。 でしたら、この「マイ・ツール」カテゴリの記事は読み飛ばされた方が良いのかも? 他の「カテゴリ」も平行して書いて行きますので、全部見捨てないで下さいね。 エクセル+VB+RSSが使える方は、ぜひ20~30日分の過去データの蓄積とバッチ処理について、作りこんでみて下さい。 これができれば、一つ一つ自分の好きな機能を追加していけるので、楽しいですよ。 私のツールの場合、25日分しか蓄積していませんが、比較用セルなどVBの再計算量を軽減するセルが結構あって、10%程度の未使用セルを含めて250列近くまで使っています。途中で「列」をインサートで追加すると、マクロやVBのコードもそれに合わせて書き換えないといけなくなるので、表示させる項目と過去データ格納セルの間には50~100列の未使用列を入れておくと、後々苦労が減ります。 私の場合、設計も無く思いつくままに作り始めたので、この「列インサート」問題にはかなり苦労しました。 銘柄が200を超えると、RSSに予告無くエラーが発生するようになるので、要注意です。 厳密には理由がわからないので、150銘柄くらいにしておくのが無難かもしれません。 マクロによる再計算も軽くなりますしね。 それ以上は、私のように二軍のグループを用意して、週一くらいで銘柄のトレードを行うのも良い方法と思われます。ではまた。

2006年07月23日

データベース

エクセル+VB+RSSにより、過去1ヶ月分くらいのデータを蓄積し続けていく事について前回書きました。 すると、今日そのツールを作ったとしても、データが揃うのに1ヶ月もかかるのかと、がっかりされるかもしれません。 また、今後ツールが完成しても、新しい銘柄を取り込むのに常に1ヶ月も掛かるとしたら、かなり抵抗感があると思います。 ところが、私は新規に追加したい銘柄があれば即日追加し、翌日からマイ・ツールでザラ場の監視を行う事が出来ます。

それは、「初心者時代のシステム」の「システム(2) DBの準備」でご紹介した「株価データベース」を今も使っているからです。1ヶ月くらい更新をサボっても、あまり手間暇かけずに最新の状態にアップデートする事が可能です。 追加したい銘柄が何個か集まったら、このデータベースで各銘柄の4本値と出来高をCSVファイルとして抽出し、そのデータをマイ・ツールの該当する場所にコピーします。 このデータコピーも、1回マクロを作っておけば、何度でも使えますから便利です。

このデータベースが存在しなければ、マイ・ツールも構想だけで終わったかも知れないと思っているので、念の為ご紹介しました。 MS Accessをお持ちでない方には、ちょっと出費が必要ですが、何かとデータ分析するのにこのデータベースは役に立ちます。

2006年07月24日

「比較用セルなどVBの再計算量を軽減するセル」とは?

先の投稿「ツールの中身」で、 「比較用セルなどVBの再計算量を軽減するセル」 と書きました。何の事か解りにくいでしょうから補足します。

例えば 「直近5日間の高値、安値に対して現在の株価は、どの位置にあるのか?」 は、頻繁にVBで参照する事になります。 その場合、直近5日間の高値、安値を全て参照して、最大値、最小値を求めて、現値と比較する事になります。始値、終値との比較もあります。 いくらVBにやってもらうとしても、大変そうですよね?

その代わりに私のツールでは、直近5日間の最高値、最安値、最も高い始値か終値、最も安い始値か終値、の4種類を独立したセルで集計させています。 これらのセルはツール使用時は、過去の4本値と同様に非表示ですが、大事な役割を担っています。 例えば、

直近5日間の高値のセル=MAX(BL2,BP2,BT2,BX2,CB2)

直近5日間の安値のセル=MIN(BM2,BQ2,BU2,BY2,CC2)

直近5日間の、最も高い始値または高値=MAX(BN2,BO2,BR2,BS2,BV2,BW2,BZ2,CA2,CD2,CE2)

直近5日間の、最も安い始値または高値=MIN(BN2,BO2,BR2,BS2,BV2,BW2,BZ2,CA2,CD2,CE2)

上記でBL2は前日の高値、BP2は2日前の高値、、、、、、

CB2は5日前の高値です。 BLとか、BPとかは私のツールがそうなっているだけで、皆さんのは違ったセルを指定する必要があるでしょう。 現在値が、過去5日間のどの位置にあるかは、これらのセルと比較するだけで済みます。 私の場合、4,5,6,7,8,9,10日のブレイクを、重みをつけて点数化していますので、上記のようなセルが7セット用意してあります。 このセルを用意しないで、全てVBで参照・集計させていると、とても重くなる事が想像できます。

「2、4,6,8,10,12,14,16,18,20日のブレイクを点数化したい。」 とか、様々なバリエーションが考えられます。 「ローソク足のヒゲだけ比較すれば十分」 という考え方も有るでしょうね。 ぜひ、自分で最適な組合せを見つけて下さい。 (更に、「比較して点数化する為専用のセル」もあります。  これもVBの負荷を軽減するためのものです。  大したテクニックでもありませんが、説明した方がよろしいですか?) ご参考まで。(P065)

2006年07月25日

マクロの自動起動

現在値と、過去データを比較して、新たにブレイクしてきた銘柄を見つけて上位表示させる為のマクロは、最初はCtrl+「x」など手動で起動していました。 でも、やっぱり一定間隔で自動アップデートしたいと思って見つけたのが、このコマンドです。

Application.OnTime earliesttime:=TimeValue("10:28:00"),

procedure:="値洗", latesttime:=TimeValue("10:28:05") Application.OnTime earliesttime:=TimeValue("10:28:30"), procedure:="値洗", latesttime:=TimeValue("10:28:35")

タイマー関係のコマンドは試しましたが、思うような結果がえられず、最後にたどり着いたのがこれです。 この方法だと、30秒に1回起動するとして、1時間に120個も記述せねばなりません。 ただ、1回書いてしまえば、何回でも使えますし、数種類のマクロを予定時刻に自動起動できるので、とりあえず満足しています。(満足してしまって、他を探すのを止めました)

でも、なんて「ドロクサイ」んでしょうか? もっとスマートな方法があるような気もします。 ご存知の方がおられましたら、ぜひ教えて下さい。 よろしくお願い致します。 このシリーズは、予期していた事とはいえ、どうしても「ニッチ」な話題になってしまい、読者のみなさんが「サ~~」と引いて行かれるのが見えるようです。 ですので、「プログラミング」関係はここらで一段落とし、次を考えてみたいと思います。 でも「ご質問」があれば、答えさせて頂きますのでご遠慮なく。 





2006年07月26日

マクロの自動起動(補足)

読者の「isetya01」さんから、以下のコメントを頂きましたので、ご紹介します。 ============================

いつも拝見しており大変勉強になります。一定時間毎にマクロを実行させる方法ですが以下の方法で以前組んだことがあります。 参考になればと思い貼り付けておきます。

Sub test() 実行間隔 = Now + TimeValue("00:00:30") '(30秒後)

Application.OnTime TimeValue(実行間隔),

"test1" '実行させるマクロ名

End Sub

Sub test1() 'ここへマクロを記入

Application.Run "test" '戻す

End Sub

============================

まだ私は試せてなくてなんですが、きっとこれが正解なんだと思います。 前場開始直後、前場引け直前、後場開始直後などに自動起動させているマクロは、私のご紹介したコマンドで時刻指定起動し、その他何百回も繰り返しているマクロは、「isetya01」さんの方法で実行するのが望ましいと思われます。 ぜひお試し下さい。 isetya01さん、ありがとうございました。

MAGMAG!

ちょっとサイズオーバーですが、なんとか使えます。
メルマガ登録・解除
デイトレーダー生存率向上メルマガ
   
バックナンバー
powered by まぐまぐトップページへ