FX 차트에서 지원 라인 생성 시도

12366 단어 Python3FX

개요


기술 분석 요구 사항 지원 라인
근데 아무도 안 할 줄은 몰랐어...?
이렇게 보이기 때문에 오리지널 생성 처리를 써 봤어요.

사전 요구 사항 데이터


만약 이미 이런 데이터가 있다면 계속해라.
(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
...

소스 코드


python
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()

해설


계산 방법으로 삼다
  • 후보 추출1
    연속된 3개의 다리를 한 세트로 고려하여 중간다리를 축소하는 저가가 양쪽 다리의 저가보다 낮은 점
  • 후보 추출2
    1로 축소한 결과 과거 최근 7개의 저가 중 최저가만 남았다
    (최저가 정렬로 설정)
  • 지원 라인 생성
    최저가 배열 간격용.fillna(method='ffill') 매립
  • 결과



    음...됐어

    주의사항

  • 보시다시피 하락세는 사용할 수 없습니다.
    사용하면 상승세인가요, 전자레인지 시세인가요...?
  • 단독 도움 없음
  • 관련 문장


  • scipy에서 피크값 추출
    피크값을 잘 사용할 수 있다면 지원/저항선을 끌어올릴 수 있다

  • Python으로 지지선과 저항선을 그려보세요.
    보는 느낌에 적당한 선을 그은 것 같아서 사용할 계획이 없는 것 같아요.
    다만, 이 기사에 실렸다
    savgol_필터 함수 평균 마감가를 사용하여 국부 최소값과 최대값을 구하는 방법
    너무 재밌어서 해보고 싶은 마음이...
  • 좋은 웹페이지 즐겨찾기