17号 【有料】check_signal.py
今回はcheck_signal.pyをアップします。
※注意事項
作者はPythonのプログラムを自学自習で書いています。他の人が書いたものはネットのサンプル程度しか見たことがないため、一般的な書き方ではないかもしれません。
とりあえず動けばよしという姿勢で作っています。システムトレードのプログラムを作る際の参考程度にお考え下さい。
check_signal.pyは以下の場所に置いてください。
解説
CheckSignalクラスは売買シグナル発生処理を実行するクラスです。
各メソッドと関数の内容についてですが、ここまで読み進めて来られた方には苦も無く理解できると思いますので説明は省略します。決してプログラムを読み直してうんざりしたからではありません。
※18号の解説を先に読んでから今回の解説を読んだ方が分かりやすいかもしれません。
設定と実行について
以下の手順で設定をしてから実行します。設定する部分についてはTODOコメントを書いています。
①銘柄リストをインポートする。
10行目でトレード手法毎の銘柄リストをインポートしています。
# TODO トレード手法毎の銘柄
from signals.list import code_list_new_high as code_list_new_high
②シグナル発生処理を実行する日付を設定する。
41行目で年月日を設定します。
# TODO 日付指定
today = datetime.datetime.strptime('2024-02-02', '%Y-%m-%d')
設定が完了したらPyCharmの実行構成からSignalsを選択して実行します。
※補足 28~29行目の設定について
BACK_DAYS = 270
IGNORE_DAYS = 3
BACK_DAYSにはrakuten_rss.pyの114行目の設定値以下の値を設定してください。18号で公開する売買ルール「新高値」では過去データ264日分必要になります。なので270を設定してください。
rakuten_rss.pyの114行目の設定値は300に変更してください。
index_stock_df = self.get_index_stock_df(code, 300)
rakuten_rss.xlsxのA2セルの設定値も300に変更してください。
=RssChart($A$3:$J$3, A1, "D", 300)
IGNORE_DAYSには1度買いシグナルが発生した後、再度発生しても無視する日数を設定します。無視する日数が過ぎると対象のシグナルはfile_ignore_list.txtから削除され、file_ignore_list_history.txtに追加されます。
実行後の手順について
Signalsを実行するとデスクトップに日付のフォルダが作成されます。フォルダの中には以下のファイルが作成されます。
error.txt
signal.txt
profit_taking.txt
start_end_time.txt
①error.txt
実行時に発生したエラー内容を出力します。エラーは出来高が0の場合、上場廃止されている場合、マーケットスピード2RSS(プログラム内のコメントでは楽天RSS)から正常に値が取得できなかった場合に発生します。エラーが大量発生している場合は楽天RSSから正常に値が取得できていない可能性があります。rakuten_rss.xlsxの接続状態を確認後、時間帯をずらして再度実行すれば取得できるようになると思います。それでも取得できない場合はrakuten_rss.pyの68行目のtime.sleep(1)が短すぎる可能性があります。
※実行した日にシグナルが発生している場合、シグナルは「年-月-日 コード シグナル」の形式でfile_ignore_list.txtに追加されています。再度実行する場合はfile_ignore_list.txtから実行日のシグナルを全て削除してから実行してください。
②signal.txt
仕掛け(買い)シグナルが発生した場合、「コード シグナル」の形式で出力されています。シグナルが発生した銘柄を吟味して、翌営業日に証券口座で買い注文を出します。
買い注文を出したシグナルをfile_hold_list.txtに手動で追加します。
例)2024/02/02に発生したシグナルの中から2359の買い注文を出す場合
signal.txt
2359 NewHigh←この銘柄の買い注文を出す。
4565 NewHigh
6632 NewHigh
3484 NewHigh
1605 NewHigh
file_ignore_list.txt
2024-02-02 2359 NewHigh←この行をコピーする。
2024-02-02 4565 NewHigh
2024-02-02 6632 NewHigh
2024-02-02 3484 NewHigh
2024-02-02 1605 NewHigh
file_hold_list.txt
2024-02-02 2359 NewHigh←コピーした行を貼り付ける。
※16号でも書きましたが、file_ignore_list.txtとfile_hold_list.txtの最終行は改行コードのみにしてください。
以下は必要であれば実行してください。
・買い注文約定後に証券口座で損切の逆指値注文を出す。
・カレンダーを見て時限手仕舞いをする日を確認する。
※私は売買の履歴を2号でアップした「売買履歴(connors_rsi)_2023-2-27.xlsx」で管理しています。
③profit_taking.txt
手仕舞い(売り)シグナルが発生した場合、「コード シグナル」の形式で出力されています。翌営業日に証券口座で売り注文を出します。
売りシグナルは自動で履歴ファイルに移動します。
file_hold_list.txtから削除。
file_hold_list_history.txtに追加。
file_ignore_list.txtから削除。
④start_end_time.txt
シグナル発生処理の開始/終了時間が出力されています。
例)日付指定で「2024-02-02」を設定し、2月3日に実行した場合
■2024-02-02
開始:2024-02-03 19:26:51.159733
終了:2024-02-03 19:57:25.322036
ここから先は
¥ 100
この記事が参加している募集
この記事が気に入ったらチップで応援してみませんか?