以前「シストレ魂」が終了すると紹介した。
が、なんと2022/04/16 Ver2.0.01 よりフリーソフト&東証新市場区分(東証P, 東証S, 東証G, 東証他)対応になったらしい。
2022/04/16 Ver2.0.01
・フリーソフト化
・東証新市場区分(東証P, 東証S, 東証G, 東証他)対応
・チャートビューの拡大縮小ボタンを長押しでRepeatに変更
・チャートビューの左右移動ボタン追加
・引け前売買指示機能の無効化
・自動発注ツール「発注魂」の無効化
やった~~!
早速インストールして起動!
株価データが無料じゃなかった……
とはいえ、もともとシストレ魂購入を検討していた人には朗報なのかな。
日本人は特に朝イチで買う傾向がある。
そのため、朝高めになり日中はダラダラ下げるパターンを描くことが多い。
……と、他のサイトに書いてあった。
- システムトレードで年収2000万
- 株の引けで買って翌日の寄りで売ると儲かるときは凄い儲かる時ありますけど、これって…
- 寄り付きパターン別のデイトレ戦略を検証
- 寄り付きギャップアップ狙いの手法とは?自分独自のGU方法論を探す
ヘッジファンドの先輩もそんなこと言ってた気がするなー。
だったらOSS のProtraで引き続きバックテストやってみよーー。
なお、Protraも2.6にて 4月16日版でプライム市場、スタンダード市場、グロース市場などへ対応された。
僕らのProtraはいつまでも現役!そして僕のパッチを適用するとよりハッピーになるよ。
寄り売り、引け買いの期待値検証
全銘柄でバックテストしても資金的な問題がある。
そんな時、西村剛氏の公開しているストラテジーを発見。
下記の手順で毎日トレードを行うらしい。
- 1. 前日の上昇率が高い順に5銘柄選択する
- 2. 運用資金を5分割し、選択した銘柄をすべて寄付きで空売りする
- 3. 空売りした銘柄を引けで買い戻す
これなら、簡単!
売買ルールは次のとおり。
【基本条件】
- 1) 初期費用 800万円
- 2) 単利運用
- 3) 現物取引:1銘柄当たり仕掛け金額50万円
- 4) 売り
【売りルール】
次を満たす場合に、ランキングに従い翌日寄り付きで売り
- 前日の上昇率上位5位
【手仕舞いルール】
- 購入日の終値で手仕舞い(デイトレード)
本来は1銘柄上限50万円で5銘柄しか購入しないので250万円を資金にしたら良い。
Protraは「同日で同一売買ができない」ために売りと手仕舞いの日を別々の日にしているため、シュミレーションの都合上800万円と適当に置いた。
バックテスト結果
バックテスト時間は貸借銘柄で16分。
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 |
株価データ: 日足 銘柄リスト: 貸借 2000/01/05~2022/04/18における成績です。 ---------------------------------------- 全トレード数 26308 勝ちトレード数(勝率) 14144(53.76%) 負けトレード数(負率) 12164(46.24%) 全トレード平均利率 0.48% 勝ちトレード平均利率 4.30% 負けトレード平均損率 -3.96% 勝ちトレード最大利率 50.00% 負けトレード最大損率 -120.00% 全トレード平均期間 1.55 勝ちトレード平均期間 1.57 負けトレード平均期間 1.53 ---------------------------------------- 必要資金 ¥2,970,500 最大ポジション(簿価) ¥4,092,700 最大ポジション(時価) ¥4,244,800 純利益 ¥64,671,400 勝ちトレード総利益 ¥283,282,000 負けトレード総損失 -¥218,610,600 全トレード平均利益 ¥2,458 勝ちトレード平均利益 ¥20,028 負けトレード平均損失 -¥17,972 勝ちトレード最大利益 ¥250,000 負けトレード最大損失 -¥599,400 プロフィットファクター 1.30 最大ドローダウン(簿価) -¥1,528,700 最大ドローダウン(時価) -¥1,528,700 ---------------------------------------- 現在進行中のトレード数 5 ---------------------------------------- 平均年利 94.66% 平均年利(直近5年) 39.13% 最大連勝 20回 最大連敗 28回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2022年 339回 -¥445,700円 -15.00% 56.64% 0.87倍 -120.00% 2021年 1171回 ¥568,800円 19.15% 55.59% 1.06倍 -38.39% 2020年 1180回 ¥2,206,200円 74.27% 58.98% 1.23倍 -31.52% 2019年 1174回 ¥2,321,300円 78.15% 60.05% 1.29倍 -33.48% 2018年 1181回 ¥1,161,900円 39.11% 57.75% 1.15倍 -26.47% 2017年 1203回 ¥2,232,600円 75.16% 60.93% 1.26倍 -32.17% 2016年 1203回 ¥2,669,400円 89.86% 62.51% 1.29倍 -37.50% 2015年 1188回 ¥2,187,600円 73.64% 59.85% 1.25倍 -39.73% 2014年 1209回 ¥6,721,600円 226.28% 65.92% 1.79倍 -24.89% 2013年 1207回 ¥4,501,400円 151.54% 65.12% 1.34倍 -44.12% 2012年 1237回 ¥4,297,500円 144.67% 66.45% 1.37倍 -50.00% 2011年 1205回 ¥4,520,600円 152.18% 66.31% 1.43倍 -100.00% 2010年 1195回 ¥1,566,000円 52.72% 65.52% 1.14倍 -100.00% 2009年 1190回 ¥4,498,600円 151.44% 63.78% 1.37倍 -50.00% 2008年 1196回 ¥2,439,000円 82.11% 62.88% 1.20倍 -100.00% 2007年 1171回 ¥3,929,600円 132.29% 62.68% 1.43倍 -34.41% 2006年 1163回 ¥3,133,500円 105.49% 62.68% 1.42倍 -28.80% 2005年 1158回 ¥3,145,400円 105.89% 62.87% 1.37倍 -61.60% 2004年 1186回 ¥4,082,200円 137.42% 66.10% 1.45倍 -52.97% 2003年 1172回 ¥2,424,400円 81.62% 64.33% 1.22倍 -46.24% 2002年 1167回 ¥3,244,900円 109.24% 64.10% 1.35倍 -66.67% 2001年 1141回 ¥889,800円 29.95% 61.52% 1.08倍 -52.08% 2000年 1072回 ¥2,374,800円 79.95% 63.81% 1.25倍 -45.59% |
利益曲線は次のとおり。
おお!
単調上昇じゃん!!
ツールの都合上できないと思って確認してなかったストラテジーに勝利ポイントがあったわ。
でも、売買頻度が高いな……そして今年は負けてる。
まとめ
デイトレードの場合「売り」から入ったほうが有利
といわれるのは、この結果から来ているらしい。
メインで稼ぐシステムは寄り売り、引け買いがよさそうね。
ただし、勝率を54~55%まで上げるようなフィルター(他のシグナル)を見つけて運用する必要はありそうだ。
ソースコード
バックテストには無料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 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" // ====================================== // 寄りで売って引けに買い戻す // ====================================== // //下記の手順で毎日トレードを行う // 1) 前日の上昇率が高い順に5銘柄選択する // 2) 運用資金を5分割し、選択した銘柄をすべて寄付きで空売りする // 3) 空売りした銘柄を引けで買い戻す codes = CodeList if ($code_num && $code_num != Length(codes)) Print("前回と異なる銘柄リストでは実行できません。") Dummy end $code_num = Length(codes) //グローバル変数を初期化 if (!$__INIT__) $budgetIni = 8000000 $buyUnit = 500000 // 1回の購入資金 (50万円) $MaxHoldDay = 0 // 最大保有日数(営業日) $shortSelling = 1 // 空売り戦略 Yes(1)/No(0) $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 1 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 Init() //------------------------------------------------ //------------------------------------------------ InitDone() // 騰落レシオ初期化 $__INIT__ = 1 end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ($order[(int)Code] == -1) $order[(int)Code] = i $hold[i] = 0 end //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) if ! (Close && Open) return end //================================================== // 売買(買い) //================================================== // 1) 前日の上昇率が高い順に5銘柄選択する flag = (float)(Close - Open) / Open * 100 if (1) $buyflag[i][0] = 1 $buyflag[i][1] = flag $buyflag[i][2] = 1 $buyCnt = $buyCnt + 1 end //================================================== // 保有している→売却 //================================================== elsif ($hold[i]) if ($set[i] < 1) $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== if ($set[i] >= $MaxHoldDay) $sellflag[i] = 1 $set[i] = 0 end end end //==================== // 買い処理 //==================== def SortBuy() if ! (HasPricedata({1}Open)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] Buying(codeset) end //==================== // 売り処理(デイトレ模倣) //==================== def Sell_(i) if (HasPricedata(Open)) if ($sellflag[i]) if ({-1}Close) SellingLimitedPrice(i, 0, {-1}Close) else PrintLog("売れない") end $sellflag[i] = 0 $buyflag[i][2] = 0 end // 使用した$buyflag 配列を初期化 if ($buyflag[i][0]) $buyflag[i][0] = 0 $buyflag[i][1] = 0 end 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(5, 0) cnt = $buyCnt if ($buyCnt > 5) cnt = 5 end while i < cnt {sortList[i]}SortBuy() i = i + 1 end end //---------------------------------------------- i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Sell_(i) end |