FX 차트에서 지원 라인 생성 시도
개요
기술 분석 요구 사항 지원 라인
근데 아무도 안 할 줄은 몰랐어...?
이렇게 보이기 때문에 오리지널 생성 처리를 써 봤어요.
사전 요구 사항 데이터
만약 이미 이런 데이터가 있다면 계속해라.
(200줄 이상)
python> csv_path = 'hoge.csv'
> pd.read_csv(csv_path, index_col=0)
close high low open
time
2019-08-29 01:30:00 129.310 129.420 129.302 129.420
2019-08-29 01:40:00 129.258 129.324 129.254 129.312
2019-08-29 01:50:00 129.229 129.264 129.221 129.256
2019-08-29 02:00:00 129.260 129.262 129.184 129.232
2019-08-29 02:10:00 129.264 129.295 129.241 129.258
...
소스 코드
pythonimport matplotlib
import matplotlib.pyplot as plt
import mplfinance.original_flavor as mpf
import numpy as np
import pandas as pd
csv_path = 'hoge.csv'
candles = pd.read_csv(csv_path, index_col=0)[-200:].copy()
# INFO: ちょうどいい感じにサポートラインの支点を作る(※詳細は後述)
support_points = (pd.Series.rolling(candles.low, window=7).min() == candles.low) \
& (candles.low.shift(1) > candles.low) \
& (candles.low < candles.low.shift(-1))
# サポートラインの支点から、次の支点までの間は同じ価格をsupportラインとする
candles.loc[support_points, 'support'] = candles[support_points].low
candles['support'] = candles.support.fillna(method='ffill')
# - - - - - - - - - - - - - - - - - - - - - - - -
# 以降は単なる描画処理
# - - - - - - - - - - - - - - - - - - - - - - - -
figure, (axis1) = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=200)
mpf.candlestick2_ohlc(
axis1,
opens = candles.open.values,
highs = candles.high.values,
lows = candles.low.values,
closes = candles.close.values,
width=0.6, colorup='#77d879', colordown='#db3f3f'
)
axis1.scatter(x=candles.index.values, y=candles.support.values, label='support', c='orangered', marker= '_', s=3)
# グラフの見た目を整形
### X軸の見た目を整える
xticks_number = 12 # 12本(60分)刻みに目盛りを書く
xticks_index = range(0, len(candles), xticks_number)
xticks_display = [candles.index.values[i][:16] for i in xticks_index] # 時間を切り出すため、先頭12文字目から取る
# axis1を装飾
plt.sca(axis1)
plt.xticks(xticks_index, xticks_display, rotation=30)
plt.show()
해설
계산 방법으로 삼다
만약 이미 이런 데이터가 있다면 계속해라.
(200줄 이상)
python
> csv_path = 'hoge.csv'
> pd.read_csv(csv_path, index_col=0)
close high low open
time
2019-08-29 01:30:00 129.310 129.420 129.302 129.420
2019-08-29 01:40:00 129.258 129.324 129.254 129.312
2019-08-29 01:50:00 129.229 129.264 129.221 129.256
2019-08-29 02:00:00 129.260 129.262 129.184 129.232
2019-08-29 02:10:00 129.264 129.295 129.241 129.258
...
소스 코드
pythonimport matplotlib
import matplotlib.pyplot as plt
import mplfinance.original_flavor as mpf
import numpy as np
import pandas as pd
csv_path = 'hoge.csv'
candles = pd.read_csv(csv_path, index_col=0)[-200:].copy()
# INFO: ちょうどいい感じにサポートラインの支点を作る(※詳細は後述)
support_points = (pd.Series.rolling(candles.low, window=7).min() == candles.low) \
& (candles.low.shift(1) > candles.low) \
& (candles.low < candles.low.shift(-1))
# サポートラインの支点から、次の支点までの間は同じ価格をsupportラインとする
candles.loc[support_points, 'support'] = candles[support_points].low
candles['support'] = candles.support.fillna(method='ffill')
# - - - - - - - - - - - - - - - - - - - - - - - -
# 以降は単なる描画処理
# - - - - - - - - - - - - - - - - - - - - - - - -
figure, (axis1) = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=200)
mpf.candlestick2_ohlc(
axis1,
opens = candles.open.values,
highs = candles.high.values,
lows = candles.low.values,
closes = candles.close.values,
width=0.6, colorup='#77d879', colordown='#db3f3f'
)
axis1.scatter(x=candles.index.values, y=candles.support.values, label='support', c='orangered', marker= '_', s=3)
# グラフの見た目を整形
### X軸の見た目を整える
xticks_number = 12 # 12本(60分)刻みに目盛りを書く
xticks_index = range(0, len(candles), xticks_number)
xticks_display = [candles.index.values[i][:16] for i in xticks_index] # 時間を切り出すため、先頭12文字目から取る
# axis1を装飾
plt.sca(axis1)
plt.xticks(xticks_index, xticks_display, rotation=30)
plt.show()
해설
계산 방법으로 삼다
import matplotlib
import matplotlib.pyplot as plt
import mplfinance.original_flavor as mpf
import numpy as np
import pandas as pd
csv_path = 'hoge.csv'
candles = pd.read_csv(csv_path, index_col=0)[-200:].copy()
# INFO: ちょうどいい感じにサポートラインの支点を作る(※詳細は後述)
support_points = (pd.Series.rolling(candles.low, window=7).min() == candles.low) \
& (candles.low.shift(1) > candles.low) \
& (candles.low < candles.low.shift(-1))
# サポートラインの支点から、次の支点までの間は同じ価格をsupportラインとする
candles.loc[support_points, 'support'] = candles[support_points].low
candles['support'] = candles.support.fillna(method='ffill')
# - - - - - - - - - - - - - - - - - - - - - - - -
# 以降は単なる描画処理
# - - - - - - - - - - - - - - - - - - - - - - - -
figure, (axis1) = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=200)
mpf.candlestick2_ohlc(
axis1,
opens = candles.open.values,
highs = candles.high.values,
lows = candles.low.values,
closes = candles.close.values,
width=0.6, colorup='#77d879', colordown='#db3f3f'
)
axis1.scatter(x=candles.index.values, y=candles.support.values, label='support', c='orangered', marker= '_', s=3)
# グラフの見た目を整形
### X軸の見た目を整える
xticks_number = 12 # 12本(60分)刻みに目盛りを書く
xticks_index = range(0, len(candles), xticks_number)
xticks_display = [candles.index.values[i][:16] for i in xticks_index] # 時間を切り出すため、先頭12文字目から取る
# axis1を装飾
plt.sca(axis1)
plt.xticks(xticks_index, xticks_display, rotation=30)
plt.show()
계산 방법으로 삼다
연속된 3개의 다리를 한 세트로 고려하여 중간다리를 축소하는 저가가 양쪽 다리의 저가보다 낮은 점
1로 축소한 결과 과거 최근 7개의 저가 중 최저가만 남았다
(최저가 정렬로 설정)
최저가 배열 간격용
.fillna(method='ffill')
매립결과
음...됐어
주의사항
사용하면 상승세인가요, 전자레인지 시세인가요...?
관련 문장
scipy에서 피크값 추출
피크값을 잘 사용할 수 있다면 지원/저항선을 끌어올릴 수 있다
Python으로 지지선과 저항선을 그려보세요.
보는 느낌에 적당한 선을 그은 것 같아서 사용할 계획이 없는 것 같아요.
다만, 이 기사에 실렸다
savgol_필터 함수 평균 마감가를 사용하여 국부 최소값과 최대값을 구하는 방법
너무 재밌어서 해보고 싶은 마음이...
Reference
이 문제에 관하여(FX 차트에서 지원 라인 생성 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/siruku6/items/2b12fcdc9d86641a8383텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)