前回、トレシズ氏の移動平均乖離率(出来高)を「TIlib.pt」で実現しました。
【引用】坂本タクマ「全シ連」第33話「シストレ界の名医ドクタートレシズ登場!さぁオオウチを治療しよう」 (2016.10.31)
因みに、この漫画にサラッと書いてあるけど、レベル高い人だな。
ブログもシストレに関して毎日書いてるね。真面目だから?
- 作った手法は数千個
- 2016年が+30%
- 売りをやるようになって成績が安定した
- ヘッジとして必ず売りポジションを持つようにしている
- ドローダウンが深いほど、どんどん仕掛ける
- 一つの戦略を数千回~1万回検証している
まぁ、作った手法を販売して儲けているっぽいし、イザナミ使えばバックテストは早いからなぁ・・・。
・・・・・。
私のやり方じゃぁ一生追いつけない気がするが、30%の利益は目指したい。
・・・、因みにこの漫画は2013年から今でも続いている。
なぜ、当時、および2年前に気づかなかったのだろうか・・・・。
先月偶然に他のサイトのブログの紹介で見つけました・・・・・。
トレシズ氏の移動平均乖離率(出来高)手法の有効性検証
もう一度、まとめると次のようになります。
【買いルール】
- 1) 移動平均乖離率(出来高)(50日)が5より大きい
- 2) 移動平均乖離率(終値)(25日)が0より小さい
【手仕舞いルール】
- 1) 翌日売り
ソースコード
その上で、ソースコードは次のようになります。
Utility、TrendCheckライブラリはGitHubに置いています(日記の公開日に合わせたバージョンを利用下さい)
また、前回の移動平均乖離率(出来高)を「TIlib.pt」に追記する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" //============================== // トレシズ氏の移動平均乖離率(出来高)の有効性検証 //============================== // // 下記のルールに従い、移動平均乖離率(出来高)が大きい順に仕掛ける // // 【買いルール】 // 1) 移動平均乖離率(出来高)(50日)が5より大きい // 2) 移動平均乖離率(終値)(25日)が0より小さい // 3) 当日終値が100円以上 // //【手仕舞いルール】 // 1) 翌日売り codes = CodeList if $code_num && $code_num != Length(codes) Print("前回と異なる銘柄リストでは実行できません。") Dummy end $code_num = Length(codes) //グローバル変数を初期化 if ! ($__INIT__) $budgetIni = 10000000 $budget = $budgetIni // 投資総額 (1000万円) $buyUnit = 1000000 // 1回の購入資金 (100万円) $shortSelling = 0 // 空売り戦略 Yes(1)/No(0) $MaxHoldDay = 0 // 最大保有日数 $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 1 // 購入順序 昇順(0) / 降順(1) $ratiodate = 0 // 騰落レシオ日数 //------------------------------------------------ $DiffV = [$code_num] $Diff = [$code_num] //------------------------------------------------ Init() $__INIT__ = 1 end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ! ($order[(int)Code]) $order[(int)Code] = i end if ! ($DiffV[i] && $Diff[i]) //銘柄ごとのグローバル変数を初期化する $DiffV[i] = DiffVolumeMA_new(50) $Diff[i] = DiffMA_new(25) $hold[i] = 0 return end //指標の計算を1日進める DiffVolumeMA_next($DiffV[i]) DiffMA_next($Diff[i]) //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) diffv = DiffVolumeMA_value($DiffV[i]) diff = DiffMA_value($Diff[i]) if ! (diffv && diff && Close) return end // 4) 当日終値が100円以上 if ! (Close >= 100) return end // 1) 移動平均乖離率(出来高)(50日)が5より大きい // 2) 移動平均乖離率(終値)(25日)が0より小さい if (diffv > 5 && 0 > diff) $buyflag[i][0] = 1 $buyflag[i][1] = diffv $buyCnt = $buyCnt + 1 end //================================================== // 保有している→売却 //================================================== elsif ($hold[i]) if ($set[i] < 1) $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== // 1) 買い付けた日から1日が経過 if ($set[i] >= $MaxHoldDay) PrintLog("売り") $sellflag[i] = 1 $set[i] = 0 end end end //==================== // 翌日売り処理 //==================== def Sell_2(i) if ($sellflag[i]) SellingOpen(i,1) $sellflag[i] = 0 end end //==================== // 買い処理 //==================== def SortBuy(i) if (PricedataExistCheck(Close)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] Buying(codeset) end //==================== // 銘柄コードを変えながらMain関数,BuySell関数を実行 //==================== Print("-------------------------------------------------") Print("日付 = "+ Year + "/" + Month + "/" + Day) SortInit() // ソート初期化 i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Main(i) end i = -1 while i + 1 < $code_num i = i + 1 {codes[i]}Sort(i) end i = -1 if ($buyCnt) while i + 1 < $buyCnt i = i + 1 {$sortList2[i]}SortBuy(i) end end i = -1 while i + 1 < $code_num i = i + 1 {codes[i]}Sell_2(i) end |
バックテスト結果
シグナル数が多いので、日経225採用銘柄でバックテストを行いました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
株価データ: 日足 銘柄リスト: 日経225採用銘柄 1998/01/05~における成績です。 ---------------------------------------- 全トレード数 17263 勝ちトレード数(勝率) 8475(49.09%) 負けトレード数(負率) 8788(50.91%) 全トレード平均利率 0.15% 勝ちトレード平均利率 2.81% 負けトレード平均損率 -2.42% 勝ちトレード最大利率 55.88% 負けトレード最大損率 -100.00% 全トレード平均期間 2.98 勝ちトレード平均期間 2.97 負けトレード平均期間 2.98 ---------------------------------------- 必要資金 ¥9,725,800 最大ポジション(簿価) ¥9,996,000 最大ポジション(時価) ¥11,967,700 純利益 ¥23,472,200 勝ちトレード総利益 ¥212,353,000 負けトレード総損失 -¥188,880,800 全トレード平均利益 ¥1,360 勝ちトレード平均利益 ¥25,056 負けトレード平均損失 -¥21,493 勝ちトレード最大利益 ¥570,000 負けトレード最大損失 -¥964,500 プロフィットファクター 1.12 最大ドローダウン(簿価) -¥5,444,300 最大ドローダウン(時価) -¥5,530,000 ---------------------------------------- 現在進行中のトレード数 12 ---------------------------------------- 平均年利 12.07% 最大連勝 14回 最大連敗 12回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2000年 879回 ¥7,236,000円 74.40% 55.06% 1.64倍 -22.86% 2001年 894回 ¥1,617,400円 16.63% 53.47% 1.12倍 -100.00% 2002年 880回 ¥3,849,200円 39.58% 53.18% 1.37倍 -20.95% 2003年 865回 ¥3,792,300円 38.99% 57.57% 1.46倍 -27.47% 2004年 880回 ¥650,400円 6.69% 53.41% 1.08倍 -31.88% 2005年 888回 ¥3,546,100円 36.46% 58.67% 1.74倍 -8.40% 2006年 904回 ¥1,711,900円 17.60% 52.88% 1.21倍 -13.69% 2007年 924回 ¥207,500円 2.13% 49.46% 1.02倍 -12.57% 2008年 893回 -¥3,316,800円 -34.10% 47.48% 0.83倍 -21.63% 2009年 851回 ¥1,859,600円 19.12% 51.94% 1.17倍 -30.61% 2010年 866回 -¥580,700円 -5.97% 50.81% 0.93倍 -12.20% 2011年 853回 -¥2,864,900円 -29.46% 48.30% 0.76倍 -25.34% 2012年 856回 ¥812,400円 8.35% 53.39% 1.09倍 -17.79% 2013年 839回 ¥1,959,500円 20.15% 54.35% 1.23倍 -14.62% 2014年 882回 ¥931,400円 9.58% 51.93% 1.12倍 -9.43% 2015年 910回 ¥1,144,000円 11.76% 54.62% 1.13倍 -14.16% 2016年 883回 ¥1,261,600円 12.97% 51.87% 1.14倍 -16.84% 2017年 908回 ¥840,800円 8.65% 51.32% 1.13倍 -12.98% 2018年 920回 -¥1,449,400円 -14.90% 49.46% 0.86倍 -16.51% 2019年 488回 ¥263,900円 2.71% 48.57% 1.05倍 -10.51% |
利益曲線は次のとおりです。
平均年利が12.07%と低めです。最大ドローダウンは-100%・・このままでは使えません。
ただ近年も利益増加しているので、新たな指標としては役に立つかもしれません。
まとめ
「TIlib.pt」に実装を追加し、バックテストをできることを確認しました。
完全に、目的を失ってます。
これぐらいの100行プログラミングは日曜大工に丁度良いから、ついつい作ってしまいます。
ただし、私のシステムトレードのスキルは上がりません。
そもそも、protraを改良することは、スマートテレビの時代にアナログテレビを改良していることと同じです。
仕組みが分からないと使えないからと、アナログテレビにネットの機能を追加しようとしている事に等しいです。
なんだかな・・・。