Protraに慣れてないので、まだまだ巷のサンプルソースコードを入手したい。
・・・だけど10年前に流行したものなので、ネット上にあまり情報は多くないです。
結局は、システムトレードは夢物語だからなのか・・・な。
斉藤正章氏の手法とは?
斉藤正章氏の逆張りストラテジーは、移動平均乖離率に関する条件で仕掛けを判定するというものです。
【仕掛け条件】
次をすべて満たすとき、仕掛けとなります。
- 移動平均乖離率(25)が-25以下
- 移動平均乖離率(5)が-10以下
- 終値が50円以上
- 平均売買代金(1)が10,000,000以上
【手仕舞い条件】
以下のいずれかを満たすとき、手仕舞いとなります。
- 経過日数が60日以上
- 損益率が10%以上
ソースコード
「Protraでシステムトレード」という丁寧に説明しているサイトを見つけました。
その方が掲載しているソースコードです。
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 |
//================================================== // //-------------------------------------------------- // このシステムのルール // // 1. 保有株がない状態のとき // *・25日間移動平均との乖離率が-25%を下回った。 // *・5日間移動平均との乖離率が-10%を下回った。 // *・終値が50円以上である。 // *・出来高総額が500万以上である。 // 以上が満たされた場合約100万円分を終値で買う。 // // 2. 保有株がある状態のとき // *・買値の10%を上回った。 // *・暦日2ヶ月経過、41営業日経過で近似。 // 以上のうち1つでも満たされた場合保有株をすべて売る。原則翌日始値、ない場合は当日終値 //-------------------------------------------------- //================================================== require "TIlib" if ! $BB //25日オブジェクト $BB = BB_new(25) else BB_next($BB) end if ! $BB5 //25日オブジェクト $BB5 = BB_new(5) else BB_next($BB5) end def Cond1 //買い条件 if ! Close return end ma = BB_value($BB) if ! ma return end r = 100*(Close - ma)/ma //5 ma5 = BB_value($BB5) if ! ma5 return end r5 = 100*(Close - ma5)/ma5 return r <= -25 && r5 <= -10 && Close >= 50 && Close <= 5000 && Volume * Close > 5000 //終値50円以上5000円以下、かつ出来高総額5000000円 end def Cond2 //売り条件 if ! Close return end if Close >= 1.1*$buy //利が一割乗る return 1 elsif $set <= 0 //0以下でも売り条件 return 1 end $set = $set - 1 //1日1回カウンタ減らしておく end def Num(price) num = 100000/price //int扱い return num end if ! $hold && Cond1 //持ってないとき、かつCond1のとき、買う $hold = Num(Close) if $hold >= 1 if {1}Open //翌日の始値で $buy = {1}Open //買う {1}Buy(Open, $hold) elsif ! {1}Open //翌日の始値がないとき $buy = Close //便宜上終値で買う Buy(Close, $hold) end $set = 41 end elsif $hold && Cond2 //持っているとき、かつCond2のとき、売る if {1}Open //翌日の始値で //翌日 {1}Sell(Open, $hold) //売る elsif ! {1}Open //始値なし Sell(Close, $hold) //便宜上終値で売る end $hold = 0 //持分を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 |
ファイル: Saito.pt 株価データ: 日足 銘柄リスト: 日経平均構成銘柄 →東証1部メインに変更したい・・・ 10/01/05~29/05/02における成績です。 ---------------------------------------- 全トレード数 460 勝ちトレード数(勝率) 354(76.96%) 負けトレード数(負率) 106(23.04%) →勝率8割は素晴らしいけど、取引数が少ない。 全トレード平均利率 6.50% 勝ちトレード平均利率 14.35% 負けトレード平均損率 -19.73% →負けも含めて7%近くの利率。高いです 勝ちトレード最大利率 34.96% 負けトレード最大損率 -70.19% →負けの最大で7割近く失います、、リスク大です。 全トレード平均期間 23.79 勝ちトレード平均期間 12.74 負けトレード平均期間 60.70 →効率は普通。営業日24日だから一ヶ月強。 ---------------------------------------- 必要資金 \14,632,210 最大ポジション(簿価) \16,674,480 最大ポジション(時価) \16,213,030 純利益 \2,982,124 勝ちトレード総利益 \5,083,381 負けトレード総損失 -\2,101,257 →どう見るかは人それぞれ。 全トレード平均利益 \6,483 勝ちトレード平均利益 \14,360 負けトレード平均損失 -\19,823 →一トレード100万円なので、平均で6%近く。低すぎる。 勝ちトレード最大利益 \38,157 負けトレード最大損失 -\66,065 プロフィットファクター 2.42 →高いほどよい。悪くない。 最大ドローダウン(簿価) -\1,328,420 最大ドローダウン(時価) -\3,470,632 ---------------------------------------- 現在進行中のトレード数 0 |
利益曲線は次のとおり。
まとめ
勝率8割は素晴らしいけど、取引数が少ない。
利益率は7%近くでそこそこです。
負けの最大で7割近く失う事になります。これは許容できない。
プロフィットファクターは2.42で、悪くない。