손잡이, 손잡이, 손잡이

저자:작은 꿈, 2020-04-16 12:44:03, 업데이트: 2023-10-11 19:57:00

img

프로그램화 거래, 정량화 거래에서 연구 전략, 디자인 전략, 리모테이션 분석에서 시장 데이터의 지원이 필수적입니다. 시장의 모든 데이터가 수집되지 않고 현실적이지 않습니다. 데이터의 양은 너무 크습니다. 디지털 통화 시장의 경우, 발명자는 정량화 거래 플랫폼에서 제한된 거래소, 거래 쌍의 리모테이션 데이터를 지원합니다. 일시적으로 데이터를 지원하지 않는 거래소, 거래 쌍을 리모테이션하고 싶다면 사용자 지정 데이터 소스를 사용하여 리모테이션을 수행 할 수 있습니다.

이 방법은 다음과 같은 몇 가지 요구를 해결할 수 있습니다.

  • 여러 로봇에게 데이터 소스를 제공할 수 있으며, 각 로봇이 거래소 인터페이스에 접근하는 빈도를 완화할 수 있다.
  • 로봇이 시작될 때 충분한 K 라인 바를 얻을 수 있고, 로봇이 시작될 때 충분한 K 라인 바가 없을 것이라는 걱정이 없습니다.
  • 소화폐 시장 데이터를 수집하여 발명자에게 양적 거래 플랫폼 재검토 시스템을 제공하는 사용자 정의 데이터 소스를 제공하여 재검토 시스템 재검토 전략을 사용할 수 있습니다.
  • 잠깐만요.

왜 파이썬으로 구현할 계획인가? 편리하기 때문입니다. 이 모든 것은 우리가 할 수 있는 일입니다.

준비

  • Python의 Pymongo 라이브러리

    데이터베이스를 사용하려면 영구 저장을 해야 합니다.MongoDB이 데이터베이스의 드라이버가 필요합니다. 파이썬에 설치pymongo이 모든 것은

  • 호스트의 장치에 MongoDB를 설치합니다.

    예를 들어: MAC에 MongoDB를 설치하고, 물론 WIN 시스템에도 MongoDB를 설치합니다.

  • 다운로드 다운로드 링크:https://www.mongodb.com/download-center?jmp=nav#community

  • 압축 해제 다운로드 후 디렉터리에 압축을 풀고:/usr/local

  • 환경 변수를 구성합니다. 엑스페라, 엑스페라open -e .bash_profile이 문서의 문자를 열면 다음과 같이 적습니다.export PATH=${PATH}:/usr/local/MongoDB/bin저장 후, 최종 사용source .bash_profile이 글은 다른 글과 비교해 볼 수 있습니다.

  • 데이터베이스 파일 디렉토리와 로그 디렉토리를 수동으로 구성합니다 디렉토리 생성/usr/local/data/db이 문서는 다른 문장과 연결된 문서를 가리킨다. 디렉토리 생성/usr/local/data/logs이 문서는 다른 문장과 연결된 문서를 가리킨다.

  • 프로파일 편집mongo.conf

    #bind_ip_all = true                        # 任何机器可以连接
    bind_ip = 127.0.0.1                        # 本机可以访问
    port = 27017                               # 实例运行在27017端口(默认)
    dbpath = /usr/local/data/db                # 数据文件夹存放地址(db要预先创建)
    logpath = /usr/local/data/logs/mongodb.log # 日志文件地址
    logappend = false                          # 启动时 添加还是重写日志文件
    fork = false                               # 是否后台运行
    auth = false                               # 开启校验用户
    
  • MongoDB 서비스를 실행합니다

    명령:

    ./mongod -f mongo.conf
    
  • 서비스 중단

    use admin;
    db.shutdownServer();
    

수집자 절차를 구현합니다

수집기는 발명가들의 양적 거래 플랫폼에 있는 파이썬 로봇의 전략으로 작동한다. 파이썬 자체의 수준이 제한되어 있기 때문에, 이 글의 아이디어를 보여주는 간단한 예시만을 구현한다.

수집자 정책 코드:

import pymongo
import json

def main():
    Log("测试数据收集")
    
    # 连接数据库服务
    myDBClient = pymongo.MongoClient("mongodb://localhost:27017")   # mongodb://127.0.0.1:27017
    # 创建数据库
    huobi_DB = myDBClient["huobi"]
    
    # 打印目前数据库表
    collist = huobi_DB.list_collection_names()
    Log("collist:", collist)
    
    # 检测是否删除表
    arrDropNames = json.loads(dropNames)
    if isinstance(arrDropNames, list):
        for i in range(len(arrDropNames)):
            dropName = arrDropNames[i]
            if isinstance(dropName, str):
                if not dropName in collist:
                    continue
                tab = huobi_DB[dropName]
                Log("dropName:", dropName, "删除:", dropName)
                ret = tab.drop()
                collist = huobi_DB.list_collection_names()
                if dropName in collist:
                    Log(dropName, "删除失败")
                else :
                    Log(dropName, "删除成功")
    
    # 创建records表
    huobi_DB_Records = huobi_DB["records"]
    
    # 请求数据
    preBarTime = 0
    index = 1
    while True:
        r = _C(exchange.GetRecords)
        if len(r) < 2:
            Sleep(1000)
            continue
        if preBarTime == 0:
            # 首次写入所有BAR数据
            for i in range(len(r) - 1):
                # 逐根写入
                bar = r[i]
                huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]})                
                index += 1
            preBarTime = r[-1]["Time"]
        elif preBarTime != r[-1]["Time"]:
            bar = r[-2]
            huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]})
            index += 1
            preBarTime = r[-1]["Time"]
        LogStatus(_D(), "preBarTime:", preBarTime, "_D(preBarTime):", _D(preBarTime/1000), "index:", index)
        Sleep(10000)
        

이 글의 전체 내용은:링크

데이터 사용

데이터 사용 전략을 만드는 로봇. 참고: 선택해야 합니다."그림자리 클래식 라이브러리"이 문서는 다른 문장과 같은 문장과 같은 문장들을 포함합니다.img

import pymongo
import json

def main():
    Log("测试使用数据库数据")
    
    # 连接数据库服务
    myDBClient = pymongo.MongoClient("mongodb://localhost:27017")   # mongodb://127.0.0.1:27017
    # 创建数据库
    huobi_DB = myDBClient["huobi"]
    
    # 打印目前数据库表
    collist = huobi_DB.list_collection_names()
    Log("collist:", collist)
    
    # 查询数据打印
    huobi_DB_Records = huobi_DB["records"]
    
    while True:
        arrRecords = []
        for x in huobi_DB_Records.find():
            bar = {
                "High": x["High"], 
                "Low": x["Low"], 
                "Close": x["Close"], 
                "Open": x["Open"], 
                "Time": x["Time"], 
                "Volume": x["Volume"]
            }
            arrRecords.append(bar)
        
        # 使用画线类库,把取到的K线数据画出来
        ext.PlotRecords(arrRecords, "K")
        LogStatus(_D(), "records length:", len(arrRecords))
        Sleep(10000)

데이터를 사용하는 전략 로봇 코드는 어떤 거래소 인터페이스에 접근하지 않고 데이터베이스에 접근하여 데이터를 획득하는 것을 볼 수 있으며, 시장 수집 프로그램은 현재 BAR의 데이터를 기록하지 않으며, 상태가 완료된 K 라인 BAR을 수집하고 있으며, 현재 BAR 실시간 데이터가 필요하다면 약간 수정 할 수 있습니다. 현재 예제 코드는 데이터베이스의 테이블에 있는 모든 데이터 레코드를 열람할 때 모두 가져오는 것을 보여주기 위해, 데이터 수집 시간이 증가하고 더 많은 데이터를 수집할 때, 모든 쿼리가 나오면 어느 정도 성능에 영향을 미칠 수 있으며, 현재 데이터보다 새로운 데이터를 쿼리하는 것만을 디자인하여 현재 데이터에 추가할 수 있습니다.

실행

관리자 프로그램을 실행합니다img

이 앱은 웹 사이트에서 운영되고 있습니다.MongoDB데이터베이스 서비스./mongod -f mongo.conf img

수집기 작동, 발명가들의 양적 거래 플랫폼을 수집하는 모형 디스크wexApp이 모든 것은BTC_USDT거래 쌍: 주소:wexApp img

데이터베이스 데이터를 사용하는 로봇 A:img

데이터베이스 데이터를 사용하는 로봇 B:img

wexApp이 글의 내용은img

이 그림은 서로 다른 ID를 가진 로봇들이 하나의 데이터 소스를 사용하는 K-선 데이터를 공유하는 것을 보여줍니다.

임의의 주기의 K선 데이터를 수집합니다.

발명가들의 양적 거래 플랫폼의 강력한 기능에 의존하여, 우리는 임의의 주기를 수집하는 K 라인 데이터를 쉽게 구현할 수 있습니다. 예를 들어, 3분 K 라인을 수집하고 싶지만 거래소가 3분 K 라인을 가지고 있지 않은 경우 어떻게 될까요?

우리는 수집기 로봇의 구성을 변경하여 K 라인 주기를 3분으로 설정하고, 발명가들은 양적 거래 플랫폼을 자동으로 3분 K 라인을 수집기 프로그램에 합성합니다.img

그래서 우리는删除表的名称, 설정:["records"]이전에 수집된 1분 K선 데이터 테이블을 삭제합니다. 3분 K선 데이터를 수집할 준비가 되었습니다.

시작收集器程序다시 시작하세요使用数据的策略机器人

img

img

K선 그래프에서 볼 수 있듯이, BAR 사이의 간격은 3분이고, 각 BAR는 3분 주기의 K선 기둥입니다.

다음 단계에서는 사용자 정의 데이터 소스의 필요성을 실현하려고 노력합니다. 감사합니다.


관련

더 많은

키티멋지네요

zltim꼭대기

zltim꼭대기

설교찬송

다시꼭대기

작은 꿈지원에 감사드립니다, 저는 파이썬 소백이고, 을 던집니다, 더 나은 구현이나 제안이 있다면, 완벽하기를 바랍니다.