Crypto Quant: Binance 및 Backtrader를 사용한 BTC의 프로그래밍 방식 거래 — PlatoBlockchain Data Intelligence의 2부. 수직 검색. 일체 포함.

Crypto Quant : Binance 및 Backtrader를 사용한 BTC의 프로그래밍 방식 거래 — Part 2 of 3


Crypto Quant: Binance 및 Backtrader를 사용한 BTC의 프로그래밍 방식 거래 — PlatoBlockchain Data Intelligence의 2부. 수직 검색. 일체 포함.

이 부분에서 we 설치하고 싶습니다 백트레이더 이전 섹션에서 수집한 바이낸스 데이터에 대해 일부 거래 모델을 백테스트합니다.

Backtrader 및 설정에 대한 수많은 기사와 비디오가 있습니다. 이 인기 있는 Python 라이브러리는 과거 데이터를 사용하여 거래 전략을 백테스트하는 Quant 작업을 용이하게 하여 본질적인 질문에 답합니다. "주어진 BUY/SELL 전략을 사용하여 거래했다면 얼마나 수익성이 있었을까요?". 이것은 처음에는 수학적 연금술처럼 느껴지지만 역사적 데이터는 역사적이라는 것을 기억해야 합니다! 어제 효과가 있었던 거래 전략이 오늘 효과가 없을 것 같습니다... 하지만 곧 다시 설명하겠습니다.

백트레이더('bt') 설치 지침은 다음과 같습니다. 여기에서 지금 확인해 보세요.. 참고: mapplotlib 버전 3.2.0 이상에는 알려진 문제가 있으므로 주의하십시오.

빠른 시작 가이드는 읽을 가치가 있습니다. 찾아보세요 여기에서 지금 확인해 보세요..

RSI

여기서 우리가 Backtrader로 시도할 것은 백테스팅입니다. RSI (상대 강도 지표) 연초부터 과거 암호화 데이터(BTC용)에 대한 거래 전략.

RSI 모멘텀 지표 설명 여기에서 지금 확인해 보세요.. 그것은 주어진 거래 자산에 대한 상대적인 과매수 및 과매수 조건을 측정하고 거꾸로 틱(거래 간격)의 수인 '기간'의 매개변수를 측정합니다.

기간 매개변수의 기본값은 14이므로 간격이 분인 경우 수식은 14개의 간격 틱 데이터를 포함합니다. 다음에 살펴보겠지만, 각 기술 지표에는 시장 상황에 맞게 '조정'하는 매개변수가 있습니다. 이러한 매개변수는 전략 내에서 주어진 지표의 수익성에 큰 영향을 미칩니다.

백테스트.py

백테스트 설정: 백테스트.py 공유 됨 여기에서 지금 확인해 보세요.. 이것은 다음에 정의할 백테스트 실행을 위한 백테스트 구조를 제공합니다. 이것은 상당히 표준적인 'b' 설정입니다. 이 코드의 일부를 검토해 보겠습니다. Python 백테스트에서 배울 수 있는 많은 예제와 비디오 자습서가 온라인에 있습니다..

여기 클래스 정의에서 RSI 전략에 대한 매개변수를 설정합니다.

  • 말 수가 많은: 백테스트 동안 로그 데이터를 출력하려는 ​​경우
  • 마파라: 이동 평균 주기, 고려해야 할 틱 수
  • : 매수/매도할 주식의 수
  • 상단: 과매수 지표의 상한선
  • 절감: 과매도 지표의 하한선
  • 손절매: 매도를 위한 손절매 설정

XNUMXD덴탈의 다음() Backtrader 전략 클래스의 기능은 데이터의 각 간격 '틱' 후에 발생합니다. 여기에 데이터에 따른 buy() 또는 Sell()이 있습니다. 이 경우 RSI 지표와 임계값입니다.

여기에서 우리는 정의합니다 실행 테스트() 우리 코드에 의해 호출될 함수. 앞서 언급한 RSI 전략 기능이 예.

모든 상당히 표준적인 Backtrader 물건. 데이터에 대해 이것을 실행하는 방법을 살펴보겠습니다.

데이터 백테스트

1년 2월 2021일부터 XNUMX월 XNUMX일까지의 데이터(마지막 섹션의 단계 사용)를 가져와야 합니다. 이 데이터는 다음과 같은 파일에 저장됩니다. BTCUSDT-20210101–20210102–1m.csv 1440 CSV 라인으로 하루 중 XNUMX분에 하나씩.

여기에 비트코인(BTC)의 하루 분 단위 거래에 대한 코드 및 출력입니다.

자세히 살펴보면:

매개변수는 간단합니다. 12틱 기간의 RSI 지표, 손절매 없음 및 과매수 및 과매도 트리거에 대한 기본 한도 70,30을 사용하여 하루 거래를 분석하려고 합니다.

표준 RSI 지표 전략으로 1월 XNUMX일 bt 결과

출력의 마지막 줄은 이 백테스트의 결과를 요약합니다.

/BTCUSDT-20210101-20210102-1m.csv, RSI (Pd 12) (SL 0.0%) (U70 L30) 순 $777.78 (0.78%) WL 18/7 SQN 1.76

RSI 기간 12, 0(아니오) 손절매, (U) 상한 70 (L) 하한 30, 777.78번의 승리 거래와 18번의 손실 거래로 $7의 순이익(XNUMX일 기준).

마지막 수치는 SQN, '시스템 품질 번호'(SQN)는 거래자가 거래 시스템의 장점, 바람직함, 품질을 결정하는 데 도움을 주기 위해 고안되었습니다. 좋은 품질의 전략은 거래 가능하고 효율적인 전략으로 간주됩니다.*

다음 SQN 값은 다음과 같은 "품질"을 제안합니다.

  • 1.6–1.9 평균 미만
  • 2.0–2.4 평균
  • 2.5–2.9 좋음
  • 3.0–5.0 우수
  • 5.1–6.9 최고
  • 7.0 — 성배

SQN 공식:

SquareRoot(NumberTrades) * Average(TradesProfit) / StdDev(TradesProfit)

일반적으로 우리는 통계적으로 유의미한 이 메트릭에 대해 최소 30번의 거래를 주장하지만 짧은 시간 동안 백테스트를 테스트하기 때문에 지금은 무시할 것입니다.

플롯의 섹션을 확대할 수 있습니다. 예를 들면 다음과 같습니다.

여기에서 RSI 값이 30 아래로 떨어질 때 매수 신호(녹색 위쪽 화살표)가 표시되고 RSI가 70을 초과할 때 수익성 있는 매도 신호(파란색 원)가 표시됩니다. 오른쪽 하단 모서리에서 RSI 값을 참조하십시오. .

777.78번의 승리 거래와 18번의 손실 거래가 있는 $7의 이익(1.42일 기준)은 비교적 양호한 거래일(+XNUMX%)의 경우 특히 좋습니다. 거래량이 많은 강세일에 무엇을 달성할 수 있는지 상상해 보십시오!

모델 매개 변수

다른 요일에 대해 get_data를 실행하고 이를 별도로 분석합니다. 다양한 RSI 매개변수가 매일 수익성에 어떤 영향을 미치는지 확인하십시오.

예를 들어, BTC 거래 당일이지만 RSI 기간이 20가 아닌 12이고 승패가 2/3이고 순이익 -$21.51 (거래 수수료 포함). 지난 백테스트와 큰 차이가 있습니다!

다른 RSI 한계(기본 70/30 제외) 및 손절매 매개변수로 실험할 수도 있습니다. 손절매는 가격이 실행된 구매 주문에 비해 일정 수준 이하로 떨어지면 자동 판매 주문입니다. 이름에서 알 수 있듯이 이는 변동성 위치에 들어간 후 "손실을 막는" 역할을 할 수 있습니다.

정지 - 손실

여기서 손절매를 설정하는 방법은 다음과 같습니다.

  • 0 : 손절매 설정 없음, 표시기가 매도 주문을 트리거할 때까지 기다립니다.
  • SR 0.00x : 0.001은 구매 가격보다 낮은 % 값의 손절매, 0.1% 미만
  • -0.0x : 가격이 상승함에 따라 후행 손절매가 거래를 따르고, 0.01은 구매 가격보다 1% 낮은 후행 손절매입니다.

이 손절매는 각 거래에 대한 중요한 매개변수이며 당연히 실적에 상당한 영향을 미칠 수 있습니다. 손절매 전략에 대한 자세한 내용은 여기에서 지금 확인해 보세요..

여기 backtest.py에서 우리가 backtrader를 사용하여 이것을 설정한 곳입니다:

다음은 방금 분석한 것과 동일한 실행이지만 0.1%의 후행 손절매가 있습니다.

383.67승 12패의 순이익은 $12로 이전 손실보다 훨씬 낫습니다. 플롯에서 후행 손절매가 매도(과매수) 신호를 기다리는 지표로서 많은 거래가 손실로 미끄러지는 것을 방지했음을 알 수 있습니다.

단일 표시기 내에서 이 설정에서는 다양한 가능한 순열이 있습니다.

  • 10~30개 간격(20개 변형) 사이의 기간 범위
  • 손절매 설정(5가지 실용적인 변형을 상상해 봅시다)
  • 과매수/과매도 임계값(지금은 5가지 변형을 상상해 봅시다)

20x5x5 또는 매일 500가지 다양한 변형. 이러한 매개변수를 손으로 하나씩 검사하는 것은 어리석은 일이지만 우리는 어떤 매개변수가 가장 수익성이 높고 거래 품질이 가장 높으며 그렇지 않은지 알고 싶습니다.

퀀트 연금술!

이것은 우리를 이 Crypto Quant 탐색의 다음 단계로 안내합니다. 우리는 주어진 거래 기간 동안 가장 수익성이 높고 품질이 우수한 거래 전략 매개변수를 무차별 대입하여 결정한 다음 이러한 매개변수가 어떻게 진행되는지 확인할 수 있습니다.

Source: https://medium.com/@gk_/crypto-quant-programmatic-trading-of-btc-using-binance-and-backtrader-part-2-of-3-d8af44c93e2b?source=rss——-8—————–cryptocurrency

타임 스탬프 :

더보기 중급