株日記に書くと長くなるので、先週末にシステムトレード関連でやったあれやこれやは単独記事にまとめました。目指せ!自分ヘッジファンド!
ケルトナーチャネル逆張り戦略
シストレ初日での気づきから、「指値や逆指値でエントリーするストラテジーないかな〜」ってなんとなく探してたら、あったよ!
どういうストラテジーなのかは↑の記事の通りですが、これをトレードステーション用にプログラムして、売買シグナルを出すようにしました
easy languageのATR
↑のストラテジーで使うATRに関して、プログラミング絡みのメモ:
AvgTrueRange関数は単純移動平均
指数平滑平均の場合はVolatility関数を使う
ちなみにボラティリティとして標準偏差を使う場合はVolatilityStdDev関数などを使う*1
移動平均乖離率逆張り戦略
システムトレードツールのイザナミの公式サイトで配信してる無料メルマガにいくつかストラテジーが掲載されていると、↑のブログで紹介されていたので、早速登録してみました
まず最初に出てきたのが移動平均乖離率を利用した逆張り戦略。王道ですね
メルマガに載ってる移動平均の日数が、メジャーな日数より少なめだったので、両方の日数で*2検証したところどうもどちらとも有効なようで
なら、両方で仕掛ければいいな! 日数と乖離率大きくした方でナンピンする感じで。すると問題発生。トレードステーションは仕掛けと手仕舞いを別のプログラムにできるのだが、その結果、片方の手仕舞いタイミングで両方決済されてしまうのだ。解決方法はエントリーに名前をつけること!
↑のブログを参考に、↓な感じで実装。うまいこと動作したぜやった!
ちなみに元のメルマガでは手仕舞い条件は一定割合の価格変動or一定日数の経過という、これまた王道だったが、ケルトナーチャネルの例を参考に、移動平均線とクロスするのを手仕舞い条件にしてみた
移動平均線と乖離率のライン、仕掛けのシグナルを表示するプログラムも組んだ。表示させると↑な感じ
しっかし先週買ったストラテジー(「出来高ブレイクアウト戦略」とでも呼ぼうか)は順張りなので、手仕舞いが早く基本デイトレードになるのだが、ケルトナーチャネルのやつといい移動平均乖離率のやつといい逆張りなので、日数がかかるスイングトレードになるのな。なので、(手持ちの割に)大きな資金を投入すると、スイングしてる途中で出来高ブレイクアウトのシグナルが出ても仕掛けられないという問題がある。まあ、そもそも逆張りはスイング中の含み損前提だし、「出来高ブレイクアウト」に比べてハイリスクハイリターンだしってことで、そんなに大きな資金投入することにはしないが
「厳選投資」銘柄向け調整
「出来高ブレイクアウト戦略」は「他にも使えるけど推奨銘柄はこれです」っていうものなんですが、それだと仕掛ける機会が1月に数回と限られるので資金がもったいない
というわけで、有望な大型グロース株をピックアップして仕掛けることにしました。株価が上昇傾向の銘柄の方が、順張りが有効なはずだもんね。ここで注目したのが、スパークス・新・国際優良日本株ファンド(愛称:厳選投資)という投資信託。この「厳選投資」は国内の成長が期待できる大型株を十数銘柄だけ保有していて、個人投資家でも参考にしやすいのだ!
とはいえ、この「厳選投資」銘柄も過去十年のうち全てに渡って順張りが通用するわけではない。リターンを犠牲にしてドローダウンを防ぐよう設定を調整して… あ、手数料込で検証したら、直近の1、2年も利益が出ない
(↓)
これだったら過去に損失があっても、より近い年代で利益が出るように調整し直したほうがいいな(結果↓)
ちなみに過去10年のスケールで見ると、調子が良くなったら安定したペースで利益を出しているように見えるが、直近2年を拡大すると
このように、コンスタントに上昇するというよりは、間隔を開けて上げが来る、特に一度で大きな利益を出したトレードの影響が大きいというのがわかる。地道にトレードを重ねて、たまに来るチャンスを掴むのが重要
銘柄地合い分析
「厳選投資」銘柄で「出来高ブレイクアウト」を検証すると、順張り戦略だけあって、株価の伸びが好調な時期はストラテジーのリターンも好調なのがわかる。逆に考えれば、好調でない銘柄を避け、より好調な銘柄を優先してトレードすればより高い成績が望めるわけだ
というわけで、銘柄の「好調さ」を定量化するのが課題だ。ストラテジーのリターンの変化を元に、基準に使える指標を探すのだ
ソフトバンク注力
取引のターゲットにする銘柄を増やすことで、仕掛けの機会を増やすという戦法を取っているが、逆に同じ銘柄で適用するストラテジーを増やして機会を増やすのも考えている。ターゲットは「出来高ブレイクアウト」でコンスタントに利益を増やし、他の銘柄より好調な9984ソフトバンクGだ!
新高値や3日連続上げなど色々条件は思いつくが、一体どれが有効性をもっているか
呼び値を返す定数
意外なことにデフォルトではeasy languageに存在していない
そこで↓を元に、呼び値を返す関数TickSizeを作成した
自分ヘッジファンド頑張るぞ
いよいよ本格的なシステムトレードに手を出した。まだ半ば練習という感じだが、この前の記事で書いたように、ストラテジーの検討や資金管理のやり方を身に着けて、どんどん運用を本格化していくぞ!