私のブログの人気ランキング。
圧倒的に
システムトレード
バックテスト結果は皆さん興味あるんだね。
よーし、だったら僕 期待に答えちゃうよ。
今回は、新しい指標使った手法のバックテストをやってみるよ!!!
(c) 鳥山明/ドラゴンボール
ちょwwお前言うな。でもぐうの音も出ない。
色々と試行錯誤して文章を面白く書いているものの皆さん興味なく、単にコードと結果だけ求めてるっぽい……。
2年前に投稿されているストラテジーを見つけた。
良心的なサイトだなーー。
2019年でサイト更新止まってるけどさ。
【新規建て】
- 日経平均の移動平均25日線が上向き
- かつ、過去50日間の押しが30%以内である
- かつ、終値が過去50日間の高値より大きい
【決済】
- 利益が15%以上
- もしくは、保有日数が120日以上
- 損切りは-10%
保有日数が120日以上……って、ドローダウンに耐えられないよ。
18年間で取引回数363回って……少なすぎ。
というのが所感。そして最初は実装が簡単に見えた。
●120日で決済する理由
これは消極的な決済のために使います。株価がヨコヨコになった結果、一年近く保有を続けるケースが散見されます。これを防止するための時限的な措置で、別に120日でも75日でも構いません。
●取引回数が少ない理由
一つの理由は、イザナミで暗黙的に定義された条件があるためです。
・売買代金が少ないときは取引しない
・ストップ高、ストップ安で取引しない
ただ、大きな理由は「資産曲線を描くときは10銘柄までしか投資しない」というルールを設けているからです。
平均3%儲かるブレーク法のルール
上記のサイトにはイザナミでの実現方法も明記されていた。
【仕掛け】
- 1) [日経平均の25日線(集計した銘柄数)]が[0]より[大きい]
- 2) 過去[50]日間に、[終値]が[フィボナッチ押し(50,30.0)]より[小さい]日が[1]日以上[存在しない]
- 3) [終値]が[期間高値(高値)(50)(1日前)]より[大きい]
- 4) [期間高値更新日数(50)]が[2]より[小さい]
- 5) [翌日寄付]で[買い]を仕掛ける
【手仕舞い】
- 1) [終値]が[建て値(+15.00%)]より[大きい]
- 1.1) [翌日逆指(終日)][保有期間高値(高値)-ATRのn倍(30,3.00)]で手仕舞いする
- 2) [保有日数]が[120]より[大きい]
- Yes) [翌日寄付]で手仕舞いする
- No) [翌日逆指(終日)][建て値(-10.00%)]で手仕舞いする
【集計条件】
- 1) [移動平均(終値)(25)]が[移動平均(終値)(25)(1日前)]より[大きい]
- 2) 集計する
知らない言葉が幾つか出てきたな……。
日経平均の25日線(集計した銘柄数)とは
調べたところ(日経平均の)25日移動線が前日より高い場合に集計を行うというシステムらしい。
判定が〇であれば集計結果は「1」、そうでなければ「0」を返す。
これはイザナミの独自用語だ。
期間高値更新日数とは
「期間高値更新日数」とはイザナミ公式サイトに次のように書いてある。
日数がゼロであれば、高値は更新していないと判断し、日数が1以上であれば高値更新中だと判断します。
高値圏かどうかを簡単に判断するために利用します。
これは直接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 |
# HL Band def HLBand_new(days) obj = [9] obj[0] = null // previous high obj[1] = null // current high obj[2] = null // previous low obj[3] = null // current low obj[4] = null // previous mid obj[5] = null // current mid obj[6] = {-1}HighLow_new(days) obj[7] = 0 // 期間高値更新日数 obj[8] = 0 // 期間安値更新日数 obj[1] = HighLow_high(obj[6]) obj[3] = HighLow_low(obj[6]) if obj[1] && obj[3] obj[5] = (obj[1] + obj[3]) / 2 end return obj end def HLBand_next(obj) HighLow_next(obj[6]) obj[0] = obj[1] high = HighLow_high(obj[6]) if (obj[1] && high > obj[1]) obj[7] = obj[7] + 1 elsif (obj[1] && obj[1] > high) obj[7] = 0 end obj[1] = HighLow_high(obj[6]) obj[2] = obj[3] low = HighLow_low(obj[6]) if (obj[3] && obj[3] > low) obj[8] = obj[8] + 1 elsif (obj[3] && low > obj[3]) obj[8] = 0 end obj[3] = HighLow_low(obj[6]) obj[4] = obj[5] if obj[1] && obj[3] obj[5] = (obj[1] + obj[3]) / 2 end end def HLBand_draw(obj, high, low, mid) if obj[0] != null && obj[1] != null DrawLine(high, {-1}X, obj[0], X, obj[1]) end if obj[2] != null && obj[3] != null DrawLine(low, {-1}X, obj[2], X, obj[3]) end if obj[4] != null && obj[5] != null DrawLine(mid, {-1}X, obj[4], X, obj[5]) end end |
最高値の日付が指定の期間を超えると、一旦ゼロにリセットされる。
ただし指定期間を超えても最高値を更新中であれば、指定期間以上の数値が返ってくる可能性がある。
仕様としてはイマイチだけど「期間高値更新日数」を取得する役割は果たしていると思ってる。
フィボナッチ(febonatch)数とは
「フィボナッチ押し/戻し」という言葉が出てきた。
イザナミの解説は次の通り。
【 [期間高値]-[(期間高値と期間安値の差)×[押し目比率]] 】
フィボナッチ数とは、61.8:38.2の比率を意味し、黄金分割比率とも呼ばれます。
フィボナッチ数は、イタリアの数学者レオナルド・フィボナッチ(1170年頃 – 1250年頃)に因んで名付けられた数だ。
こんなの一度は見たことあるよね?
このフィボナッチ数列の中に現れる不思議な比率のことを
「フィボナッチ比率(Fibonacci Ratio)」
という。
さらに「フィボナッチ比率」に基づいたテクニカル指標を
「フィボナッチ・リトレイスメント」
と呼ぶ。
逆張り売買法などで実は超有名なのね。
「フィボナッチ・リトレイスメント」では、フィボナッチ比率に基づいた23.6%、38.2%、50%、61.8%及び100%の水準がよく用いられる。
オカルトそのものじゃん!
なんで株価の上下が数学式で求まるんだよww
人間の心は数学式で解けるのかよ!
RSIやらMACD知っても、このような気持ちにならなかったが、なんだろう この無理矢理感……。
フィボナッチ押しを使っている理由は、単に押しの表現が楽になるからです。
単純に安値~高値の押しが30%であれば、別にフィボナッチトレースメント使わなくてOKです。
トレーリングストップとは
マーケットが有利に変動した際、指定した「ストップレート」と「マーケット価格」の差を維持しながら、自動的に「ストップレート」を更新する機能。
簡単にいえば、相場に強い下落が起きた場合には利益確定してしまうというルール。
これをATRを使って実現したようだ。
ATRとは、真の値幅の期間平均(単純移動平均)の値を指します。
真の値幅とは、下記3つの中の最大値を指します。
(1)当日高値-当日安値
(2)当日高値-前日終値
(3)前日終値-当日安値
「n=1.0」の場合はマイナス符号の1 ATRです。
例えば
1.1) [翌日逆指(終日)][保有期間高値(高値)-ATRのn倍(30,3.00)]で手仕舞いする
に関しては次のように解釈できる。
翌日逆指(終日)で、-3ATR(30日間)で手仕舞う
実装して独自変更した部分
過去[50]日間に、[終値]が[フィボナッチ押し(50,30.0)]より[小さい]日が[1]日以上[存在しない]
……がよく分からなかった。
これ、ほぼ何の銘柄ヒットしないよね?いや、実際にしなかったし。
参照ページに書かれている図のようなチャートの形でも抽出されないんじゃないの?
この図の赤丸部分は「押し30%以内」に入ってないじゃん。
仕方ないので、フィボナッチ押しの範囲を50日ではなく20日としてみた。
うーん、大丈夫かな。これ……。
これはイザナミ語なので難解なのですが、日本語訳すると「終値が50日間連続で高値30%圏内にある」という話になります。30%圏内の定義は「(高値ー安値)×0.30」です。高値・安値は変化するので、逐次計算が必要です。
バックテスト結果
計算時間は東証一部だけで3時間。ソートの高速化を行わなければ4時間。
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 |
株価データ: 日足 銘柄リスト: 東証1部 2000/04/20~2020/01/17における成績です。 ---------------------------------------- 全トレード数 117 勝ちトレード数(勝率) 61(52.14%) 負けトレード数(負率) 56(47.86%) 全トレード平均利率 4.75% 勝ちトレード平均利率 16.58% 負けトレード平均損率 -8.14% 勝ちトレード最大利率 101.03% 負けトレード最大損率 -36.15% 全トレード平均期間 87.39 勝ちトレード平均期間 111.28 負けトレード平均期間 61.38 ---------------------------------------- 必要資金 ¥1,989,200 最大ポジション(簿価) ¥2,919,900 最大ポジション(時価) ¥3,118,900 純利益 ¥2,591,300 勝ちトレード総利益 ¥4,469,500 負けトレード総損失 -¥1,878,200 全トレード平均利益 ¥22,148 勝ちトレード平均利益 ¥73,270 負けトレード平均損失 -¥33,539 勝ちトレード最大利益 ¥443,200 負けトレード最大損失 -¥116,200 プロフィットファクター 2.38 最大ドローダウン(簿価) -¥335,700 最大ドローダウン(時価) -¥604,100 ---------------------------------------- 現在進行中のトレード数 0 ---------------------------------------- 平均年利 6.86% 平均年利(直近5年) 9.80% 最大連勝 11回 最大連敗 7回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2020年 1回 ¥159,200円 8.00% 100.00% ∞倍 0.00% 2018年 1回 -¥34,500円 -1.73% 0.00% 0.00倍 -9.24% 2017年 13回 ¥799,000円 40.17% 84.62% 13.37倍 -8.86% 2016年 9回 -¥21,500円 -1.08% 44.44% 0.84倍 -10.01% 2015年 1回 ¥73,000円 3.67% 100.00% ∞倍 0.00% 2014年 8回 ¥234,700円 11.80% 75.00% 5.31倍 -8.74% 2013年 3回 ¥212,200円 10.67% 66.67% 8.19倍 -8.98% 2012年 8回 ¥326,100円 16.39% 87.50% 8.17倍 -9.67% 2011年 10回 -¥87,600円 -4.40% 40.00% 0.63倍 -36.15% 2010年 7回 -¥11,100円 -0.56% 28.57% 0.93倍 -10.00% 2009年 8回 -¥86,800円 -4.36% 25.00% 0.57倍 -10.09% 2008年 13回 ¥539,100円 27.10% 15.38% 2.57倍 -10.13% 2007年 6回 ¥1,100円 0.06% 33.33% 1.02倍 -8.00% 2006年 2回 -¥73,300円 -3.68% 0.00% 0.00倍 -8.41% 2005年 1回 ¥43,000円 2.16% 100.00% ∞倍 0.00% 2004年 9回 -¥35,300円 -1.77% 44.44% 0.87倍 -23.18% 2003年 4回 ¥237,900円 11.96% 100.00% ∞倍 0.00% 2001年 10回 ¥292,600円 14.71% 70.00% 4.13倍 -10.00% 2000年 3回 ¥23,500円 1.18% 33.33% 1.34倍 -10.00% |
利益曲線は次のとおり。
グラフの形はオリジナルのサイトの画像に似てる気がする。
と思ったけど、比べてみると全然違う。
全トレード平均利率は3%でなく4%になった。これは許容範囲。
取引回数は全く違う……。オリジナルは日経平均関連銘柄だけ使って363回の取引を行ってる。
フィボナッチ押しの実装を変えたのが原因だと思うが、イザナミの詳細仕様が分からないので実装できない。
これだけ似たグラフになったら良いんじゃない?一週間悩んだよ……。
この手法は、高値を更新した際に買い、高値で決済する順張り。
順張り手法は少ないから、この実装は参考になるかもしれない。
スイングトレードの場合
一週間だけ保有の手法に変えてバックテストを実施してみた。
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 |
全トレード数 131 勝ちトレード数(勝率) 65(49.62%) 負けトレード数(負率) 66(50.38%) 全トレード平均利率 0.72% 勝ちトレード平均利率 4.36% 負けトレード平均損率 -2.86% 勝ちトレード最大利率 16.67% 負けトレード最大損率 -9.27% 全トレード平均期間 7.16 勝ちトレード平均期間 7.15 負けトレード平均期間 7.17 ---------------------------------------- 必要資金 ¥2,812,700 最大ポジション(簿価) ¥2,971,400 最大ポジション(時価) ¥3,064,700 純利益 ¥497,500 勝ちトレード総利益 ¥1,265,300 負けトレード総損失 -¥767,800 全トレード平均利益 ¥3,798 勝ちトレード平均利益 ¥19,466 負けトレード平均損失 -¥11,633 勝ちトレード最大利益 ¥80,000 負けトレード最大損失 -¥45,000 プロフィットファクター 1.65 最大ドローダウン(簿価) -¥124,900 最大ドローダウン(時価) -¥154,900 ---------------------------------------- 現在進行中のトレード数 0 ---------------------------------------- 平均年利 0.98% 平均年利(直近5年) 0.35% 最大連勝 5回 最大連敗 5回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2019年 1回 ¥4,000円 0.14% 100.00% ∞倍 0.00% 2018年 1回 ¥3,900円 0.14% 100.00% ∞倍 0.00% 2017年 12回 -¥4,000円 -0.14% 41.67% 0.95倍 -9.27% 2016年 10回 ¥22,400円 0.80% 50.00% 1.38倍 -8.42% 2014年 3回 ¥23,400円 0.83% 100.00% ∞倍 0.00% 2013年 11回 ¥152,600円 5.43% 54.55% 4.10倍 -4.41% 2012年 8回 ¥72,800円 2.59% 87.50% 29.00倍 -0.55% 2011年 21回 ¥28,400円 1.01% 38.10% 1.22倍 -4.59% 2010年 7回 ¥35,700円 1.27% 57.14% 1.83倍 -3.88% 2009年 3回 -¥15,100円 -0.54% 66.67% 0.23倍 -3.92% 2008年 18回 -¥2,800円 -0.10% 44.44% 0.98倍 -8.70% 2007年 4回 ¥28,600円 1.02% 50.00% 2.81倍 -5.60% 2006年 5回 -¥59,000円 -2.10% 60.00% 0.21倍 -9.09% 2004年 10回 ¥19,500円 0.69% 60.00% 1.28倍 -8.70% 2003年 2回 ¥36,000円 1.28% 50.00% 2.80倍 -4.85% 2002年 2回 ¥600円 0.02% 50.00% 1.38倍 -0.33% 2001年 8回 ¥98,900円 3.52% 50.00% 3.27倍 -7.55% 2000年 5回 ¥51,600円 1.83% 60.00% 4.91倍 -2.32% |
利益曲線は次のとおり。
うーん利益率が低すぎる。
順張りだし保有期間を伸ばさきゃ駄目か……。
ただ120日保有は長いわーーー。
心理的に耐えれないし資金効率が悪い。
まとめ
今回は久しぶりに手強い相手だった。
「オラ強いやつ見るとワクワクすっぞ!」
……。
……。
あれ?バックテストしているのって、そもそも何が目的だっけな……?
ソースコード
バックテストには無料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 282 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" // ====================================== // 平均3%儲かるブレーク法 // ====================================== // // 【仕掛け】 // // 1) [日経平均の25日線(集計した銘柄数)]が[0]より[大きい] // 2) 過去[50]日間に、[終値]が[フィボナッチ押し(50,30.0)]より[小さい]日が[1]日以上[存在しない] // 3) [終値]が[期間高値(高値)(50)(1日前)]より[大きい] // 4) [期間高値更新日数(50)]が[2]より[小さい] // 5) [翌日寄付]で[買い]を仕掛ける // // 【手仕舞い】 // // 1) [終値]が[建て値(+15.00%)]より[大きい] // 1.1) [翌日逆指(終日)][保有期間高値(高値)-ATRのn倍(30,3.00)]で手仕舞いする // 2) [保有日数]が[120]より[大きい] // Yes) [翌日寄付]で手仕舞いする // No) [翌日逆指(終日)][建て値(-10.00%)]で手仕舞いする // // 【集計条件】 // // 1) [移動平均(終値)(25)]が[移動平均(終値)(25)(1日前)]より[大きい] // 2) 集計する 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 = 100 // 最大保有日数 $shortSelling = 0 // 空売り戦略 Yes(1)/No(0) $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 1 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 Init() //------------------------------------------------ $HLB = [$code_num] $ATR = [$code_num] //------------------------------------------------ InitDone() // 騰落レシオ初期化 $__INIT__ = 1 end //過去[num]日間に、[終値]が[フィボナッチ押し]より[小さい]日が[1]日以上[存在しない] //フィボナッチ = [期間高値]-[(期間高値と期間安値の差)×[押し目比率]] def Febonatch(i, num, rate) j = 0 sum = 0 cnt = 0 while (j >= -1 * num) if ! ({j}Close) return 0 end if (($HLB[i][1] - Abs($HLB[i][1] - $HLB[i][3]) * rate / 100) > {j}Close) return 0 end j = j - 1 end return 1 end // 保有期間高値 def HoldPeriodH(num) high = High i = 0 while (i >= -1 * num) if ! ({i}High) return high end if ({i}High > high) high = {i}High end i = i - 1 end return high end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ! ($order[(int)Code]) $order[(int)Code] = i end if ! ($ATR[i]) //Tilibのオブジェクト生成 $HLB[i] = HLBand_new(50) $ATR[i] = ATR_new(30) //銘柄ごとのグローバル変数を初期化する $hold[i] = 0 return end //指標の計算を1日進める HLBand_next($HLB[i]) ATR_next($ATR[i]) //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) if ! ($HLB[i][1] && $HLB[i][3] && $ATR[i] && Close) return end //================================================== // 売買(買い) //================================================== // 2) 過去[50]日間に、[終値]が[フィボナッチ押し(50,30.0)]より[小さい]日が[1]日以上[存在しない] check1 = Febonatch(i, 20, 30.0) // 3) [終値]が[期間高値(高値)(50)(1日前)]より[大きい] check2 = Close > {-1}$HLB[i][1] // 4) [期間高値更新日数(50)]が[2]より[小さい] check3 = 2 > $HLB[i][7] if (check1) if (check2 && check3) PrintLog("購入予定") $buyflag[i][0] = 1 // 購入フラグ $buyflag[i][1] = 1 // ソート無し $buyflag[i][2] = 1 // 売却フラグ(2日後の寄付) $buyCnt = $buyCnt + 1 end end //================================================== // 保有している→売却 //================================================== elsif ($hold[i]) if ($set[i] < 1) $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== // [終値]が[建て値(+15.00%)]より[大きい] if (Close >= 1.15 * $buy[i]) // 1.1) [翌日逆指(終日)][保有期間高値(高値)-ATRのn倍(30,3.00)]で手仕舞いする atr = ATR_value($ATR[i]) if ! (atr) return end high = HoldPeriodH($set[i]) high = high - 3 * atr PrintLog("利食い 額 = " + high) $sellflag[i] = high // 2) [保有日数]が[120]より[大きい] elsif ($set[i] >= $MaxHoldDay) // Yes) [翌日寄付]で手仕舞いする PrintLog("手仕舞い") $sellflag[i] = 1 else // No) [翌日逆指(終日)][建て値(-10.00%)]で手仕舞いする sell = 0.9 * $buy[i] PrintLog("損切り 額 = " + sell) $sellflag[i] = sell end end end //==================== // 買い処理 //==================== def SortBuy(i) PrintLog("購入予定") if ! (HasPricedata(Close)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] // 購入日の翌日の寄付 Buying(codeset) end //==================== // 売り処理(逆指値) //==================== def CheckHighLow2(t) t = Yobine(t, 0) if ! ({1}High > t && t > {1}Low) return 0 end if ({1}Open > t) return {1}Open else return t end end def Sell_(i) if (HasPricedata({1}Open) && $sellflag[i]) t = 0 if ($sellflag[i] != 1) t = CheckHighLow2($sellflag[i]) if (t) SellingLimitedPrice(i, 1, t) $set[i] = 0 else PrintLog("売れない") end else Selling(i) $set[i] = 0 end $sellflag[i] = 0 $buyflag[i][2] = 0 end // 使用した$buyflag 配列を初期化 if ($buyflag[i][0]) $buyflag[i][0] = 0 $buyflag[i][1] = 0 end end // 25日移動線が前日より高い場合に集計を行う // 過去25営業日の各日の終値合計を25で割る def AverageClose(num) i = 0 sum = 0 while (i >= -1 * num) if ! ({i}Close) return -99999 end sum = sum + {i}Close i = i - 1 end return sum / i end //==================== // 銘柄コードを変えながらMain関数,BuySell関数を実行 //==================== Print("-------------------------------------------------") Print("日付 = "+ Year + "/" + Month + "/" + Day) // [日経平均の25日線(集計した銘柄数)]が[0]より[大きい] aveNikkei = {"1001"}AverageClose(25) > {-1}{"1001"}AverageClose(25) $buyCnt = 0 // 購入数初期化 i = 0 while (i < $code_num) {codes[i]}Main(i) i = i + 1 end i = 0 if ($buyCnt && aveNikkei) sortList = SelectionSort(10) cnt = $buyCnt if ($buyCnt > 10) cnt = 10 end while i < cnt {sortList[i]}SortBuy(i) i = i + 1 end end //---------------------------------------------- i = 0 while (i < $code_num) {codes[i]}Sell_(i) i = i + 1 end |