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

초보자, 확인해 보세요 암호화폐 양적 거래로 안내 (3)

저자:니나바다스, 창작: 2022-04-20 11:46:56, 업데이트: 2022-04-20 16:53:34

초보자, 확인해 보세요 암호화폐 양적 거래로 안내 (3)

오류 메시지

이전 기사에서 우리는 프로그래밍 및 양적 거래라고 불리는 것이 플랫폼에서 얻은 데이터를 기반으로 일련의 계산, 판단 및 트리거를 수행하고 거래하기 위해 플랫폼 계정을 작동시키는 스크립트 프로그램이라는 것을 배웠습니다. 데이터 획득 및 운영 계정의 이러한 작업은 모두 플랫폼 API 인터페이스를 통해 수행됩니다. 간단히 말해서 스크립트 프로그램은 플랫폼과 상호 작용합니다. 상호 작용이기 때문에 정상적인 상호 작용과 비정상적인 상호 작용이 있어야합니다. 비정상적인 상호 작용이 발생하면 인터페이스는 예외 정보를 반환합니다.

물론, 시장에서 프로그래밍 및 양적 거래 시스템은 또는 자체 개발 된 프로그램에는 다양한 오류 요청 및 메시지가있을 것입니다. 이러한 오류 메시지는 플랫폼 API에 의해보고 된 오류 메시지로 제한되지 않습니다. 또한 운영 중인 프로그램 예외 오류, 구성 오류, 프로그램 문법 오류 등과 같은 다른 오류가 있습니다.

FMZ 양자 거래 플랫폼에서 오류 메시지는 대략 몇 가지 범주로 나눌 수 있습니다:

  • 전략 문법 오류 이 유형의 오류는 가장 흔한 오류이며, 일반적으로 초보자가 프로그래밍에 익숙하지 않은 상황에서 발생하며, 학습 중에 코드를 작성하는 데 문법 오류가 있습니다. 예를 들어:

    img

    코드는 괄호와 같은 문자가 없이 작성되었습니다. 이러한 종류의 오류를 위해 오류 프롬프트는 일반적으로 전략 편집 페이지에서 볼 수 있으며, 그 상황에서 전략은 실행할 수 없습니다 (전략이 실행되면 이미지에 표시 된 것처럼 오류가 보고됩니다).

    img따라서 코드를 작성한 후 전략 편집 페이지를 한 번 살펴보는 습관을 가질 수 있습니다. 빨간색 십자가가 있는지 확인하기 위해서요.

  • 전략 프로그램 BUG로 인해 작동 중인 프로그램 예외 만약 프로그램이 동작 중 오류를 가지고 있다면, 예외의 트리거가 프로그램을 비정상적으로 멈추게 하고, 이런 종류의 오류 메시지가 표시됩니다.

    img

    img

    이러한 종류의 오류는 모두 프로그램 예외를 유발하고 프로그램을 실행하지 못하게 할 수 있습니다.

  • 잘못된 구성 및 설정으로 인한 오류

    FMZ 플랫폼에서 모든 거래 쌍은X_Y, 여기서 X은 거래 통화의 이름을 나타내고, Y은 코팅 통화의 이름을 나타냅니다. (미래 암호화 마진 계약에서 거래 쌍의 코팅 통화는 일반적으로 USD로 표현되며, 이전 기사에서 소개되었습니다.) 예를 들어,BTC_USDT제가 잘못 썼다고 가정해 봅시다.BTC-USDT.

    img

    FMZ 플랫폼에서 백테스트 시스템에서 오류 보고:

    img

    봇에서 오류 보고:

    img

    혹은, 초보자들이 흔히 겪는 가장 일반적인 오류:

    img

    이러한 오류는API KEYFMZ 계정의 비밀번호 변경 후 구성된 교환 객체에서 (사용자의 API KEY는 모두 브라우저 끝에서 암호화되어 FMZ 플랫폼에 구성됩니다). 이는 전략을 시작할 수 없도록 만들 것이며, 이는 보고된 오류를 일으킬 것입니다.

  • 호출 인터페이스에서 발생한 오류

    인터페이스 호출 오류는 종종 전략을 실행 할 때 발생합니다. 이전 기사에서 우리는 FMZ 플랫폼의 인터페이스가 다음과 같이 나뉘어 있음을 연구하고 배웠습니다.네트워크 요청을 하는 인터페이스그리고네트워크 요청을 하지 않는 인터페이스. 인터페이스 오류는 전략 프로그램이 중지되는 것을 직접적으로 유발하지 않습니다. 일반적으로 인터페이스 호출 예외로 인해 잘못된 데이터가 반환되며 전략은 오류 관용을 수행하지 않습니다. 그런 다음 잘못된 데이터로 인한 프로그램 예외 오류가 프로그램을 중지시킵니다. (실점 관용의 개념은 이미 이전 기사에서 소개되었습니다.)

    여기서는 네트워크 요청을 하는 인터페이스의 몇 가지 오류 메시지를 나열합니다:

    • 네트워크 타임아웃

      img

      초보자가 종종 만나는 오류 메시지의 하나는 국내 네트워크 장치 (PC 또는 국내 서버) 를 사용하는 데서 발생합니다. 대부분의 플랫폼이 차단되어 있기 때문에 많은 플랫폼은 기본적으로 국내 네트워크 (중국) 에 액세스 할 수 없으며 액세스 인터페이스는 타임 아웃을보고합니다.

    • HTTP 429 오류

      img

      그것은 고전적인 오류 메시지 중 하나입니다. 이유는 플랫폼 인터페이스가 너무 자주 호출되어 플랫폼의 주파수 한계를 초과하기 때문입니다. (전 기사에서 언급되었습니다). 일부 신입생들은 여러 플랫폼 또는 여러 플랫폼 계정의 API 키를 신청하면 오류가 발생하지 않을 것이라고 말할 수 있습니다. 플랫폼에 의해 인터페이스에 액세스하는 주파수 제한이 일반적으로 IP 주소를 기반으로한다는 것을 알아야합니다. 간단히 말해서, IP 주소에서 전송된 모든 요청이 주소에 계산되는 한, 요청 수가 제한을 초과하면 플랫폼 서버는 IP의 액세스를 거부합니다.

    • 플랫폼 인터페이스 서비스 오류

      위에서 언급한 타임 아웃 및 429 오류는 네트워크 계층의 오류입니다. 플랫폼 인터페이스 서비스 계층에 문제가있는 경우 오류가 보고됩니다. 예를 들어, 나는 현금 시장 코트를 얻고 싶지만 존재하지 않는 거래 쌍을 설정합니다. FMZ 플랫폼의 디버깅 도구에서 테스트합니다. 디버깅 도구는 매우 편리한 테스트 도구이며 함수 호출 및 데이터 획득의 실제 봇 테스트에 매우 적합합니다.

      img

      디버깅 도구의 실행 결과; 디버깅 도구의 실행과 봇의 실행 사이에 차이가 없습니다.img

      Huobi	error GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
      

      여기서 오류 메시지는 거래 쌍이 유효하지 않다는 것을 의미합니다 (여기를 참조하십시오:"err-msg":"invalid symbol") 의 내용입니다. 예를 들어, 이와 같은 서비스 관련 오류가 많이 있습니다. 예를 들어, 레버리지를 설정할 때, 일부 플랫폼은 소수점을 가진 레버리지 값을 지원하지 않습니다. 레버리지 값이 소수를 가지고 있다면 인터페이스 호출에서도 오류가 발생합니다.

    네트워크 요청을 생성하지 않는 인터페이스 호출을 나열합니다:

    • 세트 퓨처스 계약 코드 일부 인터페이스는 시스템에 일부 글로벌 변수를 설정하고 네트워크 요청을 하지 않습니다. 예를 들어:

      img

      그러나 매개 변수가 전달되거나 잘못 쓰여진 경우 오류도 보고됩니다.

      img

    어떤 종류의 오류이든, 표시되는 오류 메시지는 문제를 찾는 핵심 정보입니다. 즉, 오류 메시지에서 문제를 알 수 있습니다. 번역 도구를 사용하여 오류 정보를 읽을 수있는 언어로 번역하여 키 단어를 추출 할 수 있습니다. 예를 들어,"err-msg":"invalid symbol"당신은 아마도 오류가 거래 쌍의 잘못된 설정에 의해 발생한다는 것을 알 수 있습니다. 오류 메시지에 대해서는, 우리는 여기에서 토론을 종료합니다. 우리는 FAQ가 수집되고 지속적으로 업데이트 될 게시물을 가지고 있습니다. 검색:https://www.fmz.com/bbs-topic/1427.

백테스트 시스템

백테스트 시스템은 또한 양적 도구의 핵심 포인트입니다. 백테스트 시스템은 전략의 프로토타입을 쉽게 테스트하고 초기에는 전략의 잠재적 인 버그와 논리적 문제를 확인할 수 있지만 백테스트 시스템은 합리적으로 볼 필요가 있습니다. 백테스트 시스템은 어느 정도 전략의 문제를 반영 할 수 있습니다.

다음은 FMZ 플랫폼에서 FMZ가 지원하는 다른 전략 언어의 수준에서 백테스트 시스템의 간략한 설명입니다. (백테스트 시스템의 일부 소개는 이전 기사에서 언급되었습니다.)

  • 자바스크립트

    백테스트는 브라우저에서 수행되며 로컬 하드웨어 자원을 사용합니다.

  • 파이썬

    도커의 백테스트에서, 어떤 도커를 할당할지 선택할 수 있습니다. FMZ 플랫폼의 퍼블릭 도커의 큰 부하를 고려하여 로컬 도커 백테스트를 사용하는 것이 좋습니다.

  • C++

    스크립트 언어와 달리 C++ 전략은 컴파일되고 실행되어야 합니다. C++ 언어 전략은 먼저 FMZ 플랫폼 (서버) 에서 컴파일됩니다 (코드 작성에 문제가 있으면 컴파일이 통과되지 않을 수 있으며 오류 메시지가 직접 표시됩니다). 컴파일이 통과되면 FMZ 플랫폼 (서버) 에서 백테스트됩니다.

  • 마일랑게이지

    하위 계층은 자바스크립트로 구현되며 백테스트는 브라우저에서도 수행됩니다.

  • 시각화

    하위 계층은 자바스크립트로 구현되고 백테스트는 브라우저에서도 수행됩니다.

FMZ 퀀트 트레이딩 플랫폼의 백테스트 시스템은 두 개의 백테스트 모드를 가지고 있습니다 (전략이 어떤 언어로 작성되었든 상관없이 백테스트 모드는 백테스트 시스템의 설정이며 설정 옵션은 FMZ에서 지원되는 모든 언어에 동일합니다).

img

백테스트 시스템의 지침은 FMZ 플랫폼에서 전략 작성 자습서의 관련 부분을 참조 할 수 있습니다:

https://www.fmz.com/bbs-topic/9091

    1. 시뮬레이션 레벨 백테스트 시뮬레이션 레벨 백테스트는 일반적으로 K-라인 데이터를 기반으로 연속 시간 노드의 가격 데이터를 시뮬레이션 방식으로 생성하는 것입니다.
    There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.  
    

    바로 다음 그림에서 보이는 시뮬레이션과 같습니다.img

    물론, 그림에서 보이는 것보다 조금 더 복잡합니다. 배트테스트 시스템에서의 시뮬레이션을 실현하기 위해서요. 여기서 더 논의하지 않겠습니다. 원리를 알고 나서, 당신은 시뮬레이션 수준 백테스트의 단점에 주의를 기울여야 합니다. 시뮬레이션 수준 백테스트는 매우 빠르지만 (시뮬레이션에 의해 생성 된 가격은 순차적으로 출시 된 실제 초당 가격이 아니기 때문에). 그러나 전략이시뮬레이션된 틱 변화 추세, 전략은 훌륭하게 수행 할 것입니다 (하지만 실제로, 가격은 K-라인 바의 구조 내에 있지만, 트렌드에 따라 변하지 않을 수 있습니다). 여기 시뮬레이션된 틱 데이터를 생성하는 데 사용되는 K-라인은 아래 K-라인이라고 불립니다.하위 K-라인 기간, 전략 설정 페이지에 다음과 같은 그림으로 설정됩니다:

    img

    여기서 1분이라는 것을 설정합니다. 즉, 1분이라는 기간을 가진 K선 데이터를 데이터 소스로 사용하여 시뮬레이션된 틱 데이터를 생성합니다.

    또 다른 점은, 고주파 전략의 경우 시뮬레이션 수준의 백테스트가 적절하지 않다는 것입니다. 하지만, 트렌드 전략의 경우, 시뮬레이션 수준의 백테스트는 어느 정도 전략의 성능을 보여줄 수 있습니다.

    1. 실제 시장 수준 역 테스트 시뮬레이션 수준에 대해 이야기 한 후에 실제 시장 수준에 대해 이야기 해 봅시다. 일반적으로 말해서 실제 시장 수준 백테스트는 테스트에서 초당 가격 데이터를 진정으로 공개하고 전략이 시장의 각 초마다 가격을 추적하도록하는 것입니다. 이러한 종류의 백테스트 모드는 높은 빈도로 일부 거래 전략을 테스트하고 특정 참조 값으로 결과를 얻을 수 있습니다. 단점은 실제 시장 수준에서 백테스트 데이터의 양이 너무 커서 큰 시간 범위에서 테스트 할 수 없다는 것입니다 (일반적으로 시간 범위는 1 일 미만입니다).트레이드 히스토리가 필요없어(거래의 역사 데이터, 시장 깊이 데이터 또한 실제 시장 수준 백테스트에서 초당 스냅샷을 가지고, 그래서 실제 시장 수준 백테스트 데이터의 양은 매우 크다.) 적절히, 그림에서 보이는 것처럼 백테스트의 범위를 증가:

    img

FMZ 퀀트 백테스트 시스템의 데이터 소스는 어디에 있습니까? 백테스트 시스템은 FMZ 플랫폼의 대시보드의 데이터를 기본으로 사용합니다. FMZ의 대시보드는 자동으로 각 플랫폼의 각 화폐의 설정 시장 데이터를 수집하고 플랫폼의 백테스트 시스템에 제공합니다.

    1. FMZ 대시보드의 데이터를 사용 이전 기사 들 에서 언급 되었습니다.https://www.fmz.com/bbs-topic/9245# 양적 거래 플랫폼- 네 플랫폼에서 제공하는 백테스트 데이터는 제한된 수의 거래 쌍만을 지원합니다. (전 시장 및 모든 통화의 백테스트 데이터는 천문학적인 수이며, 모두를 수집하는 것은 비현실적입니다. 플랫폼은 주류 플랫폼 및 주류 통화의 시장 데이터를 수집했습니다.)
    1. 사용자 지정 데이터 소스의 데이터를 사용 사용자 지정 데이터 소스를 설정하기 위해 백테스트 페이지에서 옵션을 선택할 수 있습니다. 간단히 말해서, 플랫폼에서 데이터를 가지고 있다면 FMZ 플랫폼의 형식 요구 사항에 따라 FMZ 플랫폼의 백테스트 시스템에 제공 할 수 있습니다.

    img

또한 FMZ API 문서에 사용자 지정 데이터 소스에 대한 몇 가지 지침이 있습니다:https://www.fmz.com/api#Custom 데이터 소스

FMZ 플랫폼에 있는 다이제스트에도 몇 가지 스키마가 있습니다. 초보자라면 그 스키마를 참조하여 공부할 수 있습니다.

연구, 시험 및 생각

당신은 프로그래밍 및 양적 거래를 할 수 없습니다공부, 테스트그리고생각- 네 아무것도 없는 곳에서 질문을 생각하는 것은 비효율적입니다. 문제를 해결하고 질문을 생각하는 가장 효율적인 방법은정보 검색그럼직접 시도해봐, 그리고생각하고 분석하세요문제가 해결되지 않으면 위의 작업을 반복하십시오.

하지만, 보통 초보자들이 문제들을 겪을 때, 그들은 이렇게 느끼죠.

프로그램과 양적 전략을 쓰는 것은 매우 어렵습니다! 아직도 혼란스러워요, 심지어 제가 한동안 연구해왔어요! 시작하기 전에 포기하고 싶어! ...

FMZ 플랫폼을 시작하는 것은 실제로 매우 쉽고 간단합니다. 첫째, 당신은 정보를 검색하는 데 잘해야합니다. FMZ 양자 거래 플랫폼에서 스퀘어, 포럼다이제스트에 많은 정보가 있습니다.

img

그 다음에는 운영 능력도 있습니다; 백테스트 시스템과 디버깅 도구를 사용하여 테스트를 쉽게 수행 할 수 있습니다. 이것은 완전한 전략을 테스트하는 것을 의미하지는 않습니다. 사실, 완전히 기본이 없다면 FMZ Quant의 백테스트 시스템에서 직접 자바스크립트 프로그램의 기본을 배울 수도 있습니다.

이것은 제가 종종 JS를 공부하는 튜토리얼 웹사이트입니다.https://www.runoob.com/js/js-loop-for.html이 웹사이트는 JS에만 국한되지 않고 모든 종류의 IT 지식들을 검색하고 배울 수 있습니다. 예를 들어, 저는 JS의 정규 표현식을 어떻게 사용하는지 모르겠어요. 어떻게 해야 할까요? 물론, 먼저 정보를 찾아보고, 그런 다음 시도해 보세요!

이런 예제를 봤습니다.img만약 제가 그것을 테스트하고 싶다면, FMZ의 백테스트 시스템을 사용하여 연구를 위해 테스트할 수 있습니다.

배트테스트 시스템에 무작위로 플랫폼을 설정합니다.img

다음 코드를 테스트하세요:

function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}

function main() {
    var strEmailAddress1 = "13512345678"
    Log(strEmailAddress1, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress2))
}

img

이 책 은 정말 훌륭 한 연구 도구 입니다. 예를 들어, 자바스크립트 언어의 루프 로직을 작성하는 방법을 배우고

배열의 순서에 따라 배열 변수의 모든 요소를 루프로 인쇄합니다.

function main() {
    var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
    for (var i = 0 ; i < arr.length ; i++) {
        Log(arr[i])
    }
}

img

즉시 배우려는 동기가 있습니까? 사실, FMZ에서, 당신은 완전히 자바스크립트의 기초를 배울 수 있습니다. 자바스크립트 튜토리얼을 보면서 백테스트 시스템에서 작업을 시도함으로써. 자바스크립트 문법을 거의 마스터 한 후, 당신은 실제로 데이터를 얻기 위해 플랫폼 인터페이스를 사용하여 다음 단계로 들어갈 수 있습니다.디버그 도구FMZ에서 실제 인터페이스 테스트를 수행합니다. 그 다음에는 더 많이 생각해야 합니다. 하나의 사례에서 추론을 이끌어내야 합니다. 테스트, 검증, 비교 분석 등으로 말이죠.


더 많은