その1に引き続き、トレンド判定を盛り込んでいきます。
本記事で使用しているコードは、別記事での内容を踏まえたものとなっており、そちらを事前に ご覧になられることをお勧めします。
・投資予算に制限を加える
・共通コードを関数化して可読性を向上させる その2
・共通コードを関数化して可読性を向上させる その3
・投資予算に制限を加える
・共通コードを関数化して可読性を向上させる その2
・共通コードを関数化して可読性を向上させる その3
【免責事項】
・本ブログの内容において、正当性を保証するものではありません。
・本ブログを利用して損失を被った場合でも一切の責任を負いません。
・最終的な決定は、ご自身の判断(自己責任)でお願い致します。
・本ブログの内容において、正当性を保証するものではありません。
・本ブログを利用して損失を被った場合でも一切の責任を負いません。
・最終的な決定は、ご自身の判断(自己責任)でお願い致します。
移動平均線と株価
今回のトレンド判定には、移動平均線と株価の関係を用います。
例えば「○○日移動平均線より、当日の終値が△△%大きい場合、現在その株価は上昇トレンドにある」と判断します。
実装
移動平均線からの乖離率を利用するエンベロープ(カブドットコム証券)をコードに取り入れてみます。
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 |
#================================================== # エンベロープ #================================================== def MovingAverageEnvelope(i) if ! $__INITMAVEP__ $MVAVG = [$code_num] $__INITMAVEP__ = 1 end if ! $MVAVG[i] #Tilibのオブジェクト生成 mvavgDay = 75 $EVrate = 1 $MVAVG = [$code_num] $MVAVG[i] = MA_new(mvavgDay) return 0 end #指標の計算を1日進める MA_next($MVAVG[i]) evlp = MA_envelope($VAVG[i],$EVrate) if !evlp return 0 end # 当日の終値が、〇〇移動平均のx%エンベロープより大きければ1を返す return Close > evlp end |
この例では、75日移動平均線からの乖離率が0%となっています。mvavgDay
が移動平均線の日数、$EVrate
が乖離率です。仮に5%乖離率を使用したければ、$EVrate
を1.05とします。
効果の検証
その1と同じく、以下の逆張りルールを用います。
◆買い:以下を満たしたとき、翌日の始値が買う
・終値と移動平均(5日)との乖離率が-7%以下
◆売り:以下のいずれかを満たしたとき、翌日の始値で売る
・終値と移動平均(5日)との乖離率が0%以上
・購入から10日経過
●予算無制限、対象銘柄:売上上位500銘柄
はじめに、トレンド判定なし。
続いて、「当日の終値が、75日移動平均より大きい場合、上昇トレンドと判断」を盛り込んだ場合です。
その1のトレンド判定条件と同じく、ドローダウンが大きく緩和されていることがわかります。