QuantX로 브린 테이프의 알고리즘 개선

첫 도전 QuantX!


자기 소개


나는 이과대학에서 통계를 전공한다.
나는 초보자로서 금융 방면에서 금융 지식을 조금 배웠다.
저는 SmartTrade에서 실습을 했습니다. 잘 부탁드립니다!!
개발에 적응하기 위해 QuantX로 알고리즘을 만들었습니다.qita의 첫 투고로 귀결을 시도했다.

목표


QuantX에 익숙해져서 알고리즘을 만들어 보세요.

생성할 알고리즘


브린대의 특징을 활용하여 거래를 한다.
트위터에서.σ리버스 시그널
확장할 때는 순서대로 신호가 돼요.
이 두 가지 점에 따라 우리는 전환 순서와 역스트레칭 알고리즘을 만들었다.
사이트 축소판 그림
볼린대의 사용 방법, 견해, 장력, 반신축 사용 기술 분석

완료 코드


완료된 코드는 여기.입니다.

해설


중요한 부분만 살짝 설명해 주세요.

1. 사용할 함수 만들기


확장 및 태그 지정 함수 #6~#16

def judge_expand(ar_upperband,ar_lowerband,m):
    ar_volatility = ar_upperband - ar_lowerband
    list_vol = ar_volatility.tolist()
    list_expand = [0]*len(list_vol)

    for i in range(m,len(list_vol)):
      if list_vol[i] > 3*min(list_vol[i-m:i]):
        list_expand[i]=1

    return np.array(list_expand)
매개 변수에 대해 수조ar_upperband,ar_lowerband,정수m를 채택한다.ar_upperband, ar_lowerband에 브린 테이프의 상하값이 저장되어 있다.브린대의 폭은 그 차이로 ar_volatility에 저장되었고 .tolist()에서 목록list_vol으로 수정되었다.
또한 확장 여부를 0/1로 저장한 목록list_expandlist_vol의 길이가 같고 값은 모두 0으로 준비됩니다.
이번에 확장된 상태를'지난 m일의 브린대 너비의 최소치의 3배로 정의했는데 당일 브린대 너비가 넘으면 추출된다'고 정의했다.list_expand에서 숫자를 저장하는 방법은 아래 그림과 같다.

마지막으로 list_expand 을 그룹으로 수정합니다.

함수 #18 ~ #26 에서 대역폭 초과 여부를 확인하고 표시


#バンドの上をはみ出したかどうか判定する関数
def judge_plus_sigma(sr_upperband,sr_price):
  ar_a = np.greater(sr_price,sr_upperband)
  return ar_a.astype(int)

#バンドの下をはみ出したかどうか判定する関数
def judge_minus_sigma(sr_lowerband,sr_price):
  ar_a = np.less(sr_price,sr_lowerband)
  return ar_a.astype(int)
파라미터는pandas의seriessr_upperbandsr_lowerband,취sr_price입니다.sr_upperbandsr_lowerband는 브린대 상(하)의 값이고, sr_price는 종가다.
브린대 상(하)의 값은 마감가가 초과(하향)되면 진가ar_a에 저장된다.마지막으로 실제 값을 1로 변경합니다.

2. 로고를 신호로 변환하는 부분 #85~#88

df_ag_buy_sig[sym] = df_minus_sigma[sym] - df_minus_sigma[sym]*df_expand[sym]
df_ag_sell_sig[sym] = df_plus_sigma[sym] - df_plus_sigma[sym]*df_expand[sym]
df_fol_buy_sig[sym] = df_plus_sigma[sym]*df_expand[sym]
df_fol_sell_sig[sym] = df_minus_sigma[sym]*df_expand[sym]
여기에 주가가 세워진 표지를 신호로 전환한다.df_가 첨부된 모든 index 날짜,columns 브랜드의pandas.Dataframe입니다.
  • df_minus_sigma: 최종치가 브린대 밑부분보다 낮으면 1을 넣고 그렇지 않으면 0
  • df_plus_sigma: 블린 주파수를 초과하면 1이고 그렇지 않으면 0
  • df_expand: 1로 확장 또는 0으로 확장
  • 이 세 개는 위에서 준비한 함수.로 보관하고 있다.
    또한 다음 데이터 프레임에서
  • df_ag_buy_sig: 역매입의 신호
  • df_ag_sell_sig: 역매도 신호
  • df_fol_buy_sig: 순차 구매 신호
  • df_fol_sell_sig: 순서대로 판매하는 신호
  • 보존하다.
    위 3개의 표지의 데이터 프레임에서 아래 4개의 신호의 데이터 프레임으로 변환할 수 있으며 코드 공식을 사용하여 변환할 수 있다.
    진위 시계 같은 걸 보면 쉽게 알 수 있겠지...
    왼쪽 3개를 오른쪽 4개로 변환합니다.
    넘다
    ... 보다 낮다
    확장성
    되팔다
    되팔다
    순서대로 매입하다
    순서대로 팔다
    1
    0
    0
    0
    1
    0
    0
    1
    0
    0
    0
    0
    1
    0
    0
    1
    0
    1
    0
    0
    0
    0
    1
    1
    0
    0
    0
    1

    결실



    mardown 커요.α작기도 하고...
    용서해 주세요. 제가 처음으로 아구였어요.

    개별


    한 품종에 관심을 가져보면...

    미쓰비시 총연



    순서대로 배열된 신호를 표시해 보았지만, 생각한 대로 움직이고 있는 것 같아!

    날마다 휘두르다



    이것은 신호가 확장된 후에 보내는 것으로 판정 함수의 매개 변수를 바꾸어야 한다.

    최후


    우선 첫 번째 알고리즘은 이 정도...
    나는 이 알고리즘의 업그레이드와 다른 알고리즘의 제작 등을 끊임없이 진행하고 싶다!

    학습회 홍보


    SmartTrade사는 매주 수요일 18:00에 학습회를 개최한다.( https://python-algo.connpass.com/)

    면책 고려 사항


    이 코드와 지식을 사용한 실제 거래에서 발생하는 손익에 대해서는 일체 책임을 지지 않으니 양해해 주십시오

    좋은 웹페이지 즐겨찾기