「虫コナーズ」のようなベランダなどに吊り下げ商品が対象としている害虫は
ユスリカとチョウバエ
だけだ。
分かっていても
蚊やショウジョウバエにも効くに違いない
という僅かばかりの期待を胸に購入し続けていた時代があった。
ユスリカは、釣りのエサとして使われる赤虫の成体の呼称。
ユスリカはヒトや動物の血を吸わないし、そんなに家に入ってくる事自体が無いと思う。
チョウバエは家で見かけることがあるけど、
「毎年暖かい時期になるとチョウバエが発生して困ってしまう」
という人は、日々の浴槽などの清掃方法や退治の仕方に問題がある。
どちらにせよ、外からの侵入が問題じゃないだろう。
蚊にはこちらがオススメ。
これを網戸に使うのではなく、網戸用のスプレーは薬剤が長期間残留するように作られてるのでこれを応用する。
玄関などの扉や窓、その他隙間の周囲に吹きつける(屋外側)。
また、扉や窓の枠を囲むように幅30cm以上でぐるりと吹きつける。
これで外から侵入できないようバリアを形成する。
……
昔、5ちゃんねる(旧:2ちゃんねる)で流行したテンプレね。
以前「コナーズは虫が来ないか?」というネタをオモコロでやっていた。
でも、使った商品は100均だし、前述通り蚊には効かない。
なのに「虫が来なかった」とか……もうね調査が適当すぎる。
コナーズRSIを利用した新高値トレードの期待値検証
ローレンス・A・コナーズの「恐怖で買って、強欲で売る短期売買法」という本で紹介されているトレード手法
を読んでないから中身を知らないが、それをベースに紹介されている手法が次だ。
【買いルール】
- 1) 20日間の平均出来高が100万以上
- 2) 株価が500円以上
- 3) 直近20営業日以内に52週高値を更新した
- 4) コナーズRSIが15以下
- 1),2), 3), 4) の条件を満たした状態で前日終値から、安値が7%以上下落したら引けで買う
【手仕舞いルール】
- 引けでコナーズRSIが( 70 or 80 )以上になったら手仕舞いする
実際にバックテストを一年行った結果が載っていた。
本に記載されている米国株の検証結果が平均損益率4.1%なので、日本株のほうが良い結果
- シグナル発生数:12回
- 平均損益率:7.62%
- 勝率:75%
- 平均保有日数:4.08日
勝率75%は魅力的。
そして私にとっては「52週高値を更新」というのが新しい概念だ。
なお、「引け」で買うため、実運用するなら常に場中の値動きをウォッチする必要がある。
使ってる人いるのかなーー。
バックテスト結果
バックテスト計算時間は売買代金上位500位だけでも2時間。
全銘柄でバックテストしても「平均出来高が100万以上」の条件で大型株のみになるので変わらない。
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 |
株価データ: 日足 銘柄リスト: 売買代金上位500位 2000/01/07~2021/05/26における成績です。 ---------------------------------------- 全トレード数 110 勝ちトレード数(勝率) 73(66.36%) 負けトレード数(負率) 37(33.64%) 全トレード平均利率 1.96% 勝ちトレード平均利率 5.60% 負けトレード平均損率 -5.23% 勝ちトレード最大利率 16.39% 負けトレード最大損率 -21.94% 全トレード平均期間 10.37 勝ちトレード平均期間 8.66 負けトレード平均期間 13.76 ---------------------------------------- 必要資金 ¥2,563,000 最大ポジション(簿価) ¥2,979,200 最大ポジション(時価) ¥3,013,300 純利益 ¥820,600 勝ちトレード総利益 ¥1,661,300 負けトレード総損失 -¥840,700 全トレード平均利益 ¥7,460 勝ちトレード平均利益 ¥22,758 負けトレード平均損失 -¥22,722 勝ちトレード最大利益 ¥102,000 負けトレード最大損失 -¥94,200 プロフィットファクター 1.98 最大ドローダウン(簿価) -¥323,000 最大ドローダウン(時価) -¥655,200 ---------------------------------------- 現在進行中のトレード数 0 ---------------------------------------- 平均年利 1.78% 平均年利(直近5年) -1.86% 最大連勝 10回 最大連敗 4回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2021年 2回 -¥4,600円 -0.18% 50.00% 0.52倍 -2.53% 2020年 8回 -¥87,400円 -3.41% 62.50% 0.51倍 -21.29% 2018年 13回 -¥185,600円 -7.24% 30.77% 0.20倍 -21.94% 2017年 4回 -¥700円 -0.03% 50.00% 0.98倍 -5.30% 2016年 4回 ¥40,100円 1.56% 50.00% 2.54倍 -4.06% 2015年 11回 ¥217,400円 8.48% 90.91% 46.29倍 -1.10% 2014年 6回 ¥110,600円 4.32% 83.33% 5.07倍 -6.88% 2013年 5回 ¥32,000円 1.25% 60.00% 1.91倍 -5.44% 2011年 8回 ¥35,200円 1.37% 62.50% 1.58倍 -9.55% 2010年 5回 ¥43,400円 1.69% 80.00% 1.82倍 -11.64% 2008年 2回 ¥80,800円 3.15% 100.00% ∞倍 0.00% 2007年 13回 ¥18,400円 0.72% 46.15% 1.17倍 -5.96% 2006年 8回 ¥148,700円 5.80% 75.00% 4.87倍 -7.58% 2005年 1回 ¥12,600円 0.49% 100.00% ∞倍 0.00% 2004年 7回 ¥54,000円 2.11% 71.43% 2.80倍 -3.62% 2003年 6回 ¥140,000円 5.46% 83.33% 42.18倍 -1.13% 2001年 3回 ¥85,600円 3.34% 100.00% ∞倍 0.00% 2000年 4回 ¥80,100円 3.13% 100.00% ∞倍 0.00% |
利益曲線は次のとおり。
2017年までは単調上がりのストラテジーだったようだ。
ただ、ドローダウンが大きい。
まとめ
もし2017年前にこのストラテジーに出会っていたら、騰落レシオなどと組み合わせドローダウンの軽減をした上で運用していたに違いない。
トレード数は少ないが、副ストラテジーとして使うと考えていると安定しており魅力的だ。
それにしても2017年~2020年の下がり方は異常だな。
「黒田総裁下で2021年5月は初の月間ETF購入ゼロ」だったようだし、今後は再度動作するようになるのかな。
日本株保有者として最大になった日銀の存在が市場の価格形成をゆがめ、コーポレートガバナンス(企業統治)改善の妨げになってきたとして、投資家は今回の日銀の動きを歓迎している。
投資家も同じ意見だわ。
毎年そうだけど、そろそろバックテストに飽きてきた。
ネタも無いわ……。
ソースコード
バックテストには無料OSSの「Protra」を利用した。
TIlib、Utility、TrendCheck、TOPIXライブラリはGitHubに置いている。
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 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" //========================================== // コナーズRSI // // 1) 20日間の平均出来高が100万以上 // 2) 株価が500円以上 // 3) 直近20営業日以内に52週高値を更新した // 4) コナーズRSIが15以下 // 5) 1,2,3,4の条件を満たした状態で前日終値から、安値が7%以上下落したら引けで買う // 6) 引けでコナーズRSIが( 70 or 80 )以上になったら手仕舞いする // //========================================== codes = CodeList if ($code_num && $code_num != Length(codes)) Print("前回と異なる銘柄リストでは実行できません。") Dummy end $code_num = Length(codes) //グローバル変数を初期化 if (!$__INIT__) $budgetIni = 3000000 $buyUnit = 500000 // 1回の購入資金 (50万円) $MaxHoldDay = 1 // 最大保有日数 $shortSelling = 0 // 空売り戦略 Yes(1)/No(0) $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 0 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 Init() //------------------------------------------------ $RSI = [$code_num] $ROC = [$code_num] //------------------------------------------------ InitDone() // 騰落レシオ初期化 $__INIT__ = 1 end def URSI_value(date) // ① RS = (n日間のと騰落数の上昇幅の平均) ÷ (n日間の騰落数の下落幅の平均) // ② RSI = 100 - (100 ÷ (RS+1) ) i = 0 upDay = 0 downDay = 0 upSteak = 0 downSteak = 0 while (i + 1 <= date) if ! ({-1 * i - 1}Close && {-1 * i}Close) return 1000 end if ({-1 * i - 1}Close < {-1 * i}Close) upDay = 1 else upDay = 0 end if ({-1 * i - 1}Close > {-1 * i}Close) downDay = -1 else downDay = 0 end upSteak = upSteak + upDay downSteak = downSteak + downDay i = i + 1 end // RS = (n日間の騰落数の上昇幅の平均) ÷ (n日間の騰落数の下落幅の平均) if (downSteak != 0) // Print("hoge :" + upSteak + " hage:" + downSteak + " date:" + date) rs = ((float)upSteak / date ) / ((float)downSteak / date) // RSI = 100 - (100 ÷ (RS + 1) ) if (rs + 1 != 0) // Print(rs) return 100 - 100 / (rs + 1) else return 0 end else return 1000 end end // date日間の平均出来高 def AveVolume(date) i = 0 totalVol = 0 while (i + 1 <= date) totalVol = totalVol + {-1 * i}Volume i = i + 1 end return totalVol / date end // 過去num日以内にdate日間の高値を超えた def CheckPastHigh(date, num) i = 1 high = {-1}High tmpNum = date while (i < date) if ({-1 * i}High > high) tmpNum = i high = {-1 * i}High end i = i + 1 end return (num >= tmpNum) end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ($order[(int)Code] == -1) $order[(int)Code] = i end if ! ($ROC[i] && $RSI[i]) //Tilibのオブジェクト生成 $RSI[i] = RSI_new(3, 0) $ROC[i] = ROC_new(100) //銘柄ごとのグローバル変数を初期化する $hold[i] = 0 return end //指標の計算を1日進める ROC_next($ROC[i]) RSI_next($RSI[i]) //================================================== // 保有している(追加購入)&していない(新規購入) //================================================== if (! $hold[i] || $hold[i]) if ! (Close) return end roc = ROC_value($ROC[i]) rsi = RSI_value($RSI[i]) ursi = URSI_value(2) if ! (rsi && roc) return end csri = ((float)ursi + rsi + roc) / 3 //================================================== // 売買(買い) //================================================== // 1) 20日間の平均出来高が100万以上 flag1 = AveVolume(20) * 1000 > 1000000 // 2) 株価が500円以上 flag2 = Close >= 500 // 3) 直近20営業日以内に52週(300日)高値を更新した flag3 = CheckPastHigh(300, 20) // 4) コナーズRSIが15以下 flag4 = 15 >= csri if (flag1 && flag2 && flag3 && flag4) // 5) 1,2,3,4の条件を満たした状態で前日終値から、安値が7%以上下落したら引けで買う PrintLog("買い候補") $buyflag[i][0] = Close * 0.93 $buyflag[i][1] = rsi $buyflag[i][2] = 1 $buyCnt = $buyCnt + 1 end end //================================================== // 保有している&本日同一銘柄の買いシグナルが出ていない //================================================== if ($hold[i] && ! $buyflag[i][0]) if ($set[i] < 1) $set[i] = 1 return end $set[i] = $set[i] + 1 roc = ROC_value($ROC[i]) rsi = RSI_value($RSI[i]) ursi = URSI_value(2) if ! (rsi && roc) return end csri = ((float)ursi + rsi + roc) / 3 //================================================== // 売買(売り) //================================================== // 6) 引けでコナーズRSIが( 70 or 80 )以上になったら手仕舞いする flag1 = csri >= 70 if (flag1) PrintLog("利益確定") $sellflag[i] = 1 $set[i] = 0 end end end def CheckHighLow2(t) t = Yobine(t, 0) if ! ({1}High > t && t > {1}Low) return 0 end return 1 end //================================================== // 買い(前日終値から、安値が7%以上下落したら引けで買う) //================================================== def Buying2(i) if (HasPricedata({1}Open)) t = 0 if ($buyflag[i][0]) t = CheckHighLow2($buyflag[i][0]) end if (t) BuyingLimitedPrice(i, 1, {1}Close) end end end //==================== // 買い処理 //==================== def SortBuy() if ! (HasPricedata({1}Open)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] Buying2(codeset) end //==================== // 売り処理 //==================== def Sell_(i) if ($sellflag[i]) // 当日のCloseで売る Selling(i) $sellflag[i] = 0 $buyflag[i][2] = 0 end // 使用した$buyflag 配列を初期化 if ($buyflag[i][0]) $buyflag[i][0] = 0 $buyflag[i][1] = 0 end end //==================== // 銘柄コードを変えながらMain関数,BuySell関数を実行 //==================== Print("-------------------------------------------------") Print("日付 = "+ Year + "/" + Month + "/" + Day) $buyCnt = 0 // 購入数初期化 i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Main(i) end i = 0 if ($buyCnt) sortList = SelectionSort($buyCnt, 0) while i < $buyCnt {sortList[i]}SortBuy() i = i + 1 end end //---------------------------------------------- i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Sell_(i) end |