2008年3月 8日 (土)

データ取得シート その3

 つづき

 恐々テーブルを付けてみたけど、速度は落ちなかった。これで完璧だ。

 率ベースにも直した。

 しかし、分割の有った銘柄で動かしてみると、途中 SUB Yahoo分割修正株価(ByVal rounded As Boolean) で止まった。それで、僕には難しいので、訳も分らずとりあえず、’印をそのSUB全体に付け、動かしてみると動いた。(勝手なことをして申し訳ありません。)

ところが、へたれさんより、またファイルが送られてきた。それでSUB Yahoo分割修正株価(ByVal rounded As Boolean) の意味が解った。修正後終値*を利用して4本値が修正してくれるのだ。全ての株価が連続する。これによって高値安値を使うProgure02にも使えるようになった。

           spade

 でも10年間の検証は大変だ。9000番台の銘柄から検証を始めたのだけど、ITバブルの時にどうしても合わしてしまうので、今最近にはそのパラメータでは合わないような気がする。

 10年間の間には何処かで山場があって10年間で良い成績を出そうとするならなば、どうしてもその山場にパラメータを合わせないといけない。そしてその後底での長い持合ではなかなか成績が上がらない、長いドローダウンの時期が続くのである。

 山場では上げと下げで両方取れるから良い成績を上げられるのだが。(誰でもかsign02

 いや、案外それが出来ないのである。

          *

          *

05  そうこうしているとまた、ファイルが送られてきた。今度はVBAから最適化のテーブルを作ったり、削除するようにコントロールボタンがちょうど良いところに付いているではないか。

 テーブルがあれば凄く重たくなるのだけど、必要でないときはボタン一つで消せて、必要なときだけボタン一つで呼び出せるのだ。

 これで、データ取得に掛かる時間や他の作業部分でも1/2短縮できる。

 (これも、今まで検証作業をした事のない者には分からないことだが、僕からすれば非常に助かるのである。)

 送られてきたファイルにはみずほ8411が検証されていました。もうこれ以上僕が手を加えることも既になくなったように感じた。(新しいアイデアがあれば別ですが。)

        ********

検証結果      ( 通常の移動平均と比較してみます )

8411 みずほFG

検証期間    2003/3/12 ~ 2008/3/4

            通常         idou20

損益合計          1718600                 1310900

トレード数             313                      188

勝率                    42.8%                    54.3%

PF                       1.93                     2.66

損益レシオ           2.58                     2.24

平均利益            26610                   20607

平均損失          -10320                   -9198

最大利益           136000                 161000

最大損失           -52000                 -28000

MDD                                            -81000

MDD率                                          14.3%

連勝                                                 6

連敗                                                 9

 という結果が出ました。パラメータは上の図を見てください。勝率と利益は比例しないことが分かります。移動平均をそのまま使った場合どうしても勝率は45%程度になります。idouの特徴はその勝率を10%程度上げるところにあります。

 (最大利益 )対(最大損失)をみれば5倍以上損益レシオも 2.20以上で損小利大の取引をしていることになります。

 ただし、この結果は8411の一番良い時期を取り上げたものです。持合のときは利益を上げることは出来ません。

 つづく

| | コメント (0) | トラックバック (2)

2008年3月 6日 (木)

データ取得シート その2

 つづき

 これを、検証シートに合体するのだけど、このデータ取得シートに式をつけた方が手っ取り早い。

 へたれさんの場合、VBAで全ての内容を消去してからデータを取り込み、VBAからすべての式をコピーしています。それはエクセルと言うより90%VBAです。

 僕のようなVBA初心者(にわかプログラマー)にはちょっときついので,式の部分は50行まで予め入れておいて、毎回、時系列データと51以下の行は一旦消して再びVBAから50行の式を51行以下に最終行の一行手前までコピーするように改良しました。

 DDを求めるのにDD用の損益を求める式の初期値にその時の終値が入りますから、その部分だけは少し細工しなければなりません。

 VBAの教科書を引き出して作らなければいけなかったのですが。へたれさんのマクロの中にデータの最期の行番号を返す式がありました。

 これに終了を知らせるBeep音をつければ出来上がりです。

         ********

03  一つこれを作ってしまえば、どれにでも対応が出来る、改良するには少しの知識と感がいるけど1から作るのに比べたらはるかに楽だ。scissors

 来週からこれを使い10年間の検証をしようと思う(どの期間でも検証可能)。

       

        ********

 評価欄(1行から2行)の式を2700行まで対応するようにしなければならない。それと41行の式が狂っていたので修正しないといけない。(le-4)ももしも式が狂っていれば直しておいて下さい。

04  新たに10年間のグラフを付けてみました。(le-4)にもグラフを付けてください。

 これは、5711マテリアルの10年間です。

テーブルを付けてもっと最適化を完璧にしもっと良い数字を出したいのですが、速度が落ちるのが怖いです。

 それで、グラフの黄色線が資産曲線です。水色線がその最大値です。

 マイナスの折れ線がドローダウンです。

 最初の-192(MDD率61.5%)が大きいです。

 こんな感じで、これからも検証を続けようと思います。

  一つ大事なことを忘れていました。PSとLCが今は金額ベースになっていますが10年の期間だと株価が100円台のときもあれば1000円台になる事もあるので、全て率ベースに変えなくてはなりません。今日はこの辺にして明日それを直していきます。

つづく

| | コメント (2) | トラックバック (0)

2008年3月 5日 (水)

データ取得シート

 僕のやりたい事は、始めから決まっていた。フォームを使わないで、エクセルシートに銘柄コード、開始日、終了日を入力しボタンを一つ付けて、それを押せば、3分で10年分データ取得と言う物である。

 イメージだけは出来ていたのだ。

 しかし、10年分のデータ取得の問題点は株式分割が有る確率が高いと言うことだ。

02  そこへ、へたれさんが完璧な形でヤフー時系列データ取得ファイルを送ってくださった。10年分のデータ取得に2分とかからなかった。

 早速、自分流に改良した。3行だけを書き換えれば出来た。ほかを直す必要はないし、深い部分は僕にはわからない。happy0101

          spade

 後はこれを検証シートにつけて、最初のボタンだけで、検証シートの方へ式を壊すことなくデータがコピーされれば良いのである。

 あまりにもスムーズに動くものだから、ステータスバーを見ていないといつ終わったのか分らないぐらいだ。終了すればチャイムで知らせてくれるようにしよう。good

 しかし、ぼくの仕事は雑いというか、詰めが甘いのである。80%出来たらまあ良いかといつもそうなってしまう。gawk

         ********

 本来ならメールでお礼の挨拶をヘたれさんにしなければならないのですが。この本文でどのようにヤフー時系列データ取得ファイルを自分用に改良したか、書いていきますので。それをもって挨拶と代えさせていただきます。

| | コメント (0) | トラックバック (0)

2008年3月 1日 (土)

idou検証シートを整える

 前回の記事の通りに式を入れていくとファイルは次のようになります。

「le-3.xls」をダウンロード

 この状態ではパラメータが離れた所にあるので、それをまとめて、評価欄もまとめてその上でグラフをつけます。少しでも検証作業がスムーズに出来るようにします。

エクセルの練習のために上のファイルを一旦保存し、その上でした記のように式を書き込んだ下さい

          spade

  BE列にパラメータの項目名を入れていきます。BF列にはその数値を入れます。

{セルBE4}・・・短期移動平均 {セルBF4}・・・5

{セルK3}・・・=$BF4       (セルBF4の値がセルK3に入ります。)

          *

{セルBE5}・・・長期移動平均 {セルBF5}・・・11

{セルAF3}・・・=$BF5       (セルBF5の値がセルAF3に入ります。) 

          *

{セルBE6}・・・PS        {セルBF6}・・・-40

{セルAC1}・・・=$BF6      

          *

{セルBE7}・・・LC        {セルBF7}・・・-60

{セルAC2}・・・=$BF7      

          *

{セルBE8}・・・PS        {セルBF8}・・・-12

{セルAN1}・・・=$BF8      

          *

{セルBE9}・・・LC        {セルBF9}・・・0

{セルAN2}・・・=$BF9    

 これで、BF列の値を好きに変える事により結果が変わります。 

cafe ちょっと休憩。

        ********

 システムトレードで必要な物は

1.売買指示シート               (idou20.xls)

2. 検証シート                       (le-4.xls)

3. 検証用データ取得シート

この三つです。

 一応データ取得の方法も過去ログに載せている。ただこれは少し難しい。VBAの知識が要るのだ。

 しかし、多少は簡単にすることも出来る。フォームを使わなくても、直接エクセルのセルに銘柄コード、期間をいれれば出来るのだ。

 無料でデータ取得シートを公開しているサイトってあるのだろうかsign02

 なければ多少時間が掛かっても、自分で作るしかない。ここで大きく差が出るからだ。データ取得シートがなければ、長い期間の検証にデータ取得の部分に時間が掛かる。

 具体的に言えばヤフー時系列から10年間のデータを取得する場合50ページ(2500日分のデータ)をコピーペーストしなければならない。この場合30分は掛かる。(しかし、思ったより早くできた。)

 だが、これで、10銘柄の検証をすれば、データ取得だけで5時間以上はかかる。データ取得シートが有れば1銘柄3分で出来るから10銘柄30分だ。この違いは大きい。

 無料でデータ取得シートを公開しているサイトが有るか調べてみよう・・・・・・・

| | コメント (13) | トラックバック (0)

2008年2月29日 (金)

検証結果の一部

 サインを公開している以上、それらの銘柄に対する過去2年間ぐらいの成績も併せて見てもらうのが筋だと思います。

 今までの検証シートはデータの貼り付けに非常に時間が掛かっていました。そこで、P-100から1枚だけ新しいブックにコピーし、MDD,MDD率、連敗、連勝の項目を付け加えました。これは、今記事で書いているidouの検証への改良をそのままP-100に移しました。

 「le-4.xls」をダウンロード  (これはそのidouです)

 すると、いままでの1/4の速度で検証が出来るようになりました。

 検証にあまりにも時間が掛かると、検証作業が億劫になり、そのため取引機会をなくすと言うことも起こりうります。       

        ********

 システムトレードには以下のような一連の作業が伴います。

 データ取得⇒検証⇒パラメータの決定⇒銘柄の選定⇒数量の割り当て⇒日々のデータ更新とその準備⇒取引の決断(自動でも手動でもどちらでも良い)

 取引の決断に至るまでこれらの作業は必要だし。毎日、日々のデータ更新とその準備の作業はいるのです。だから、これら一つ一つの作業は早いに越したことはありません。

        ********

 検証の結果

 それでこれがこの2年間の検証結果ファイルです。

 「kennsyou-02.xls」をダウンロード

後から気が付いたんだけど、新光証券とアイカが勝率45%で最も悪かった、だから連敗数もやはり7・6と多い。しかしどちらも損益レシオが2.5以上でMDD率と連敗数は比例しないようである。

 MDD率、連勝、連敗から見て良かったのは

            MDD率  連勝  連敗

8186 ケーヨ     7.7%    9    4

5711 マテリアル   8.2%    8    5

9669 オークネット  8.4%    7    4 

 僕にはまだMDD率がどれぐらいなら許されるのか解からないが15%ぐらいが妥当だろうかsign02      連敗数は6まで見ないといけないだろう。

 

| | コメント (0) | トラックバック (0)

2008年2月28日 (木)

idouに連勝・連敗を求める式

 前回の記事で書いた式を入れればファイルは次のようになります。

「le-2.xls」をダウンロード

これに前と同じ様に、下に書いている式を入れてください。

          spade

 これらの式はIF文を使うのですが前回の式より少し複雑になります。

 連勝の条件式

 BA列に連勝数を出す式を入れていきます。

 AS列には損益が入っています。

 考え方はこの様になります。

AS>0なら(勝ちの時)BAは1増えます。AS<0なら(負けの時)BAは0になります。AS=0ならBAは変わりません。

 これをIF文にします。

{セルBA4}・・・ =IF(AS4>0,BA5+1,IF(AS4<0,0,BA5))

 下へコピーしてください。

 連敗の条件式

 BB列に連敗数を出す式を入れていきます。(連勝の式とパターンは同じで不等式の向きを変えて、BAをBBに変えれば出来ます。)

{セルBB4}・・・ =IF(AS4<0,BB5+1,IF(AS4>0,0,BB5))

となります。このIF文の意味は自分で考えてみてください。

 下へコピーしてください。

cafe ちょっと休憩

          spade

 思うに今回の企画は良かった。このIF文も基本的な文だし、BA5+1もプログラムの基礎の基礎だ、美しい条件式だ。

          spade

 後は評価欄を作れば出来上がり

{セルBC1}・・・ 連 勝  {セルBD1}・・・MAX(BA4:BA507)

{セルBC2}・・・ 連 敗  {セルBD2}・・・MAX(BB4:BB507)

結果は5連勝と5連敗でした。

 おわり

| | コメント (0) | トラックバック (0)

2008年2月27日 (水)

idouにDD率を求める列を加える

検証用にidouの銘柄シート1枚を新しいエクセルブックを作りそれにコピーペイストをすれば良いのだが、idouを開いてみると凄く重たい。

 そこで、こちらでそのファイルを用意することにしました。

                      「le-1.xls」をダウンロード

   これを使い、実際にDD率を出す列を作っていきます。

          *

 AS列の式を

=IF(AJ4<>"",AJ4,IF(AO4<>"",AO4,0))

 と変えて下にコピーします。空白のセルに0が入ります。もしも何も変わらなければツール(T)、オプション、計算方法、テーブル以外自動(T)にチェックを入れOKをクリックしてください。

          *

 AW列に(期初株価+現在の利益)を入れます。

{セルAW3}・・・DD用利益

その一番下のセルに

{セルAW507}・・・=$E507

その上のセルに

{セルAW506}・・・=AW507+AS506

これを{セルAW4}まで上にコピーします。

          *

 AX列にはその時の最大値が入ります。

{セルAX3}・・・最大値

{セルAX4}・・・=IF(AW4>AX5,AW4,AX5)

これを下までコピーします。式の意味は(IF文としては基本的な文です。)

AW4>AX5 なら最大値が変わり AW4 違うなら(AW4<AX5なら)変わらず AX5

が{セルAX4}に入ります。

cafe 目が疲れてきたので、ちょっと休憩

          *

 AY列にドローダウンを入れます。

{セルAY4}・・・=AW4-AX4

          *

 AZ列にDD率を入れます。

{セルAZ4}・・・=ABS(AY4/AX4)

セルの書式を%に変えます。ABSは絶対値を出す関数です。

        ********

その評価欄を1行2行に設けます

{セルBA1}・・・MDD  {セルBB1}・・・=MIN(AY4:AY507)

{セルBA2}・・・MDD率  {セルBB2}・・・=MAX(AZ4:AZ507)

           *

 MDD -255    MDD率 6.9%

と言う数字が出れば正解。なんか良さそうな数字だ

 idou20 も捨て堅いなぁー

次回 連敗数、連勝数

| | コメント (0) | トラックバック (0)

2008年2月26日 (火)

DD率の分母を考える。

 今までの僕の検証では、連敗数、連勝数、最大ドローダウン(MDD)、ドローダウン率はあまり見ていなかった。

 連敗数は勝率から大体のことは解かると思った。

 なぜMDDを取り上げていないかと言うと、ドローダウン率の定義が今もって自分には、はっきりしないからです。

 つまり、分母の部分が、

 ・ カブロボコンテストの場合 (5000万+最高利益)

 ・ 資産の最高額        (元金+最高利益)

 ・ 個別株の検証の場合    (期初株価+最高利益)

 ・ 最高利益 (たぶんこれは成り立たない。利益が0の時は無限大になるから)

元金をカブロぼのように決めていたなら、まだ他の人のシステムと比較もできるけど、個別株の検証では元金を100万に設定するのか300万に設定するのかで結果が変わってくる。

 個別株の検証の場合,分母が人によって代わるようでは比較にはならない。だから、まだまだ勉強不足なところわはあるけど、DD率の定義として

 個別株の検証の場合 分母に(期初株価+最高利益)を採用しようと思う。

 DD率の式

DD率=(最高利益-現在利益)/(期初株価+最高利益)

となる。

つづく

次回 これをidouにくみ込む

| | コメント (0) | トラックバック (0)

2007年9月18日 (火)

ミスを見つけて

 売りシステムにミスが見つかりました。そこで応急処置を考えたのですが、売りシステムにミスが有ると言うことは、買いシステムにも同じミスが有ってもよいのに、買いシステムの方にはミスがありませんでした。

 と言うことは買いシステムを売りに変換した時にあることが抜けていたと言うことです。

        *

 そのミスは

 売買サインで見つかりました。タイトなストップをかけた時、ストップ(4)が出た翌日に買戻しの(3)が出てしまいます。それだと2度買うことになってしまいます。

 応急処置ではいけない、これは買いシステムからの変更箇所の見落としです。

        *

 調べ直し、改めて後ほど書きます。

多分、下の式でいけると思います。

売りの売買サイン

{セルX14}・・・=IF(V14="ストップ", IF(V15="",4,1), IF(AND(T14=0,OR(X15=1,X15=4)),2,IF(T14=2,IF(OR(X15=4,X15=0),0,2),IF(T14=0,0,IF(T14=3,IF(X15=4,1,3),1)))))

青い部分を変えました。

| | コメント (0) | トラックバック (0)

2007年6月30日 (土)

Progre02 簡易検証シート まとめ

 今回の簡易Progre02は逆張り1:1 検証シートに対応させるために作りました。内容は従来のProgre02とほぼ同じなのですが取引がサインの出た翌日寄り付きになっています。列位置も変わっています。資金の増減を比較するものではないので取引株数は出ません。手数料も引いていません。

 逆張り1:1 検証シート と共通部分は

A列からJ列、Y列からAD列、評価部分、テーブル、等高線グラフです。

この部分は6月24日の 逆張り1:1 検証シート その1 を見てください。

また Progre02の詳しい内容は過去記事を見てください。だいたい最初の方に大事なことが書いてあると思います。

 今回はProgre02のI列からX列を書きます。Pro101

各項目は図を参照してください。

各セルの式を書いて行きますのでコピー/ペーストしてください。

{セルI14}・・・=MAX(ABS(C14-D14),ABS(C14-E15),ABS(D14-E15))

  これはTR(ボラティリティー)を求める式です。

{セルJ13}・・・パラメータ(j日)(17に固定)

{セルJ14}・・・=AVERAGE(I14:OFFSET(I14,$J$13-1,0))

  TRの平均を求める式です。(移動平均もこの式を使います)

{セルK13}・・・パラメータ(n倍)(自由に変えてください)

  今私はこの数を探しています。(0.1から7.0までの数)

{セルK14}・・・=$J14*$K$13

{セルL13}・・・パラメータ(m倍)(自由に変えてください)

  今私はこの数を探しています。(0.1から7.0までの数)

{セルL14}・・・=$J14*$L$13

{セルM14}・・・=Q14-K14

{セルN14}・・・=IF($E14<M14,"*","")

{セルO14}・・・=R14+L14

{セルP14}・・・=IF($E14>O14,"*","")

{セルQ12}・・・パラメータ(q日)(24に固定)

{セルQ14}・=MAX($C14:OFFSET($C14,$Q$12-1,0))

{セルR12}・・・パラメータ(r日)(30に固定)

{セルR14}・=MIN($D14:OFFSET($D14,$R$12-1,0))

{セルS12}・・・パラメータ(s日)(4に固定)

{セルS14}・=MAX($C14:OFFSET($C14,$S$12-1,0))

{セルT14}・・・=IF(OR(AND($N15="*",$N14=""),AND($P15="",$P14="*")),IF(OR(T15=1,T15=3),1,3),IF(OR(AND($P15="*",$P14=""),AND($N15="",$N14="*")),IF(OR(T15=0,T15=2),0,2),IF(T15=2,0,IF(T15=3,1,T15))))

 この長い条件式は当システムの心臓部分です、この式の説明は4月9日の記事 その3 売買サイン を見てください。

{セルU12}・・・パラメータ(u%)(9.00%に固定)

{セルU14}・・・=IF(T14=1,IF(U15>TRUNC(S14-S14*$U$12),IF(U15="",TRUNC(S14-S14*$U$12),U15),TRUNC(S14-S14*$U$12)),"")

 トレーディングストップの条件式

{セルV14}・・・=IF(AND(T14=1,E14<=U14),"ストップ","")

{セルX14}・・・=IF(V14="ストップ", IF(V15="",4,0), IF(AND(T14=1,OR(X15=0,X15=4)),3,IF(T14=2,IF(OR(X15=4,X15=0),0,2),IF(T14=0,0,IF(T14=3,3,1)))))

 この式がProgre02の売買サインです。上の式にトレーディングストップを付けたものです。

          *

 後は逆張り1:1 検証シート と共通です。是非とも完成してください。

{セルK13}・{セルL13}の値を変えることによって結果が変わるはずです。

自分の監視銘柄に合った値(パラメータ)を探してください。銘柄によってかなり違いが出ます。本にはLCと資金管理.(ポジションサイズの管理)で儲かるように書いてありますが、銘柄選びもかなり重要であるといえます。

 次回 だめな銘柄 (いつもよい成績の銘柄しか書いていませんが、検証していてがっかりさせられる事もあるんですよ。)

| | コメント (2) | トラックバック (0)

2007年6月26日 (火)

逆張り1:1 検証シート その3

 つづき

Ken03 

売買サイン

{セルX14}・・・=IF(S14=4, IF(OR(X15=1,X15=3),4,0), IF(AND(Q14=1,OR(X15=0,X15=4)),3,IF(T14=2,IF(OR(X15=4,X15=0),0,2),IF(Q14=3,3,IF(Q14=1,1,0)))))

 建値

{セルY14}・・・=IF(X15=3,B14,IF(X15=0,"",Y15))

 落値

{セルZ14}・・・=IF(X14=2,V15,IF(X15=4,B14,""))

 損益

{セルAA14}・・・=IF(Z14="","",Z14-Y14)

 累計損益

{セルAB14}・・・=IF(AA14="",AB15,AB15+AA14)

 利益合計

{セルAC14}・・・=IF(AA14>0,AC15+AA14,AC15)

この式であっていると思うのですが、なぜかエラーがでます。それで応急措置で

          =AB15-AD15

を入れて見ました。

 損失合計

{セルAD14}・・・=IF(AA14<0,AD15+AA14,AD15)

          *

システム評価   

{セルY4}・・・累計損益 {セルZ4}・・・=$AB$14   

{セルY6}・勝率 {セルZ6}・=$Z$8/($Z$8+$Z$10)

{セルY8}・・・勝ち   {セルY10}・・・負け

{セルZ8}・・・=COUNTIF($AA$14:$AA$1001,">0")

{セルZ10}・・・=COUNTIF($AA$14:$AA$1001,"<=0")

PF    {セルAB2}・・・=ABS($AC$13/$AD$13)

損益レシオ  {セルAB4}・・・=ABS($AB$8/$AB$6)

平均損失   {セルAB6}・・・=$AD$14/$Z$10

平均利益    {セルAB8}・・・=$AC$14/$Z$8

以上 式は終わり

後は最適化のためのテーブルを作ります。最適化のし方は3/5の記事を見て下さい。

ただ、テーブルを作るとPCが凄く重たくなります。ツール(T)、オプション(O)、計算方法、手動(M)かテーブル以外自動(T)を選択してください。

とにかく検証作業に慣れるだけです。

次回は 売買サインの条件式の説明。

| | コメント (0) | トラックバック (0)

逆張り1:1 検証シート その2

 つづき

売り条件1 ロスカット (4)

{セルS14}・・・=IF(Q14=1,IF(E14<U14,IF(U15="","",4),""),"")

売り条件2 利益確定 (2)

{セルT14}・・・=IF(Q14=1,IF(C14>V14,IF(T15=2,"",2),""),"")

ロスカットの値

{セルU14}・・・=IF(Q14=1,IF(Y14="","",Y14*(1-$U$13)),"")

目標値

{セルV14}・・・=IF(Q14=1,IF(Y14="","",Y14*(1+$V$13)),"")

          *

{セルU13}・・・パラメータ(ストップ率)

{セルV13}・・・パラメータ(目標率)

つづく

| | コメント (0) | トラックバック (0)

2007年6月24日 (日)

逆張り1:1 検証シート その1

 今回の検証シートは上10行を空けて作ります。Ken01

J列までは従来どおりです。

Ken02各項目は図を参照してください。

各セルの式を書いて行きますのでコピー/ペーストしてください。

{セルK13}・・・パラメータ(n日)

{セルK14}・・・=AVERAGE(OFFSET(E14,,,$K$13))

式の説明

OFFSET関数 : E14を基準にして0列$K$13行まで

{セルM14}・・・=(E14-K14)/K14

{セルL14}{セルN14}は今回使いません、内容は上の式と同じで、KをLに変えて下さい。

{セルO13}・・・パラメータ(n%以下)

{セルO14}・・・=IF(M14<$O$13*(-0.01),"*","")

{セルP14}は今回使いません、内容は上の式と同じで、MをNに、OをPに変えて下さい。

{セルQ14}・・・=IF(AND(O14="*",O15=""),IF(Q15=0,3,IF(T15=2,0,1)),IF(OR(Q15=1,Q15=3),IF(T15=2,0,1),0))

式の説明は後ほど。一度試しにコピーしてみてください。まだT列に式を入れてないので、0から3に変わった後1が続くと思います。

つづく

| | コメント (8) | トラックバック (0)

2007年4月23日 (月)

その9.評価 (ほとんど終わり)

 つづき

検証シート全体図(4/6の記事)3番目を参照してください。

 いよいよ最終段階です。

システムの評価

{セルAX15}・・・総損益   {セルAY15}・・・=AL$3-AP740

 (740は列の1番下の行番号)

{セルAX17}・・・総損失   {セルAY17}・・・=AT$3

{セルAX19}・・・総利益   {セルAY19}・・・=AR$3

{セルAX21}・・・総トレード数 

{セルAY21}・・・=COUNTIF(AQ$3:AQ740,"<>0")

{セルAX23}・・・損失トレード数 

{セルAY23}・・・=COUNTIF(AQ$3:AQ740,"<0")

{セルAX25}・・・利益トレード数 

{セルAY25}・・・=COUNTIF(AQ$3:AQ740,">0")

{セルAX27}・・・勝率 

{セルAY27}・・・=$AY$25/$AY$21      (書式を%にしてください)

{セルAX29}・・・平均損益   {セルAY29}・・・=$AY$15/$AY$21

{セルAX31}・・・平均損失   {セルAY31}・・・=$AY$17/$AY$23

{セルAX33}・・・平均利益   {セルAY33}・・・=$AY$19/$AY$25

{セルAX35}・・・最大利益   {セルAY35}・・・=MAX(AQ$3:AQ740)

{セルAX37}・・・最大損失   {セルAY37}・・・=MIN(AQ$3:AQ740)

{セルAX39}・・最大ドローダウン {セルAY39}・・=MIN(AJ$3:AJ740)

{セルAX40}・・・率       {セルAY40}・・・=MAX(AV$3:AV740)

{セルAX41}・・・プロフィットファクター

{セルAY41}・・・=ABS($AY$19/$AY$17)

{セルAX43}・・・シャープレシオ

{セルAY43}・・・=ABS($AY$15/$AY$39)

{セルAX45}・・・損益レシオ

{セルAY45}・・・=ABS($AY$33/$AY$31)

{セルAX47}・・・期待値

{セルAY47}・・・=($AY$33*$AY$27)+($AY$31*(1-$AY$27))

             **********

これぐらいにしておきます。

予定どおりGW前に完成いたしました。これで最適化が行なえます。

最適化は (3月24日の記事) テーブルを使って最適値を探す を見てください。

データの取得は VBAでデータ取得 その1~その6まで読んでください。

そして、出きれば検証用のシートとデータ取得用のシートを1つのブックにしてください。

データ取得用のシートで例えば1000日分のデータを取得します。それを検証用のシートにコピー/ペーストしてください。(これができれば非常に時間の短縮になります)

検証用のシートの前半部分はまったく売買指示シート(Progure02)と同じです。この部分を別のブックにコピーし5銘柄(5シート)ぐらいのブックにしてください。この場合の毎日のデータ取得は (3月2日の記事) クエリを使ってデータ取得  を見てください。(VBAを使う事もできます。ある意味 VBAでデータ取得 の応用で 1ページだけのデータ更新なのでこちらの方が簡単なんです。しかし、クエリは基本的な操作なので、この機会に是非とも収得してください。)

 今まで売買サインの出し方をしつこく提案してきましたが、これは私が独断で決めたルールで今後の成績にはまったく自信がありません。また幼稚でシステムと言うのが恥ずかしいぐらいです。このシートの前半部分を各自で工夫し自分にあった投資ルールを是非とも見つけてください。

 つづく 

| | コメント (0) | トラックバック (0)

2007年4月21日 (土)

その8.ドローダウンの計算

つづき

ドローダウンの計算

 検証シート全体図(4/6の記事)2番目を参照してください。   

{セルAK2}・・・最大累計損益

{セルAK3}・・・=IF(AL3>AK4, AL3, AK4)

{セルAJ2}・・・ドローダウン

{セルAJ3}・・・=AL3-AK3

             ***************

損益の計算

{セルAQ2}・・・損益

{セルAQ3}・・・=IF(OR(AE3=2,AE3=4),AI3*AO3-$AN$1,0)

             ***

{セルAR2}・・・利益合計

{セルAR3}・・・=IF(AQ3>0,AR4+AQ3,AR4)

{セルAS1}・・・勝     {セルAS2}・・・TD日数

{セルAS3}・・・=IF(AND(OR(AE3=2,AE3=4),AQ3>0),AF3,"")

             *** 

{セルAT2}・・・損失合計

{セルAT3}・・・=IF(AQ3<0,AT4+AQ3,AT4)

{セルAU1}・・・負     {セルAU2}・・・TD日数

{セルAU3}・・・=IF(AND(OR(AE3=2,AE3=4),AQ3<0),AF3,"")

                            ***

{セルAV1}・・・ドローダウン     {セルAV2}・・・率

{セルAV1}・・・=ABS(AJ3/AK3)

 これで検証シートの主な式が出来あがりました。これから実際にこれらをコピー/ペーストし上手く行くかテストしてみます。

 最後に各セルの書式を整えてください(AV列は%、マイナスは赤表示とか)

 次回は 評価結果の出力

 

| | コメント (0) | トラックバック (0)

2007年4月20日 (金)

その7.損益曲線の元の式

つづき

 検証シート全体図(4/6の記事)2番目を参照してください。   

{セルAM2}・・・株   

{セルAM3}・・・=IF(AE3=1,E3*AO3,IF(OR(AE3=2,AE3=4),AH3*AO3,AG3*AO3))

 この式は株の評価額

 売買サイン(1)の時  終値*株数

 売買サイン(2)か(4)の時 落値*株数

 売買サイン(0)か(3)の時 建値*株数 (売買サイン(0)の時は建値のセルが0なのでこのセルは0になります。)

            *************

{セルAN2}・・・CP

{セルAN3}・・・=IF(AE3=1,AN4,IF(OR(AE3=2,AE3=4),AN4-$AY$5,AP4-AM3))

 この式は現金の計算

 売買サイン(1)の時 前日と変わらず

 売買サイン(2)か(4)の時 前日の現金-手数料($AY$5) (株を売ったので現金が増えますが、その結果は次の日になります)

 売買サイン(0)か(3)の時 前日の資金-株の評価額

 これをそのままコピー/ペーストしてください。

AJ列からAL列がまだ入ってないので途中から0に成りますよね。

   *************

{セルAL2}・・・累計損益

{セルAL3}・・・=AM3+AN3

これをそのままコピー/ペーストしてください。

下までコピー/ペーストすれば全ての値が出ると思います。

AL列を折れ線グラフにしたものが損益曲線です。

つづく

| | コメント (0) | トラックバック (0)

2007年4月19日 (木)

その6・買い付け株数,資金

つづき

いよいよ検証用の部分に入ります。

 検証シート全体図(4/6の記事)2番目を参照してください。

{セルAO1}・・・買付可能    {セルAO2}・・・株数

{セルAO3}・・・=IF(OR(AE3=1,AE3=2,AE3=4),AO4,IF(AE3=0,0,IF(TRUNC((($AY$12*AP4)/J3)/$AY$4)*$AY$4*AG3>AP4,TRUNC(AP4/(AG3*$AY$4))*$AY$4,TRUNC(($AY$12*AP4/J3)/$AY$4)*$AY$4)))

この式の説明は(4月3日の記事)ポジションサイズのとり方と式の訂正

http://gyutetu.cocolog-nifty.com/blog/2007/04/post_1.html

を見てください。

売買サイン(0)の時は 0

売買サイン(3)の時に 買い付け可能株数が表示されます。(今ある資金を越えないように、またTRUNC関数を使い単位株数以下の端数を切捨てするように。してあります。)

売買サイン(1)(2)(4)の時は 前日の株数と同じ

 AP列の最初(私の場合{セルAP740}3年前)に初期資金1,000,000または(=$AY$3)を入力しておいてください。

 ここからは実際にこのシートが作れるか自分もしながら記事を書いていきます。色々と忘れている事もありますので,思い出しながらの作業になります。

この時点ではまだAO列は0ですよね。

{セルAP2}・・・資金

{セルAP3}・・・=IF(OR(AE3=2,AE3=4),AL3,AP4)

これらの式を直接エクセルにコピー/ペーストして、またそれを下にコピー/ペーストしてくださいね。最初は50行下まででも構いませんよ。その方がテストがし易いかもしれませんね。

まだAJ列からAN列まで式がはいっていないので0のままかもしれませんが、今はそれで問題はないです。

つづく

| | コメント (0) | トラックバック (0)

2007年4月13日 (金)

その5.トレーリングストップ+売買サイン

つづき

検証シート全体図(4/6の記事)2番目を参照してください。

今から書く式の説明は既に売買指示シート作成で書いていますので、そちらを見てください。

{セルAB2}・・・保有期間     (この保有期間は積極型2)

{セルAB3}・・・=IF(OR($AA3=1,$AA3=2),AB4+1,0)

{セルAC1}・・・=$AY$6       {セルAC2}・・・ストップ値

{セルAC1}・・・=IF(AA3=1,IF(AC4>TRUNC(U3-U3*$AY$6),IF(AC4="",TRUNC(U3-U3*$AY$6),AC4),TRUNC(U3-U3*$AY$6)),"")

{セルAD2}・・・ストップ

{セルAD3}・・・=IF(AND(AA3=1,E3<=AC3),"ストップ","")

{セルAE2}・・・売買サイン    (これがProgre02の売買サインです。)

{セルAE2}・・・=IF(AD3="ストップ", IF(AD4="",4,0), IF(AND(AA3=1,OR(AE4=0,AE4=4)),3,IF(AA3=2,IF(OR(AE4=4,AE4=0),0,2),IF(AA3=0,0,IF(AA3=3,3,1)))))

{セルAF2}・・・保有期間P

{セルAF3}・・・=IF(OR($AE3=1,$AE3=2,$AE3=4),AF4+1,0)

{セルAG2}・・・建値P

{セルAG3}・・・=IF($AE3=3,$E3,IF(OR($AE3=1,$AE3=4),AG4,IF($AE3=2,AG4,0)))

{セルAH2}・・・落値P

{セルAH3}・・・=IF(OR($AE3=2,$AE3=4),$E3,"")

{セルAI2}・・・損益P

{セルAI3}・・・=IF(AH3="","",AH3-AG3)

 式ばかりで無味乾燥ですよネ。今日はこれぐらいにしておきます。ここまでは売買指示シートと共通している部分です。次回からが検証シートようの計算式に入ります。

 式の説明も書かねばならないので、ゆっくりと書いていきます。間違いを見つけた方は教えてくださいネ。

つづく

| | コメント (0) | トラックバック (0)

2007年4月10日 (火)

その4.建値・落ち値・損益

 今回入れる式は昨日に入れた積極型2フラッグに基づくもので、検証には直接関係ありません。しかし、ストップ無しでどのような結果になるか、トレーリングストップの有無の結果を比較することが出来ますし、後々なにかに使えると思います。

 それでは入れて行きます。

{セルW2}・・・建値

{セルW3}・・・=IF($AA3=3,$E3,IF(OR($AA3=1,$AA3=2),W4,""))

{セルX2}・・・落ち値    {セルX3}・・・=IF($AA3=2,$E3,"")

{セルY2}・・・損益     {セルY3}・・・=IF(X3="","",X3-W3)

               ************

 この建値、落ち値には問題があります。 システムのようにサインが出てから実際にこのようなところで買えるのか?売れるのか?

 売買のサインにおいてストップの基準はその日の高値、ゴーの基準はその日の安値。一方、建値、落ち値の執行はその日の終値、何か矛盾しているようです。実際の取引では前日のサインを元に寄り付きで注文を出すか、あらかじめどの値を超えればサインが変わるか把握しておいて、逆指値で注文を出しておくか、でしょうね。

 ただ完全自動ではないので、実際の取引はサインが出てから1テンポも2テンポもタイミングがずれます。今後の検証結果と実際の取引の結果との間に違いが出てきますが、そのことも頭に入れておいてください。

 例えば2月末の暴落ですが、暴落前に売りのサインが出ていました。しかし、それは2月27日の引けのことです。サインに気づき,翌2月28日の寄りつきで売れば、とんでもない安値で売ってしまうことになります。ざら場で取引できるのか、寄りつきか,後場寄りつきか,引けで取引できるのか、それは人それどれの状況に依って変わります。システム上はどこか一つに決めなければなりません。とうシステムはこれを終値と決めております。

 10手先を読めとは言いません。持っている株なら、絶えず売りのサインがどのポイントで出るか、1手先ぐらいは読んで行動したいものです。その様な行動をとれば,また準備(心の準備)が出来ていれば、2月27日の引け30分前に売ることも可能になります。

 つづく

| | コメント (0) | トラックバック (0)

2007年4月 9日 (月)

その3.売買サイン(積極型2フラッグ)

 いよいよ,売買フラッグを入れます。とうシステムの心臓部分です。

{セルAA1}・・・積極型2     {セルAA2}・・・フラッグ

{セルAA3}・・・=IF(OR(AND($N4="*",$N3=""),AND($P4="",$P3="*")),IF(OR(AA4=1,AA4=3),1,3),IF(OR(AND($P4="*",$P3=""),AND($N4="",$N3="*")),IF(OR(AA4=0,AA4=2),0,2),IF(AA4=2,0,IF(AA4=3,1,AA4))))

となります。

 また、これをExpect01の{AE列}にコピーすれば、Inspire03になります。その場合AAを全てAEに変えてください。(いつものミスの原因)(いったん上の条件式を{セルAA3}にコピーしそれを{セルAE3}にコピーすれば良いかもしれません)

                 *************

 式の説明

しかし複雑である。自分が作ったのに理解に苦しむ。式を分解して説明してみます。

まず簡単にExcelのIF関数について

=IF(条件、けっか1けっか2

ExcelのIF関数は基本的には上のようになります。条件が真ならけっか1、条件が偽ならけっか2となります。

この式をけっか1けっか2の2つに分けて説明します。

               *************

OR(AND($N4="*",$N3=""),AND($P4="",$P3="*")),IF(OR(AA4=1,AA4=3),1,3),

赤の部分が条件、茶色の部分がけっか1Turi01

 

それでもまだ複雑です。ツリーを書いていて、また簡単に出きることが分かりました、公開するのは修正した式ですが、今できるだけ簡素化しようと努力しています。茶色の部分もORでまとめられるはずなのにそれをすればエラーが出る。これでも間違いではないのでここはこのままにしておきます。(緑の部分けっか2 は出来ているのに,不可解)

分かりましたORでまとめてから括弧を1つ外し忘れていました。長い式になると括弧が多くなって頭が混乱してしまいます。

上の式は修正後のスッキリした式です。綺麗な式になったと思います。(自我自賛)

                **********

 IF(OR(AND($P4="*",$P3=""),AND($N4="",$N3="*")),IF(OR(AA4=0,AA4=2),0,2),IF(AA4=2,0,IF(AA4=3,1,AA4)))

良く見るとけっか2は上で説明した式と同じ構成になっています。

青の部分が条件、緑の部分がけっかです。ここまで来ると説明がつくのは早いです。上のツリーを使えば早く出来ます。Turi02

つづく

次回は  建値・落ち値です。

  これには色々な問題を含んでいます。ブログを書きもって色々と考えていきます。

| | コメント (0) | トラックバック (0)

2007年4月 8日 (日)

その2.元になる数値の式

 全体図(4月6日の記事)の1番目の図を参照してください。

 今回は各パラメータと元になる数値、の箇所を作ります。Expect01と内容は一緒です。違うのは各式の変数をその1で作ったパラメータ(セル)に置き換えている点です。

 H列、I列はExpect01からコピーしてください。

{セルJ2}・・・=$AY$11

{セルJ3}・・・=AVERAGE(I3:OFFSET(I3, $AY$11-1, 0))

{セルK2}・・・=$AY$7      {セルK3}・・・=J3*$AY$7

{セルL2}・・・=$AY$8      {セルL3}・・・=J3*$AY$8

{M列}から{P列}はExpect01からコピーしてください。

{セルQ1}・・・=$AY$9

{セルQ3}・・・=MAX($C3:OFFSET($C3,$AY$9-1,0))

{セルS1}・・・=$AY$10

{セルS3}・・・=MIN($D3:OFFSET($D3,$AY$10-1,0))

{セルU1}・・・=$AY$13

{セルS3}・・・'=MAX($C3:OFFSET($C3,$AY$13-1,0))

ここまでは簡単ですよネ。

 次回は    いよいよProgre02(積極型2)の売買サインの条件式を書きます。見逃さないでくださいネ。

      ちなみにExpect01の売買サインは(積極型1)です。

| | コメント (0) | トラックバック (0)

2007年4月 7日 (土)

その1.パラメータの数値を入れるセル

 全体図の3番目を参照しながら作業を進めてください。(これからの作業は全体図を参照しながら行っていきます。)

{セルAX3}・・・初期資金         {セルAY3}・・・1000000

{セルAX4}・・・単位株数         {セルAY4}・・・1000

{セルAX5}・・・手数料          {セルAY5}・・・1000

{セルAX6}・・・ストップ率         {セルAY6}・・・4%

{セルAX7}・・・ボラ倍率 その1     {セルAY7}・・・3

{セルAX8}・・・ボラ倍率 その2     {セルAY8}・・・2.5

{セルAX9}・・・何日間最大その1     {セルAY9}・・・18

{セルAX10}・・・何日間最小その2    {セルAY10}・・・7

{セルAX11}・・・ATR平均日数      {セルAY11}・・・19

{セルAX12}・・・リスク率          {セルAY12}・・・3.6%

{セルAX13}・・・何日間最大その2    {セルAY13}・・・3

パラメータの項目は以上です。AY列のセルの書式を各自で調整してください。

この下の検証結果の欄は今入れてもエラー表示になりますので後程、随時入れていきます。

つづく

| | コメント (0) | トラックバック (0)

2007年4月 6日 (金)

検証シート全体図

今までも部分的に検証シートならびに検証作業を見ていただいたのですが。

 今日は検証シートの全体を見てもらおうと思います。

Excel01 Excel02

Excel03 Excel04

 これが1枚のシートになっていて(Expect01,Progre02,Inspire03の3枚)、これにデータ取得用のシート、検証結果記録用のシートで1つのブックになっています。

 これから上の2番目の部分、損益曲線や検証に必要な数値を出すための計算式を書いていきます。(どの式から書いたらよいのだろうか悩む・・・一晩考えれば何とかなるだろう、  一休み)

 ところが昨日売買サインのミスに気づきました。(訂正済み)ここでしかりと式の列位置、セル位置を決めておかないとまた同じミスをしてしまう。上の検証シートはProgre02で、Expect01と配列が少し違います。なんとかして、どれかに統一しなければブログと僕のシートと違いが出来同じようなミスが起こる可能性が出てきます。悩む・・・・

 ここで各列の式を全部一覧にしてお見せするのが1番楽なのですが。ブログの構成上まだそれは出来ません。この一連の記事を書き終えた段階で、今までの式を全部一覧にしたいと思います。ですから今は少しのミスには目をつぶっていただいて先に進めていきます。

 良く考えてみますと,検証ブックは売買指示シートとは別に作らなければなりませんから。Progre02に統一して新たに書いていくことにします。大サービスでProgre02の売買サインも書きます。今後、完全にExpect01からProgre02に移行していきます。

 その方がブログも読みやすくなるであろうし、私も記事が書きやすいし、性も無いミスもなくなるし、実戦に集中できるし、良い事ばかりであります。

つづく

| | コメント (0) | トラックバック (0)