#目的
これまでの記事で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行目の
で、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しか出さず、局面においては、きちんと機能しているなという印象を受けました。テクニカルと上手に組み合わせて使い方次第では、有効になりうるのではないかと思います。 |