LoginSignup
2

More than 3 years have passed since last update.

Talibで使えるローソク足に関する関数のまとめ (番外編)

Last updated at Posted at 2019-05-14

目的

これまでの記事でtalibで使えるローソク足を紹介してきました。
そこで、今回の記事では、ローソク足が実際どれほどシグナルを出して売買にかかわっているのかを調べたいと思います。

シグナル回数を調べる

シグナル回数を調べるために使ったコード

import pandas as pd
import talib as ta
import numpy as np

def initialize(ctx):
    candle = ta.CDLXSIDEGAP3METHODS
    ctx.logger.debug("initialize() called")
    ctx.configure(
      channels={
        "jp.stock": {
          "symbols": ["jp.stock.2914","jp.stock.3382",
                      "jp.stock.4063","jp.stock.4452",
                      "jp.stock.4502","jp.stock.4503",
                      "jp.stock.6098","jp.stock.6501",
                      "jp.stock.6752","jp.stock.6758",
                      "jp.stock.6861","jp.stock.6954",
                      "jp.stock.6981",
                      "jp.stock.7203","jp.stock.7267",
                      "jp.stock.7751","jp.stock.7974",
                      "jp.stock.8031","jp.stock.8316",
                      "jp.stock.8411","jp.stock.8766",
                      "jp.stock.8802","jp.stock.9020",
                      "jp.stock.9022","jp.stock.9432",
                      "jp.stock.9433","jp.stock.9437",
                      "jp.stock.9984",
                      ],
          "columns": ["open_price_adj",    # 始値(株式分割調整後)
                      "high_price_adj",    # 高値(株式分割調整後)
                      "low_price_adj",     # 安値(株式分割調整後)
                      "close_price_adj",   # 終値(株式分割調整後)
                      ]}})

    def _my_signal(data):
      op = data["open_price_adj"].fillna(method="ffill")
      cp = data["close_price_adj"].fillna(method="ffill")
      hp = data["high_price_adj"].fillna(method="ffill")
      lp = data["low_price_adj"].fillna(method="ffill")
      sig = pd.DataFrame(data=0,columns=[], index=cp.index)

      for(sym,val) in cp.items():
       sig[sym] = candle(op[sym], hp[sym], lp[sym], cp[sym])

      def prints(*args):
        ctx.logger.debug(' '.join(map(str, args)))

      # prints(sig)

      buy_sig_count = 0
      sell_sig_count = 0
      for i in sig:
        buy_sig_count += (sig[i] == 100).sum()
        sell_sig_count += (sig[i] == -100).sum()

      prints('buy_sig_count', buy_sig_count)
      prints('sell_sig_count', sell_sig_count)


      return {
        "count":sig,
        }

    # シグナル登録
    ctx.regist_signal("my_signal", _my_signal)

def handle_signals(ctx, date, current):
    '''
    current: pd.DataFrame
    '''

    done_syms = set([])
    count = current["count"].dropna()

    buy_sig = count[(count == 100) ]
    sell_sig = count[(count== -100)]

    for (sym,val) in buy_sig.items():
      sec = ctx.getSecurity(sym)
      sec.order_target_percent(0.8, comment="SAMPLE BUY")

    for (sym,val) in sell_sig.items():
      sec = ctx.getSecurity(sym)
      sec.order_target_percent(0, comment="SAMPLE SELL")

解説

上のコードの銘柄はtopixs core30で行っています。このコードをquantx上で動かすと、銘柄全部の合計のシグナル回数が、ログ上にbuy_sig_count、sell_sig_countという形で回数が出てきます。
コードの基本的な操作は、quantxの使い方と同じです。

上のコードの6行目の

candle = ta.CDLXSIDEGAP3METHODS

で、ta.の続きに調べたいtalibの関数を入力するとログ上にその関数の回数が出てきます。

結果

上記のコードを使って、シグナル回数を調べました。
下記の表が、関数ごとの回数のまとめになります。
関数はこれまでの記事にあるその1,2,5,7にあるものの全てになります。(今後、その3,4,6にある関数も追加予定です。)
期間は、2018-05-07から2019-05-07で行いました。

追記しました。
追記1では(3)(4)(6)の関数を追記しています。期間は2018-05-07 から 2019-05-07で行いました。

ta.libの関数 上昇局面 特徴 下降局面 特徴 停滞局面 特徴 buy-signal(回) sell-signal(回)
CDLLONGLINE 大陽線 大陰線 1295 1519
CDLMARUBOZU 丸坊主 黒のローソク足 丸坊主 白のローソク足 307 425
CDLHAMMER 陽のハンマー 強気の反転パターン 強気の反転パターン 257 0
CDLINVERTEDHAMMER 逆ハンマー 249 0
CDL2CROWS 二羽烏 0 13
CDL3BLACKCROWS 三羽烏 0 3
CDL3INSIDE three inside up three inside down 127 71
CDLIDENTICAL3CROWS なだれ三羽烏 0 0
CDL3LINESTRIKE three-line strike 1,2,3のローソクが陽線であれば売りのサイン three-line strike 1,2,3のローソクが陰線の時が買いのサイン 5 3
CDL3OUTSIDE three outside down three outside up 165 214
CDL3STARSINSOUTH three stars in the south 黒のローソク足 three stars in the south 白のローソク足 0 0
CDL3WHITESOLDIERS three advancing white soldiers 6 0
CDLADVANCEBLOCK advance block 0 23
CDLBELTHOLD belt-hold 白のローソク足 belt-hold 黒のローソク足 1011 1317
CDLBREAKAWAY breakaway 初日が大きい陰線 breakaway 初日が大きい陽線 0 4
CDLCONCEALBABYSWALL concealing baby swallow 0 0
CDLCOUNTERATTACK counterattack 最初が下降トレンド counterattack 最初が上昇トレンド 10 26
CDLHIKKAKE ひっかけパターン(call) ひっかけパターン(put) 516 581
CDLHIKKAKEMOD 改善版ひっかけパターン 改善版ひっかけパターン 6 5
CDLHOMINGPIGEON 伝書鳩 反転のサイン 216 0
CDLINNECK 入首 売りのサイン 0 20
CDLKICKING 蹴りあげ 陰線の丸坊主の後陽線の丸坊主 蹴りあげ 陽線の丸坊主の後に陰線の丸坊主 0 0
CDLKICKINGBYLENGTH kicking by length 蹴りあげの二本目の丸坊主がかなり長い) kicking by length 蹴りあげの二本目の丸坊主がかなり長い 0 0
CDLLADDERBOTTOM はしご底 31 0
CDLMATCHINGLOW マッチンググロウ (マッチンググロウ) 198 0
CDLMATHOLD マットホールド マットホールド 売りの逆 0 0
CDLTAKURI たくり線 下落相場において、安く寄り付き、長い下髭になった陰線 たくり線 下髭を再度割り込むようなことがあったとき 183 0
CDLTASUKIGAP たすき線 前日の陰線が後高寄りして前日の高値以上の引け値となる場合) たすき線 前日陽線の後安寄りして、前日以下の引け値となるもの) 37 28
CDLTHRUSTING スラストアップ スラストダウン 0 126
CDLTRISTAR 三ツ星 三ツ星の後に陽線が出る 三ツ星 下降トレンド中に現れたとき 12 11
CDLUNIQUE3RIVER 三川 18 0
CDLUPSIDEGAP2CROWS 三川上放れ二羽烏 0 13
CDLXSIDEGAP3METHODS 上げ三法 下げ三法 26 37
CDLHIGHWAVE 高波 強気相場や弱気相場の迷い 917 704
追記1
CDLDOJI 同時線(星) 最初長い陰線 同時線(星) 最初は長い陽線 1819 0
CDLDRAGONFLYDOJI 同時線(とんぼ) 同時線(とんぼ) 185 0
CDLEVENINGDOJISTAR 0 30
CDLGRAVESTONEDOJI 同時線(塔婆) 高値圏以外 173 0
CDLLONGLEGGEDDOJI 長い足の同時線 強い上昇トレンド 長い足の同時線 強い下降トレンド 1753 0
CDLEVENINGSTAR Evening Star 3番目のろうそく足が1番目より短くその長さの内側に収まている Evening Star 三番目のろうそく足は一番目より短くその範囲に収まっている 0 81
CDLGAPSIDESIDEWHITE Up/Down-gap side-by-side white lines 27 7
CDLABANDONEDBABY 明けの明星 1日目に陰線が出る 明けの明星 1日目に陽線が出る 0 3
CDLENGULFING つつみ線 様々な陰線を包み込むように陽線が存在 つつみ線 陽線のローソク足と、それに続いて小さい陽線のローソクを隠し、大きな陰線のローソク足で構成されている 316 440
CDLHARAMI 陰の陽はらみ 下降相場において、大陰線に続いて、その陰線に包み込まれるような陽線が出た翌日上よりの陽線が出たとき 陽の陰はらみ 大陽線の翌日に出た陰線が、前日の大陽線の中に納まるような形(はらみ線)が出たとき 533 357
CDLPIERCING On-Neck Pattern 0 54
CDLPIERCING Piercing Pattern 58 0
CDLRICKSHAWMAN Rickshaw Man 1298 0
CDLRISEFALL3METHODS the rising three method 1つ目は上昇傾向の実体の大きいローソク足 the falling three methods 1つ目は下降傾向の実体の大きいローソク足 1 0
CDLDARKCLOUDCOVER Dark Cloud Cover 1 0
CDLSEPARATINGLINES Bullish Separating Line Bearish Separating Line 1日目に陽線がでて、2日目にギャップダウンがあること 0 67
CDLSHOOTINGSTAR Shooting Star 15 23
CDLSPINNINGTOP Spinning Top 0 208
CDLSTALLEDPATTERN Stalled Pattern 1459 1273
CDLSTICKSANDWICH Stick Sandwich Stick Sandwich 29 0

感想

ローソク足の種類によっては、シグナル回数が多すぎたり、逆に少なすぎたりするものが多々見受けられました。
それでも、上昇局面におけるローソク足は、buy_signalしか出さず、逆に、下降局面におけるローソク足はsell_signalしか出さず、局面においては、きちんと機能しているなという印象を受けました。テクニカルと上手に組み合わせて使い方次第では、有効になりうるのではないかと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2