타임시리즈 데이터 분석 및 틱 데이터 재검토

저자:선함, 2019-08-08 10:05:45에 작성, 2023-10-20 20:11:54에 업데이트

img

시간 순서 데이터

시간계열은 연속적인 같은 간격의 시간대에 획득된 데이터의 연속이다. 양적 투자의 경우, 이러한 데이터는 주로 가격과 추적되는 투자 지표의 데이터 포인트의 움직임으로 나타난다. 예를 들어, 주식 가격, 지정된 시간대에 주기적으로 기록되는 시간계열의 데이터는 다음 그림을 참조하면 독자가 더 명확한 이해를 얻을 수 있다.

img

볼 수 있듯이, 날짜는 x축에 위치하고 가격은 y축에 표시됩니다. 이 경우, 의 연속 간격 시간 단기 은 x축에서 14일 간격의 날을 의미합니다: 2005년 3월 7일과 다음 점, 2005년 3월 31일, 2005년 4월 5일, 2005년 4월 19일 사이의 차이를 주목하십시오.

그러나 시간대 데이터를 사용할 때 자주 볼 수 있는 것은 날짜와 가격 두 줄만을 포함하는 데이터뿐만이 아닙니다. 대부분의 경우, 당신은 데이터 사이클, 오픈 가격, 최고 가격, 최저 가격, 그리고 종료 가격의 다섯 줄의 데이터를 사용하는 것입니다. 즉, 데이터 사이클을 일선 수준으로 설정하면, 그 날의 높고, 열고, 낮고, 종료 가격의 변화는 이 시간대 데이터에 반영됩니다.

틱 데이터란 무엇인가요?

틱 데이터는 거래소에서 가장 상세한 거래 데이터 구조이다. 또한 앞서 언급한 시간 순서 데이터의 확장 형식이며, 여기에는: 오픈 가격, 최고 가격, 최저 가격, 최신 가격, 거래량, 거래량 등이 포함된다. 거래 데이터를 강으로 비유하면, 틱 데이터는 강이 어떤 가로 가로 지름에 걸쳐있는 데이터이다.

img

위 그림에서 보듯이, 국외 거래소의 모든 움직임은 실시간으로 시장으로 추진됩니다. 반면 국내 거래소는 초당 두 번 검사를 수행하고, 이 시간 내에 움직임이있는 경우 스냅샷을 생성하고 추진합니다. 대조적으로, 데이터의 추진량은 ONTIME로 간주 될 수 있습니다. ONTICK라고 불릴 수 없습니다.

이 튜토리얼의 모든 코드와 시간 계열 데이터가 발명자의 정량화 플랫폼에서 획득됩니다.

발명가들에 의해 측정된 Tick 데이터

국내 틱 데이터는 진정한 의미의 틱은 아니지만, 이러한 데이터를 사용하여 재검토할 수 있으며, 적어도 무한히 가까이와 현실을 환원할 수 있다. 각 틱은 그 당시 시장에서 이 상품의 주요 매개 변수를 보여줍니다. 그리고 실제 디스크에서 우리의 코드는 이론에 따라 매초 2번의 틱을 계산하고 있습니다.

img

뿐만 아니라, 발명자 정량화에서는 1시간 주기 데이터를 로드하더라도 데이터 입자를 조정할 수 있다. 예를 들어 1분으로 조정한다. 이 때 1시간 K 라인은 1분 데이터로 구성되어 있다. 물론, 입자가 작을수록 정밀도가 높다. 더 강력하다. 데이터를 실제 디스크 수준의 틱으로 전환하면, 원활하게 실제 디스크 환경을 복원할 수 있다. 즉, 1초 2개의 틱 거래소의 실제 데이터이다.

img

이제 이 튜토리얼을 완료하기 위해 필요한 기본 개념을 이해하게 되었습니다. 이 개념들은 곧 다시 돌아올 것이고, 이 튜토리얼의 후반에 더 많은 관련 개념을 배울 것입니다.

이 부분의 내용에 대해 관심 있는 친구들은 다음을 문의하세요:https://www.fmz.com/bbs-topic/1651더 많은 정보를 보기

작업 환경 설정

다른 일을 잘하고, 우선, 우리는 먼저 발명자의 양자화 플랫폼을 배포하는 관리자를 필요로 합니다. 관리자의 개념에 대해, 프로그래밍 경험이 있는 독자들은 공식적으로 포장된 도커 시스템으로 상상할 수 있습니다. 이 시스템은 다양한 주요 거래소의 공개 API 인터페이스와 전략 작성 및 재검토의 세부 사항에 대한 기술적 세부 사항을 포괄하고 있습니다. 이 시스템의 초기 목적은 다양한 거래자가 발명자의 양자화 플랫폼을 사용할 때 전략을 작성하고 디자인하는 데 힘을 쏟을 수 있도록하는 것입니다. 이 기술은 전략 작가가 많은 시간과 노력을 절약하기 위해 세부 사항을 포괄한 형태로 제시됩니다.

  • 발명가 양적 플랫폼의 관리자 시스템 배포

관리자의 배포는 두 가지로 나니다.

A 방법: 사용자가 직접 서버를 임대하거나 구매하여 AWS, Ali Cloud, Digital Ocean 및 Google Cloud와 같은 주요 클라우드 플랫폼에 배치합니다. 이점은 전략적 보안과 시스템 보안이 모두 보장된다는 것입니다. 개발자가 플랫폼을 양적으로 사용하는 경우, 사용자가 이러한 방법을 사용하도록 권장합니다. 이러한 분산 배포는 서버가 공격 당할 수 있는 숨겨진 위험을 피할 수 있습니다.

이 부분의 내용은 다음과 같습니다.https://www.fmz.com/bbs-topic/2848

B 방법: 발명자의 정량화된 플랫폼을 이용한 공공 서버 배포, 플랫폼은 홍콩, 런던 및 항저우 3곳에 배포하고, 사용자는 거래하고자 하는 거래소의 위치에 따라 근접 원칙에 따라 배포할 수 있다. 이 점에서 장점은 간단하고 쉽게, 한 버튼으로 완료, 특히 초보자 사용자에게 적합하다.

img

이 글은 초보자의 이해를 돕기 위해 B 방법을 사용합니다.

이 글의 내용은 다음과 같습니다.登陆FMZ.COM, 컨트롤 센터, 관리자, 관리자 페이지에서 임대 관리자를 클릭하십시오.

암호를 입력하고 성공적으로 배포한 후 아래 그림과 같습니다:

img

  • 로봇 시스템 개념과 관리자 사이의 관계

앞서 언급했듯이, 호스트는 도커 시스템과 같은 것이고, 도커 시스템은 표준의 집합과 같습니다. 우리는 표준을 배포하고 그 다음에는 이 표준을 위한 인스턴스 을 생성해야 합니다. 이 인스턴스 은 로봇입니다.

로봇을 만드는 것은 간단하다. 좋은 호스트를 배포한 후 왼쪽의 로봇 탭을 클릭하고, 탭 이름에서 이름을 채우고, 호스트 중에서 방금 배포한 좋은 호스트를 선택한다. 아래의 대화 상자에서 매개 변수 선택 및 K 라인 주기가 특정 상황에 따라 선택할 수 있으며, 주로 거래 전략 선택과 함께 할 수 있다.

img

이제 우리의 작업 환경이 구축되어 있고, 매우 간단하고 효과적이며, 기능이 각기 다른 기능을 수행하고 있습니다.

Python에서 간단한 직선 전략 구현

위에서 우리는 시간 계열 데이터와 틱 데이터의 개념을 언급했고, 다음에는 간단한 직선 전략으로 두 개념을 연결합니다.

  • 일률적인 전략의 기본 원칙

느린 주기평선, 예를 들어 7일평선, 그리고 빠른 주기평선, 예를 들어 3일평선을 통해. 그것들을 같은 K선 도면에 적용하면, 빠른 주기평선에서 느린 주기평선을 통과할 때, 우리는 금포라고 부르며, 느린 주기평선 아래로 빠른 주기평선을 통과할 때, 우리는 죽음의 포크라고 부른다.

개설거래의 기초는 금포가 더 많은 단자를 개설하고, 죽은포가 빈 단자를 개설하고, 평행거래의 원리는 동일하다.

让我们打开FMZ.COM, 로그인 계정, 제어 센터, 정책 도서관, 새로운 전략을, 왼쪽 상단에서 전략 작성 언어에서, 파이썬을 선택하십시오. 아래에는 이 전략의 코드가 있으며, 각 줄에 매우 상세한 설명이 있습니다.

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • 일률적인 전략의 재검토

전략 편집 페이지에서, 우리는 전략을 작성 완료, 다음 우리는 전략의 역사적인 산업에서 수행하는 방법을 참조 하 고, 재검토는 어떤 양적 전략 개발에 중요한 역할을 하지만 동시에 중요한 참조로만 수행 할 수 있습니다, 재검토는 수익을 보장하는 것과 같지 않습니다, 시장은 끊임없이 변화하기 때문에, 재검토는 단지 후후의 행위입니다.

클릭 모형 재검토, 많은 조정 가능한 매개 변수가 있으며, 직접 내부에서 수정할 수 있음을 볼 수 있습니다. 나중에 정책이 점점 더 복잡해지고, 매개 변수가 점점 더 많을 때, 이러한 방식으로 변경하는 것은 사용자가 코드에 개별적으로 변경하는 번거로움을 피할 수 있도록 도와줍니다. 간편하고 빠르고 체계적으로 명확합니다.

img

뒷편의 최적화 옵션은 설정된 매개 변수를 자동으로 최적화할 수 있으며, 시스템은 다양한 최적의 매개 변수를 시도하여 전략 개발자가 최적의 선택을 찾도록 돕습니다.

위의 예제에서 볼 수 있듯이, 양적 거래의 기초는 시간 계열 데이터의 분석을 통해, 그리고 틱 데이터의 재검토 상호 작용을 통해 수행되는 복잡한 논리이며, 이 두 가지 기본 요소를 분리할 수 없다. 차이점은 차원의 차이일 뿐, 예를 들어, 높은 빈도 거래는 더 자세한 데이터 절단, 더 풍부한 시간 계열 데이터를 필요로 한다. 예를 들어, 이윤 거래, 재검토 샘플의 데이터 요구 사항은 상대적으로 크며, 어떤 두 거래 지표의 10 년 연속 깊이 데이터를 필요로 할 수 있다.


관련

더 많은