こんにちは、こがたです。
システムトレードをやろうと学習中なのですが、1分足のデータを好きな期間の足に変更したいと思いコーディングしました!
この記事では1分足のデータ(CSV)を好きな期間の足に変えてCSV出力するPythonのコードを紹介します。
- Pythonで1分足データを加工したい
- 好きな期間のローソク足を作成したい
- PythonでCSVファイルを扱いたい
- 自分でチャートを作りたい
コードの一部を変更すれば5分足などから作成することもできるので試してみてください。
CSVの読み書きの方法もわかるので参考にしてもらえたら嬉しいです!
用意するデータ
この記事では以下のようなDataFrame(1分足データ)から好きな期間のローソク足データを作成していきます。
まずは以下の項目がある1分足のDataFrameを用意してください。
- open:始値
- high:高値
- low:安値
- close:終値
- volume:出来高
- day:日付(どのようなフォーマットでも問題ありません)
- datetime:日時(datetime型としてください)
ローソク足データは『AXIORY』や『OANDA』より入手することができます。
実装(好きな期間のローソク足情報を作成)
これからは用意した情報から好きな期間のローソク足を作成していきます。
- 1分足データの用意(CSVファイルの読み込み)
- 日付ごとにループさせて情報参照
- 指定した期間ごとにループさせて情報取得
- 結果データを扱う(CSVファイルへ書き出し)
モジュールの読み込み
以下を実行して必要なモジュールを読み込みます。
# モジュール読み込み
import os
import numpy as np
import pandas as pd
import datetime
import math
1分足データ(CSVファイル)の読み込み
# 1分足ファイルの読み込み
# データ準備
file_path = 'CSVファイルのパス'
origin_df = pd.read_csv(file_path)
CSVファイルが準備するデータの形になっていたら、読み込むだけで利用するDataFrameになります。
CSVファイルの形が違う場合はDataFrame型にしてから変形させるか、CSVファイルを修正してください。
好きな期間のデータ作成
ここからは一気にデータを作成してきます。
ここでは1分足から1時間足を作成していきます。
# まとめる足:分単位
chart_term = 60
# 日付のリスト
origin_day = origin_df.groupby('day').mean().index
# 結果リスト
result_list = []
# 日付の繰り返し
for day in origin_day:
print(day)
day_df = origin_df[origin_df['day'] == day]
start_time = pd.to_datetime(day)
for i in range(math.ceil(len(day_df) / chart_term)):
end_time = start_time + datetime.timedelta(minutes=chart_term-1)
term_df = day_df[(day_df['datetime']>=start_time) & (day_df['datetime']<=end_time)]
if len(term_df) == 0:
continue
# 列ごとのデータ
open = term_df['open'].values[0]
close = term_df['close'].values[-1]
high = term_df.max()['high']
low = term_df.min()['low']
volume = term_df.sum()['volume']
result_list.append([start_time, open, high, low, close, volume])
# 次ループのために開始時間追加
start_time = start_time + datetime.timedelta(minutes=chart_term)
# 結果
result_df = pd.DataFrame(result_list)
result_df.columns = ['datetime', 'open', 'high', 'low', 'close', 'volume']
result_df = result_df.sort_values('datetime')
# CSV書き込み
result_df.to_csv("書き出すCSVファイルのパス")
「chart_term」変数に好きな期間の分を設定していください。
(例:日足にしたい場合は「1440」と設定してください)
日付、時間を確認しながら作成しているので、多少データに抜け漏れがあっても正確にデータを作成することができます!
コード自体はすごくシンプルなので、改良して利用してみてください!
もっとよいコーディング方法がありましたら教えてくださると嬉しいです><
ローソク足データからのチャート表示方法は↓↓↓をご覧ください!
システムトレードをやるためには
システムトレードは始めるためには以下のことが必要不可欠です!
- 売買ルール
- 資金管理
- 心理
これは金融商品(株、FX)に関係なく、基礎の基礎となる部分です。
この基本についてまとまっているのが『システムトレード基本と原則』です。
ほとんどのトレーダーが一読しており、「読まなければ、始められない!」といってもよい書籍です。
これから始める方、すでに始めているが読んでいない方は読むことを強くオススメします!
プログラミングを利用する場合
システムトレードでプログラミングを活用する場合は「Python」がオススメです。
データ分析や図式化に強い言語です。
またAI(人工頭脳)を構築して予測する場合は「Python」か「R」のどちらかになるでしょう。
Pythonの学習に特化したプログラミングスクール『PyQ』は初心者が以下について学ぶのに向いています。
- Python文法:基礎から実務レベルまで
- 設計方法:実務向き
- ライブラリー利用
- Web開発
- API開発
- スクレイピング
- データ分析と必要な数学
- 機械学習
- 統計
詳細はは↓↓↓をご覧ください。
独学で学習する場合は『Udemy』が安くしっかり学習することができます。
なんとセール中は1万円代の講座を1,000円代で購入することができます!
買い切り型なので、1回買えば「いつでも、どこでも、何回でも」受講できます。
自分の売買ルールを明確にして利益をあげてきましょ〜
最後に
Pythonでローソク足のデータを加工するのは簡単です。
紹介したコードも日付周りでまだ改良の余地はありそうですね。
部分的に利用してもらえたら嬉しいです!
システムトレードについても情報がまとまり次第配信していきます。
最後まで読んでくださり、ありがとうございました!!!
コメント