리소스 로딩... 로딩...

2.1 API를 사용하여 계정 정보, 시장 데이터, K 라인 데이터, 시장 깊이 정보를 얻을 수 있습니다.

저자:발명가들의 수량화 - 작은 꿈, 2016-11-05 16:41:04, 업데이트: 2019-08-01 09:31:23

2.1 API를 사용하여 계정 정보, 시장 데이터, K 라인 데이터, 시장 깊이 정보를 얻을 수 있습니다.

이제 두 번째 장에 이르렀습니다. 이전 장을 둘러보면 발명가들의 모든 기능에 대해 어느 정도 이해할 수 있을 것입니다.


  • API를 사용하여 계정 정보를 얻으십시오

    첫 번째 장의 투어를 통해 관리자, 거래소를 추가했다고 가정하면, 물론 우리는 발명자 양적 모형 디스크를 사용하여 코드를 테스트 할 수 있습니다.

    첫 번째 방법은 1을 테스트하는 것입니다.img

    전략 편집 인터페이스img img

    코드는 다음과 같습니다.

function main() {
    Log(exchange.GetAccount()); // 看过API 文档后知道, exchange就是交易所对象,实际上策略有个全局变量
                                // exchanges 数组,这个数组存放的就是你创建机器人或者回测时添加的交易所(可以是多个)
                                // 添加1个交易所 exchanges 数组就只包含1个交易所对象,即添加的交易所对象。
                                // 那么 exchange 和 exchanges 是什么关系呢? 其实 exchange 就是 exchanges[0] ,
                                // exchange 就是 exchanges 数组的第一个元素(这里这个元素是交易所对象)。
                                
                                // Log()函数应该也不陌生吧,这个API 就是输出一条日志,日志内容就是Log括号里面的参数。
}

로봇을 만드는 것은 또한 테스트 1라는 묶음으로도 불린다. 이 전략은 테스트 1라고 불리며, 발명가들에 의해 정량화되어 있다.img img

이 방법은 즉시 실행되고 계정 정보가 표시됩니다.img

이 비디오에서, 우리는 디스크에 있는 계정 정보와 비교합니다.img

  • 시장 데이터

function main() {
    Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
    //下面我们来试试 不停的获取行情数据。 
    while(true){ // 这里用一个无限循环的结构来不停的获取 交易所行情数据。
        Log("行情数据:", exchange.GetTicker()); // 哇! Log() 函数的括号里面可以写2个参数,第一个参数是: "行情数据:"
                                               // 第二个参数是 exchange.GetTicker() 这个函数的返回值。就是主交易所的行情数据。
                                               // 注意 Log() 函数的参数要用 逗号分隔。
        Sleep(1000);   // 咦~ 这个又是什么? 答:机器人程序 执行循环也需要休息!它可是执行很快的哦!(一秒N次)
                       // Sleep 函数的作用就是让程序暂停一会儿,括号里面的参数 1000 是 毫秒数, 1秒 = 1000毫秒。Sleep(1000);就是暂停1000毫秒。
                       // 不要小看这个参数,这个参数控制了程序的轮询频率,间接影响访问 交易所API 的频率,有些交易所API访问过于频繁可是会拒绝访问的。
    }
}

img 참고:GetTicker 함수가 얻은 데이터의 최고 가격과 최저 가격의 차이는 매우 크다는 것을 알게 될 수 있습니다. 예를 들어, GetTicker가 반환하는 시장 데이터의 높은, 낮은 것은 거래소가 정한 시기의 최고 또는 최저 가격입니다.

  • K 라인 데이터

    이 문서는 이 API 문서의 설명에 대해 설명합니다.
GetRecords(Period)	返回一个K线历史, K线周期在创建机器人时指定, Record数组结构
不加参数, 默认返回添加机器人时时指量的K线周期, 但也可以自定义K线周期
支持: PERIOD_M1 指1分钟, PERIOD_M5 指5分钟, PERIOD_M15 指15分钟, PERIOD_M30 指30分钟, PERIOD_H1 指1小时, PERIOD_D1 指一天

우리는 K 라인 데이터의 기본 주기를 (약 5분) 얻기 위해 테스트 코드를 작성했습니다.

function main() {
    Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
    //下面我们来试试 不停的获取行情数据。 
    var records = exchanges[0].GetRecords();  // 按照默认周期获取K线数据
    Log("records:", records);  // 在日志中输出 获取到的K线数据。
}

출력 표시: 레코드: [Time:1478260200000,Open:4765.14,High:4773,Low:4764.54,Close:4769.47,Volume:5211.539999999999} {Time:1478260500000,Open:4769.47,High:4773.01,Low:4764,Close:4764.78,Volume:3742.250000000002} {Time:1478260800000,Open:4764.78,High:4782,Low:4764,Close:4781.28,Volume:7929.090000000004} {Time:1478261100000,Open:4781.28,High:4795,Low:4774,Close:4792.02,Volume:11793.540000000006} {Time:1478261400000,Open:4792.02,High:4792.96,Low:4781,Close:4786.78,Volume:9204.90000000001} {Time:1478261700000,Open:4786.51,High:4788.66,Low:4775,Close:4775.31,Volume:7722.3399999999965}

이렇게 볼 수 있듯이, 변수 records는 K선 시간 순서로 멀리서 가까이까지 배열된 구조적 배열이다. 예를 들어, K선에 대해 알아보자: (어떤 그래프에서는 빨간색은 태양선을, 녹색은 성선을, 다른 그래프에서는 반대 색상을 나타냅니다.)img5분 사이클의 K 라인 예제 그래프를 참조하십시오.img 주의:한 K선 주기가 완료되면 그 값이 결정된다. 실제 사용에서는 var records = exchanges[0].GetRecords (); 반환된 데이터 레코드 배열의 마지막 요소인 records[records.length - 1]는 주기가 완료되기 전까지 끊임없이 변화한다. 심지어는 마지막 순간에 햇빛에서 음경으로 바뀔 수도 있다.

GetRecords 함수는 변수를 추가하지 않고 정책 설정에 따라 기본 주기에 데이터를 반환합니다. 또한 변수를 입력하여 K줄의 주기를 지정할 수 있습니다. 현재 회색 시스템은 GetRecords 변수를 입력하여 주기를 지정하는 것을 지원합니다. (변수를 추가하지 않고 기본 주기에 따라 데이터를 반환합니다.)

  • 시장에 대한 깊은 정보를 얻습니다.

    GetDepth는 Depth 구조를 반환합니다
function main() {
    var depth = exchanges[0].GetDepth();   //获取市场深度信息,  返回订单薄信息,一个对象包含2个属性,每个属性是一个对象数组。
    Log("depth:", depth);    // 日志中输出,一下的输出是 整理过的格式,是方便读者理解,实际上是所有内容都在一行显示的。
}

위 코드 재검토는 다음과 같습니다.

depth: 
{"Asks":[{"Price":4726.07,"Amount":15},   // 卖单数组,回测时,数据都是模拟出来的,所以Amount 都是 15,索引为0的是卖一,依次类推。
         {"Price":4726.08,"Amount":15},
         {"Price":4726.09,"Amount":15},
         {"Price":4726.1,"Amount":15},
         {"Price":4726.11,"Amount":15},
         {"Price":4726.12,"Amount":15},
         {"Price":4726.13,"Amount":15},
         {"Price":4726.14,"Amount":15},
         {"Price":4726.15,"Amount":15},
         {"Price":4726.16,"Amount":15},
         {"Price":4726.17,"Amount":15}],
"Bids":[{"Price":4726.05,"Amount":15},   //  买单数组,索引为0的是买一, 向后依次类推。
        {"Price":4726.04,"Amount":15},
        {"Price":4726.03,"Amount":15},
        {"Price":4726.02,"Amount":15},
        {"Price":4726.01,"Amount":15},
        {"Price":4726,"Amount":15},
        {"Price":4725.99,"Amount":15},
        {"Price":4725.98,"Amount":15},
        {"Price":4725.97,"Amount":15},
        {"Price":4725.96,"Amount":15},
        {"Price":4725.95,"Amount":15}]
}

이에 따른 주문 펀드는 다음과 같습니다. 실제 과정의 시장 깊이 정보는 빠르게 변화하며, 관심있는 학생들은 OKCoin을 등록하고 로그인하여 볼 수 있습니다.

img

시장 깊이 정보 (실점 데이터) 를 어떻게 사용할 수 있습니까? 실점 데이터는 많은 용도로 사용됩니다. 예를 들어 식단 (물론 계열도 있습니다).

function main() {    
    var depth = exchanges[0].GetDepth();    // 获取市场深度
    Log("depth:", depth);                   // 日志输出显示
    Log(exchanges[0].GetAccount());         // 输出 吃单前的 账户信息
    var buyPrice = depth.Asks[0].Price;     // 设置吃卖单的价格,即卖一,
                                            // 有时为确保吃单成功,这样处理:var buyPrice = depth.Asks[0].Price + slidePrice;
    var buyAmount = depth.Asks[0].Amount;   // 吃卖单的量
    exchanges[0].Buy(buyPrice, buyAmount);  // 执行买入操作, 吃掉卖一 这个单子
    Log(exchanges[0].GetAccount());         // 显示买入后的  账户信息,对比初始账户信息。可以对比出 买入操作的成交的数量。
}

발명자의 양적 모형 디스크 실행 결과:img


더 많은

플라이도그두 번째 발견은, 제가 미국 공용 호스트를 선택했을 때, 로봇 목록에는 그 경고 신호가 없었습니다. 하지만 실행했을 때, 로그에 어떤 정보도 출력되지 않았습니다.

플라이도그이 문제에 대한 발견을 추가하십시오: 로봇 목록에서 상태는 오렌지색 상삼각형에 환호호가 있습니다.

플라이도그작은 꿈, 안녕하세요, 저는 플랫폼을 사용하여 시뮬레이션을 테스트하고 있습니다. 첫 번째 단계는 계정 정보를 테스트하는 것입니다. 로그 출력이 없습니다. 오류가 나타납니다. 문제가 어디에서 발생하는지 모르겠습니다. 로봇 테스트 코드: function main (() { 로그 (exchange.GetAccount) 로그 (("테스트"); ♪ ♪ 그 결과: 테스트 1 전략: 테스트 1 (최근 업데이트 2018-09-13 14:25:33) 날짜: 2018-09-13 14:07:57 창간 최근 시작 2018-09-13 14:40:24 종료 2018-09-13 14:40:25 상태: K 라인 주기 1분 오류가 발생했습니다. 중국에서 호스팅됩니다: 42.236.82.38 - linux/amd64 (공용), ID: 118025 거래 플랫폼: BotVS/BTC_USD

플라이도그작은 꿈, 안녕하세요, 저는 플랫폼을 사용하여 시뮬레이션을 테스트하고 있습니다. 첫 번째 단계는 계정 정보를 테스트하는 것입니다. 로그 출력이 없습니다. 오류가 나타납니다. 문제가 어디에서 발생하는지 모르겠습니다. 로봇 테스트 코드: function main (() { 로그 (exchange.GetAccount) 로그 (("테스트"); ♪ ♪ 그 결과: 테스트 1 전략: 테스트 1 (최근 업데이트 2018-09-13 14:25:33) 날짜: 2018-09-13 14:07:57 창간 최근 시작 2018-09-13 14:40:24 종료 2018-09-13 14:40:25 상태: K 라인 주기 1분 오류가 발생했습니다. 중국에서 호스팅됩니다: 42.236.82.38 - linux/amd64 (공용), ID: 118025 거래 플랫폼: BotVS/BTC_USD

호크셀라토모의시에는 `exchange.GetTicker() `를 호출하고, 종종 **GetTicker: timeout**가 나타납니다.

안녕하세요, 실제 시뮬레이션 데이터는 그 거래소의 실제 데이터인가요?

비자수오시존

산디안리유exchange.GetDepth ((() 는 현재 거래소의 모든 연결된 정보를 반환합니까? 너무 많은 연결된 정보 때문에 일부 데이터만을 반환합니까?

마오바오GetRecords ((Period) 는 K줄의 역사를 반환하지만, 이 K줄의 역사 데이터는 몇 개의 K줄 바를 포함하고 있으며, 이것은 어디에서 지정되는가?

네, 제가 틀렸어요, 바로 잡았습니다.

GetAccount: 서명이 일치하지 않습니다 어떻게 했지, 몽고?

앤디 2시플왜 아날로그 디스크 깊이의 양은 모두 15인가? 아날로그 디스크는 과거 데이터 또는 무작위로 생성된 데이터인가? 만약 과거 데이터라면, 양은 값이 될 수 있다.

cjz140record는 함수이고, length는 무엇인가?depth는 객체인가? 객체와 함수가 어떻게 구분되는가? 예를 들어 depth (Asks (Price, Amount)), 여기서 depth는 객체이고, asks는 배열인가? price와 amount는 속성인가?

FangBeislidePrice는 무엇인가요?

발명가들의 수량화 - 작은 꿈좋아요, 궁금한 점이 있다면 QQ 공식 그룹 @administrator에 추가하세요

플라이도그많은 답변에 감사드립니다. 제가 제안한 대로 다시 시도해보겠습니다.

발명가들의 수량화 - 작은 꿈공용 호스트의 문제가 있는지 모르겠지만, 당신은 개인 호스트를 사용하여 테스트 할 수 있습니다. 개인 호스트는 가능해야하며, 당신은 당신의 컴퓨터에 하나를 배포합니다.

발명가들의 수량화 - 작은 꿈이 글은 이쪽에서 본 적이 있는 글입니다.

발명가들의 수량화 - 작은 꿈이 방법은 어떤 전략이 실행되는 논리를 구체적으로 살펴볼 수도 있고, 정책이 정상적으로 작동하지만 어떤 동작도 유발하지 않을 수도 있습니다.

발명가들의 수량화 - 작은 꿈빨간색 윙크는 로봇이 실행 중인 경우입니다. 오류를 신고하면 로봇 로그 또는 관리자 로그 정보를 확인해야 합니다.

발명가들의 수량화 - 작은 꿈최근 네트워크 문제, 또한 아날로그 디스크에서 동작이 업데이트되지 않은 상태에서 시간이 지났으며, Exchange.IO ("mode") 를 사용하여 동작 획득 모드를 조정할 수 있습니다.

발명가들의 수량화 - 작은 꿈실제 디스크는 24시간 운영되는 시뮬레이션 디스크이며, 몇 개의 주류 거래소의 시장을 따라가며, 모든 사용자들이 이 시뮬레이션 디스크의 참가자이며, 시장은 참조 거래소와 완전히 일치하지는 않지만, 아마도 동향은 일치한다.

산디안리유좋아요, 이제 이해가 되었습니다. 감사합니다.

발명가들의 수량화 - 작은 꿈실제 차원의 재검토, 매매 1건은 실제 데이터이다.

산디안리유정말 감사합니다. 또한 질문해 주시겠습니까, 모의 리테스트의 실제 디스크 수준의 모의에서, exchange.GetDepth (() 는 BotVS에 적합한 데이터 또는 실제 역사 데이터로 돌아갑니다.

발명가들의 수량화 - 작은 꿈반환된 파일 수 얼마나 많은지 구체적으로 살펴보기 거래소 API 인터페이스 제공, 일부 거래소에서 반환되는 것이 더 많고 더 적고 일부 거래소에서 인터페이스 지원 깊어 결합, 어떤 지원이 없습니다, 구체적으로 거래소 구현을 참조하십시오. BotVS는 기본으로 데이터를 반환합니다. 직접 호출하려면 exchange.IO 기능을 사용하여 매개 변수를 설정할 수 있습니다.

발명가들의 수량화 - 작은 꿈이것은 특정 거래소에서 얼마나 많은 K 라인을 반환하는지 지정할 수 없으며, 각 거래소에서 얼마나 많은 K 라인을 전송할 수 있는지, 다른 거래소에서는 K 라인 인터페이스를 제공하지 않으며, 관리자는 자체적으로 거래소의 거래 기록을 수집하여 K 라인을 생성합니다. 이 K 라인은 첫 번째 라인에서 시작하여 축적됩니다.

발명가들의 수량화 - 작은 꿈^^ 처음엔 저도 잘못했어요~

발명가들의 수량화 - 작은 꿈자, 이 문제에 대해 생각해보면, 두 가지의 문제가 있습니다. - 1, 깊이 데이터의 양은 너무 커서 초당 변하고 빠르게 변하고 있습니다. 우리가 보는 실제 디스크는 단지 조각 데이터입니다. - 2, 실제 깊이 데이터를 만들더라도, 하지만 지금 이 순간 재검토에 참여하는 참가자는 우리 자신들 뿐이고 다른 참가자가 없기 때문에, 주문한 희박한 깊이 환경을 정확하게 시뮬레이션할 수 없습니다. 사실 현재 재검토 시스템과는 큰 차이가 없습니다. 하지만 우리는 현실에 가장 가까운 최적화를 고려할 것입니다.

앤디 2시플심층 데이터는 아직 일어나지 않았으며, 가격 곡선은 과거에 일어났습니다. 개인은 과거와 미래의 데이터가 함께 현재의 매매를 판단하는 것이 더 신뢰할 수 있다고 생각합니다. 심층 데이터를 기록하는 것이 강력합니다.

발명가들의 수량화 - 작은 꿈깊이 데이터 크기는 너무 크다. 모든 데이터를 기록하면 매우 많을 것이다. 따라서 깊이 데이터는 1차원 이외의 모든 것이 모형 값이다.

발명가들의 수량화 - 작은 꿈records는 API 함수 GetRecords가 반환하는 K줄 데이터를 수신하는 변수이며, length는 JS 언어의 대수형 변수의 길이 속성이며, 대수형의 길이를 나타냅니다 (즉, 그 요소의 개수), depth와 비슷한 records는 또한 API 문서에서 찾을 수 있는 records, depth, ticker의 데이터 구조를 가진 GetDepth 함수가 반환하는 깊이 데이터를 수신하는 변수입니다.

발명가들의 수량화 - 작은 꿈滑价 (滑价) 는, 번역하면 조금 솔직한, 단 한 점 더 한 점의 가격을 먹기 위해, 더 쉽게 거래를 하는 것이다.