相場師朗氏は、早稲田大学卒、元外資系銀行で為替のディーラーです。複数の会社も経営しています。
最近は、セミナーだけでなく、書籍、メディアの露出が増えてきました。
詳細は、株は技術だ! (うねり取り手法:相場師朗氏編)に記載しています。
相場師朗氏は「うねり取り」をメインとした講座を開いていますが、元祖・林輝太郎氏の場帳/玉帳を使った方法とは大きく違います。
元来の「うねり取り」は、チャートだけをみて自分の感覚を頼りに、建玉の操作を行いながら株取引を繰り返します。
一方、相場氏は、5日線、20日線、60日線、100日線、300日線の5本の移動平均線を使用して、移動平均線の重なり具合を頼りに株取引を行います。
※2018年5月29日の「ラジオNIKKEIの株塾」で、3日線、10日線の移動平均線が増えました。
チャートの上げ・下げシグナルに名前をつけ分かりやすく解説するため、株初心者が飛びつきセミナーは大反響です。
【過去記事】相場師朗氏の「くちばし」「パンパカパン」の有効性検証(protraシストレ)
相場師朗氏の「下半身(半分の法則)」
「半分の法則」とは、5日線の下で推移していたローソク足が下げ止まり、5日線が横ばいになり、陽線で半分以上5日線の上に出たら買いエントリーする方法です。
※上ヒゲ、下ヒゲは無視しても良い。
このシグナルが出ているときは、相場氏は上昇に転じると説明しています。
相場師朗氏の「下半身(半分の法則)」の有効性を検証する
上記のロジックを次のように定義しました。
【買いルール】
下記に該当する場合には、翌日の寄付きで購入する。
- 5日線が横バイもしくは上向きに転じた(=1日前の5日線が当日の5日線と同じか下)
- 陽線のローソク足が体半分以上5日線の上に突き抜けた(=同様)
- 「半分の法則(下半身)」発生前、ローソク足は5日線下で推移している(=3日前、1日前の始値・終値が5日線より下)
【手仕舞いルール】
- 含み益が10%を上回った
- 購入してから営業日で10日経った
ソースコード
「グコウログ」のゴクウ氏のProtraのソースコードが秀逸なので、それをベースにコードを書いています。
「Utility.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 |
//================================================== // 株数 //================================================== def Num(buyUnit,price) unit = Unit2(price) return (buyUnit / (unit * price)) * unit end //================================================== // データの有無を確認 //================================================== def PricedataExistCheck(data) return !data //存在する場合 0を返す end //================================================== // 買い(共通条件) //================================================== def Buying(i) if 0==PricedataExistCheck({1}Open) BuyingOpen(i,1) else if 1==PricedataExistCheck({2}Open) BuyingClose(i,0) else BuyingOpen(i,2) end end end //================================================== // 売り(共通条件) //================================================== def Selling(i) if 0==PricedataExistCheck({1}Open) SellingOpen(i,1) else if 1==PricedataExistCheck({2}Open) SellingClose(i,0) else SellingOpen(i,2) end end end //================================================== // 終値買い //================================================== def BuyingClose(i,d) //資金が不足している場合は何もしない if $long == 0 return end //予算を超えない場合だけ買う if $long * {d}Close <= $budget if $Interest == 1 || $Interest == 2 $budget = $budget - $long * {d}Close end $hold[i] = $long $buy[i] = {d}Close {d}Buy(Close, $hold[i]) $set[i] = 0 else PrintLog("予算を超過しています") end end //================================================== // 始値買い //================================================== def BuyingOpen(i,d) //資金が不足している場合は何もしない if $long == 0 return end //予算を超えない場合だけ買う if $long * {d}Open <= $budget if $Interest == 1 || $Interest == 2 $budget = $budget - $long * {d}Open end $hold[i] = $long $buy[i] = {d}Open {d}Buy(Open, $hold[i]) $set[i] = 0 else PrintLog("予算を超過しています") end end //================================================== // 終値売り //================================================== def SellingClose(i,d) {d}Sell(Close, $hold[i]) if $Interest == 2 $budget = $budget + {d}Close * $hold[i] elsif $Interest == 1 $budget = $budget + $buy[i] * $hold[i] end $hold[i] = 0 end //================================================== // 始値売り //================================================== def SellingOpen(i,d) {d}Sell(Open, $hold[i]) if $Interest == 2 $budget = $budget + {d}Open * $hold[i] elsif $Interest == 1 $budget = $budget + $buy[i] * $hold[i] end $hold[i] = 0 end |
売買ロジック部分のコードは次のようになります。
今回の手法確認のためであれば、こんなに大掛かりである必要はありません。
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 161 162 163 |
# loop-type: date-only //============================== require "TIlib" require "Utility" //============================== // 相場師朗の移動平均線:「下半身」の有効性 //------------------------------ // // 【買いルール】 // 1) 1日前の5日線が当日の5日線と同じか下 // 2) 陽線のローソク足が体半分以上5日線の上に突き抜けた // 3) 3日前、1日前の始値・終値が5日線より下 // // 【手仕舞いルール】 // 1) 含み益が10%を上回った // 2) 購入してから営業日で10日経った 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万円) $MaxHoldDay = 10 // 最大保有日数 $Interest = 0 // 無制限(0) / 単利(1) / 複利(2) //------------------------------------------------ $set = [$code_num] $buy = [$code_num] $hold = [$code_num] //------------------------------------------------ $MA5 = [Length(CodeList)] $MA5_1 = [Length(CodeList)] $MA5_3 = [Length(CodeList)] // 値上がり銘柄のカウント ------------------------ $buyflag = [$code_num] $cnt = 0 $__INIT__ = 1 end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ! $MA5[i] //Tilibのオブジェクト生成 $MA5[i] = MA_new(5) $MA5_1[i] = {-1}MA_new(5) $MA5_3[i] = {-3}MA_new(5) //銘柄ごとのグローバル変数を初期化する $hold[i] = 0 return end //指標の計算を1日進める MA_next($MA5[i]) MA_next($MA5_1[i]) MA_next($MA5_3[i]) ma5 = MA_value($MA5[i]) ma5_1 = MA_value($MA5_1[i]) ma5_3 = MA_value($MA5_3[i]) // 指標の計算に必要な日数を経過していない場合は何もしない if ! (ma5_3 && ma5_1 && ma5) return end // ここまで ======================================== if 1==PricedataExistCheck(Close) return end //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) // 3) 3日前、1日前の始値・終値が5日線より下 if ({-1}Close <= ma5_1 && {-1}Open <= ma5_1 && {-3}Close <= ma5_3 && {-3}Open <= ma5_3) //================================================== // 売買(買い) //================================================== // 1) 1日前の5日線が当日の5日線と同じか下 // 2) 陽線のローソク足が体半分以上5日線の上に突き抜けた if (ma5_1 <= ma5 && Close > ma5 && ma5 > Open && Open + (Close - Open)/2 > ma5) $long = 0 $long = Num($buyUnit,Close) $buyflag[i] = 1 end end //================================================== // 保有している→売却 //================================================== elsif $hold[i] if $set[i] < 1 $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== // 1) 利食い:含み益が10%を上回った if (Close >= 1.10 * $buy[i]) PrintLog("利食い") $sellflag[i] = 1 $set[i] = 0 // 2) 損切り:購入してから営業日で10日経った elsif ($set[i] > $MaxHoldDay) $sellflag[i] = 1 $set[i] = 0 end end end //==================== // 売買関数 //==================== def BuySell(j) if PricedataExistCheck(Close) return end if $buyflag[j] $long = 0 $long = Num($buyUnit,Close) Buying(j) $buyflag[j] = 0 elsif $sellflag[j] Selling(j) $sellflag[j] = 0 end end //==================== // 銘柄コードを変えながらMain関数,BuySell関数を実行 //==================== i = -1 j = -1 while i + 1 < $code_num i = i + 1 {codes[i]}Main(i) end while j + 1 < $code_num j = j + 1 {codes[j]}BuySell(j) end // 最後に$cntを0に戻し次の日に進める $cnt=0 // PrintLog("=======>END ") |
バックテスト結果
銘柄リストは相場師朗の「うねり投資」オススメの「JPX400」で、1998/01/05~2019/06/14における成績です。
次に、売買の詳細です。
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 |
株価データ: 日足 銘柄リスト: JPX400 1998/01/05~2019/06/14における成績です。 ---------------------------------------- 全トレード数 4406 勝ちトレード数(勝率) 2237(50.77%) 負けトレード数(負率) 2169(49.23%) 全トレード平均利率 0.40% 勝ちトレード平均利率 5.69% 負けトレード平均損率 -5.06% 勝ちトレード最大利率 69.92% 負けトレード最大損率 -39.64% 全トレード平均期間 15.99 勝ちトレード平均期間 15.33 負けトレード平均期間 16.66 ---------------------------------------- 必要資金 ¥32,026,800 最大ポジション(簿価) ¥51,954,500 最大ポジション(時価) ¥52,388,400 純利益 ¥17,584,600 勝ちトレード総利益 ¥117,302,400 負けトレード総損失 -¥99,717,820 全トレード平均利益 ¥3,991 勝ちトレード平均利益 ¥52,437 負けトレード平均損失 -¥45,974 勝ちトレード最大利益 ¥774,000 負けトレード最大損失 -¥388,600 プロフィットファクター 1.18 最大ドローダウン(簿価) -¥7,124,200 最大ドローダウン(時価) -¥7,467,200 ---------------------------------------- 現在進行中のトレード数 5 ---------------------------------------- 各年毎の利益額 2000年 194 ¥652,300 2001年 229 -¥786,900 2002年 188 -¥2,706,500 2003年 234 ¥6,138,300 2004年 238 ¥3,444,100 2005年 279 ¥6,030,600 2006年 193 ¥1,324,900 2007年 174 -¥867,900 2008年 151 -¥2,791,400 2009年 220 -¥1,133,600 2010年 217 -¥63,000 2011年 260 -¥862,300 2012年 301 ¥3,378,400 2013年 268 ¥5,770,700 2014年 253 ¥425,600 2015年 251 ¥2,457,200 2016年 227 ¥1,052,600 2017年 279 -¥545,700 2018年 179 -¥2,015,800 2019年 71 -¥1,317,000 |
プロフィットファクターは1を超えてますが、これは当たり前として、ドローダウンが大きすぎです。
まとめ
巷では「勝率75%」と大人気な指標ですが結果は微妙です。近年は負ける一方です。
セミナー紹介料欲しさのサイト管理人が、数名柄で適当に調べただけなので、このような結果になります。
チャートトレンドは各年同じではありません。
そして、銘柄毎にも特徴があります。
直近では「アインHD(9627)」の2019年5月のチャートなどを見ると、ナイアガラが起きてしまいます。
これで、今年の利益の大半を持っていかれます。
相場師朗氏は「もし自分の考えが下目線でも、この下半身が出たら、とりあえず買いなさい」と言っているほど信用できる技になります。
by 相場師朗の秘技!やはり下半身は低リスク・ハイリターン!!
・・・エントリーポイントしては、必ずしも優秀とは言えません。
バックテストを実施していない、オーバーフィッティングな指標には注意しましょう。
【追記2020.07.10】
ツイッターに下記のように書かれているので追加の確認をしました。
ちょっと調べてて見つけたから反論
相場先生は1日200万株の銘柄を推奨してます
理由は、出来高が少ない銘柄だと、誰かが株価操作をしようと思ったら簡単にできるため統計外な動きをするから
にも関わらず、出来高7万しかない株で検証してうまくいかないとか言ってる
【買いルール】
下記に該当する場合には、翌日の寄付きで購入する。
- 5日線が横バイもしくは上向きに転じた(=1日前の5日線が当日の5日線と同じか下)
- 陽線のローソク足が体半分以上5日線の上に突き抜けた(=同様)
- 「半分の法則(下半身)」発生前、ローソク足は5日線下で推移している(=3日前、1日前の始値・終値が5日線より下)
-
出来高が200万円/日以上
【手仕舞いルール】
- 含み益が10%を上回った
- 購入してから営業日で10日経った
バックテスト結果
サマリーは次の通りです。
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 |
銘柄リスト: JPX400 1998/01/05~2020/07/06における成績です。 ---------------------------------------- 全トレード数 1790 勝ちトレード数(勝率) 910(50.84%) 負けトレード数(負率) 880(49.16%) 全トレード平均利率 0.39% 勝ちトレード平均利率 6.36% 負けトレード平均損率 -5.79% 勝ちトレード最大利率 38.18% 負けトレード最大損率 -49.04% 全トレード平均期間 15.58 勝ちトレード平均期間 14.73 負けトレード平均期間 16.46 ---------------------------------------- 必要資金 ¥8,921,100 最大ポジション(簿価) ¥9,990,500 最大ポジション(時価) ¥10,666,000 純利益 ¥7,223,700 勝ちトレード総利益 ¥54,173,700 負けトレード総損失 -¥46,950,000 全トレード平均利益 ¥4,036 勝ちトレード平均利益 ¥59,532 負けトレード平均損失 -¥53,352 勝ちトレード最大利益 ¥378,000 負けトレード最大損失 -¥446,600 プロフィットファクター 1.15 最大ドローダウン(簿価) -¥3,470,300 最大ドローダウン(時価) -¥3,550,000 ---------------------------------------- 現在進行中のトレード数 4 ---------------------------------------- 平均年利 3.86% 平均年利(直近5年) 5.29% 最大連勝 8回 最大連敗 9回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2020年 37回 -¥124,700円 -1.40% 51.35% 0.91倍 -25.56% 2019年 77回 ¥953,600円 10.69% 68.83% 1.81倍 -14.64% 2018年 85回 -¥28,200円 -0.32% 56.47% 0.98倍 -14.50% 2017年 100回 ¥54,300円 0.61% 53.00% 1.03倍 -9.76% 2016年 102回 ¥1,504,000円 16.86% 58.82% 1.69倍 -21.55% 2015年 121回 ¥85,700円 0.96% 52.07% 1.04倍 -23.96% 2014年 110回 -¥139,700円 -1.57% 42.73% 0.95倍 -17.88% 2013年 99回 ¥3,204,900円 35.92% 63.64% 2.54倍 -28.28% 2012年 119回 ¥291,400円 3.27% 47.06% 1.09倍 -19.49% 2011年 93回 -¥171,200円 -1.92% 50.54% 0.94倍 -49.04% 2010年 81回 -¥598,800円 -6.71% 41.98% 0.72倍 -18.40% 2009年 98回 ¥246,500円 2.76% 41.84% 1.08倍 -20.00% 2008年 98回 -¥1,297,100円 -14.54% 45.92% 0.74倍 -40.20% 2007年 108回 -¥337,200円 -3.78% 45.37% 0.89倍 -22.82% 2006年 85回 ¥978,800円 10.97% 60.00% 1.50倍 -31.31% 2005年 91回 ¥865,600円 9.70% 57.14% 1.50倍 -30.66% 2004年 76回 ¥530,300円 5.94% 48.68% 1.27倍 -25.00% 2003年 57回 ¥1,520,300円 17.04% 57.89% 2.40倍 -9.91% 2002年 62回 -¥490,200円 -5.49% 43.55% 0.79倍 -21.15% 2001年 52回 ¥772,200円 8.66% 55.77% 1.47倍 -21.33% 2000年 39回 -¥596,800円 -6.69% 48.72% 0.65倍 -38.18% |
利益曲線は次の通りです。
ソースコード含めて公開済なので、疑問があれば指摘せずに実験してみたら良いと思うけどなー、ひとりごと。