インターネット上にProtraのサンプルコードが見つかりません・・・。
そもそも情報が少なすぎ・・・。このままじゃ作れないよね。。
利益率は全く気にしないので誰かサンプルコードを下さい。
イザナミのサンプル手法
まずは簡単なレベルから自作を試みました。
【仕掛けのルール】
次の場合に、翌日寄付で買います。
- 15日移動平均線より株価が10%より下にあった場合
【手仕舞いのルール】
次のいずれかで、翌日に手仕舞います。
- 10日以上持っていた場合
- 5%以上の含み損が出た場合
- 5%以上の含み益が出た場合
ソースコード
この程度であれば自分でも作れるかな・・・
仕掛け・手仕舞のフラグが出たら、翌日に購入・売却手続きをすることになると思うので、そのような実装にしておきました。
だって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 |
require "TIlib" if ! $Diff $Diff = DiffMA_new(15) // 15日移動平均線 else DiffMA_next($Diff) end def BuyCond //買い条件 if ! Close return end diff = DiffMA_value($Diff) if ! (diff) return end return diff <= -10 // 株価が10%より下 end def SellCond //売り条件 if ! Close return end if Close >= 1.05*$buy || Close <= 0.95*$buy // 5%以上の含み益・含み損 return 1 elsif $set <= 0 //0以下でも売り条件 return 1 end $set = $set - 1 //1日1回カウンタ減らしておく end // 1000株の倍数か100株の倍数として買う株数を計算 def Num(price) num = 1000000/price // 軍資金 100 万円で何株? if num >= 1000 num = (num/1000)*1000 elsif num >= 100 num = (num/100)*100 elsif num == 0 num = 1 end return num end if ! $hold && BuyCond //持ってないとき、かつCond1のとき、買う if {1}Open //翌日の始値で $hold = Num({1}Open) if $hold >= 1 $buy = {1}Open //買う {1}Buy(Open, $hold) $set = 10 end elsif Close //翌日の始値がないとき $hold = Num(Close) if $hold >= 1 $buy = Close //便宜上終値で買う Buy(Close, $hold) $set = 10 end end elsif $hold && SellCond //持っているとき、かつCond2のとき、売る if {1}Open //翌日の始値で //翌日 {1}Sell(Open, $hold) //売る elsif ! {1}Open //始値なし Sell(Close, $hold) //便宜上終値で売る end $hold = 0 //持分を0にリセット end |
バックテスト結果
1 2 |
runtime error in izanami.pt:52: 同日の売買があります。 エラーが発生したので実行を中断します。 |
r467から1日に2回以上売買するとエラーになるようです。
システムを書いていると二回以上売買するバグを入れてしまうことが結構あるそうで対策が入ったようです。
どのように記載したら良いのか分かりません・・・。
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 |
ファイル: izanami.pt 株価データ: 日足 銘柄リスト: 日経平均構成銘柄 10/01/05~29/05/02における成績です。 ---------------------------------------- 全トレード数 9901 勝ちトレード数(勝率) 5770(58.28%) 負けトレード数(負率) 4131(41.72%) 全トレード平均利率 1.76% 勝ちトレード平均利率 8.01% 負けトレード平均損率 -6.96% 勝ちトレード最大利率 55.03% 負けトレード最大損率 -49.45% 全トレード平均期間 6.34 勝ちトレード平均期間 6.16 負けトレード平均期間 6.60 ---------------------------------------- 必要資金 ¥78,035,720 最大ポジション(簿価) ¥143,062,900 最大ポジション(時価) ¥163,952,800 純利益 ¥145,021,800 勝ちトレード総利益 ¥388,928,500 負けトレード総損失 -¥243,906,700 全トレード平均利益 ¥14,647 勝ちトレード平均利益 ¥67,405 負けトレード平均損失 -¥59,043 勝ちトレード最大利益 ¥465,000 負けトレード最大損失 -¥512,400 プロフィットファクター 1.59 最大ドローダウン(簿価) -¥19,946,850 最大ドローダウン(時価) -¥22,397,500 ---------------------------------------- 現在進行中のトレード数 1 |
利益結果は次のとおり。
まとめ
総取引回数は10000回程度あり信頼性が高く、勝率は50%をしっかり超えています。
期待値は1.59%なので、100万円の投資で+16000円程度の期待値があります。
結局、1998年(平成10年)から100万円で運用した場合は、2017年(平成29年)には・・・何円になるのか?
全トレードの平均は1週間と、個人的に安心できるトレード手法です。
上記でも書きましたが、Protra言語、C#・株の知識がないので、掲示板かメールでアドバイスを情報下さい。
で、Protraには、次にエントリーすべき銘柄を教えてくれる最終日シグナルってあるのかな・・・・。