PlatoBlockchain 데이터 인텔리전스 백테스트 알고리즘을 위한 3가지 키. 수직 검색. 일체 포함.

알고 암호화 백테스팅을 위한 3가지 열쇠

알고리즘 암호화폐 거래에 관한 많은 기사는 거래 장비 구축 및 코드 백테스팅의 현실을 지나치게 단순화합니다. 여기서는 종종 무시되지만 백테스팅의 3가지 측면을 검토하겠습니다. 결과를 얻는 열쇠.

PlatoBlockchain 데이터 인텔리전스 백테스트 알고리즘을 위한 3가지 키. 수직 검색. 일체 포함.

백테스팅의 3가지 핵심을 바로 살펴보겠습니다.

  • 양초 낮은 값 정류장
  • 관리 실행 가격
  • 반복적으로 백테스트와 실제 비교

이는 강력한 백테스팅이 필요하다는 것을 의미합니다. 많은 노력 (놀랍지 않습니다!) 하지만 이에 대해 더 자세히 살펴보겠습니다.

많은 백테스팅 장비는 캔들을 사용합니다. 가까운 각 틱의 값입니다. 손절매 주문을 통한 실시간 거래 귀하의 포지션을 정지시키는 것은 틱의 낮은 값입니다.

하자 난o예를 들어요. 아래 BTC 차트에서는 해당 틱의 저점에서 고점의 대략 중간 지점인 아래쪽 녹색 캔들의 파란색 선에서 매수 주문을 실행한다고 가정해 보겠습니다.

다음 틱의 저점은 빡빡한 정지 손실인 경우 정지를 유발할 수 있습니다. 그러나 백테스트 코드가 마감 시 손실 정지 판매를 가정하는 경우에는 그렇지 않습니다. 위치는 시뮬레이션에서 앞으로 확장됩니다. 녹색 진입 체크(십자) 뒤에 있는 빨간색 캔들을 자세히 살펴보세요. 종가와 저가가 매우 다릅니다. 이 특정한 경우에는 후자가 더 큰 이익을 보여줄 것입니다.

따라서 공개 가격보다 높은 가격에 매수하는 것이 미치는 영향 할 수 있습니다 시뮬레이션 및 백테스팅에 심각한 결과를 초래할 수 있습니다. 그것은 지원 실행된 가격과 개시된 틱의 차이는 포지션이 확장되고 이익을 얻는 방식에 큰 차이가 될 수 있습니다.

실행 가격은 거래 이익에 연쇄적인 영향을 미칠 수 있습니다.

2개의 포지션을 고려해보세요. 하나는 20.00(라운드 숫자 사용)에 진입했고, 두 번째 포지션은 약간 높은(시장 구매) 가격인 20.50에 진입했습니다. 0.50 단위의 [상대적으로 작은] 차이는 계단식 효과 시간이 지남에 따라 포지션의 이익에 대해. 왜? 후속 틱에서는 ​​낮은 값이 손실 중지 설정보다 낮을 수 있으므로 20.50 위치가 중지될 수 있기 때문입니다. 그 사이에 첫 번째 위치는 더 많은 틱에서 이익을 얻기 위해 계속됩니다. 큰 차이!

이 문제를 해결하려면 실행 가격을 추정해야 합니다…

백테스팅의 임무는 과거에 실행된 모델/전략의 수익을 추정하는 것임을 명심하는 것이 중요합니다.

귀하의 백테스팅 코드는 BUY 또는 SELL 측에서 거래가 받은 가격(과거 시제)을 알 수 없습니다.

과거 시장 데이터를 살펴보면 실제 주문 실행 가격을 알 수 없습니다. 실제로 포지션의 실제 가격을 보여주는 로그가 있을 수 있지만 백트레이더는 개별 거래 로그가 아닌 일반 시장 데이터를 보고 있습니다.

진입 시 틱에 시가를 사용하는 것은 현실적이지 않으며 종가도 사용하지 않습니다. 이것이 왜 큰 차이를 만드는가? 이전 섹션에서 논의한 바와 같이 실행 가격이 더 높은 진입으로 인해 백테스트 시뮬레이션보다 더 빨리 지정가 매도 주문이 발생할 수 있기 때문입니다.

백테스팅 결과가 약간 비관적이기를 원합니다.

실행 가격을 정확히 어디까지 추정해야 하는지에 대한 실제 답변은 없습니다. 시뮬레이션에서 이를 정확하게 얻을 수 없다는 점을 이해하는 것이 중요합니다. 매수 주문에 대해 공개 가격을 가정하는 것은 일반적으로 낙관적이며 이상적인 접근 방식은 아닙니다. 마찬가지로 SELL 주문에 대한 CLOSE 가격을 가정하면 실제 결과와 크게 다를 가능성이 높습니다.

시장에서 구매

선택할 수 있는 몇 가지 옵션은 다음과 같습니다. 매수 시장 주문의 경우:

a) 틱의 OPEN과 CLOSE 사이의 중간(또는 미리 정의된 거리)에서 실행 가격을 추정합니다.

b) 틱의 LOW와 HIGH 사이의 중간(또는 미리 정의된 거리)에서 실행 가격을 추정합니다.

c) OPEN 또는 LOW, CLOSE 또는 HIGH 중에서 임의의 가격을 선택합니다.

시장 활동은 본질적으로 무작위적인 경향이 있지만 나는 (c)의 팬이 아닙니다. 왜냐하면 귀하의 백테스트 코드 때문입니다. 멱등적이지 않습니다. 동일한 데이터에 대해 실행될 때마다 다른 결과가 반환됩니다. 이건 지저분해요.

옵션 (b)는 변동성이 더 큰 시장을 강조하는 반면 옵션 (a)는 덜 그렇습니다. 이것은 귀하에게 달려 있지만 선택을 해야 합니다. 예를 들어 다음을 사용할 수 있습니다. CVI와 같은 변동성 지수 그런 다음 백테스팅 기간 동안 해당 값에 따라 선택하세요.

SELL 지정가 주문을 받아 이익을 얻습니다.

선택할 수 있는 몇 가지 옵션은 다음과 같습니다. 이익을 위해 SELL 지정가 주문을 받음:

a) 틱의 OPEN과 HIGH 사이의 중간(또는 미리 정의된 거리)에서 실행 가격을 추정합니다.

b) 틱의 CLOSE와 HIGH 사이의 중간에서 실행 가격을 추정합니다.

c) 위의 양초 값 중에서 임의의 가격을 선택합니다.

손절매 SELL 지정가 주문

선택할 수 있는 몇 가지 옵션은 다음과 같습니다. 손절매 SELL 지정가 주문의 경우:

a) 틱의 OPEN과 CLOSE 사이 중간에서 실행 가격을 추정합니다.

b) 틱의 CLOSE와 LOW 사이 중간에서 실행 가격을 추정합니다.

c) 위의 양초 값 중에서 임의의 가격을 선택합니다.

주문에 따라 LOW 값과 HIGH 값의 사용에 유의하세요. 위치. 이익 실현 지정가 매도 주문은 가격 상승을 처리하는 반면 손실 방지 지정가 매도 주문은 가격 하락을 처리합니다. 둘 다 한계치를 뛰어넘는 격차에 직면할 가능성이 높습니다!

갭다운 과거 손절매 한도 주문 처리

포지션 손실이 확대되는 가장 일반적인 방법은 다음과 같습니다. 손절매 한도 주문을 넘어서는 가격 격차. 귀하의 거래 장비는 손실 제한 주문 아래의 포지션을 식별하고 적자로 전환되기 전에 해당 포지션에 대해 시장 매도 주문을 실행함으로써 이를 관리해야 합니다.

Binance TradingView 차트에 표시된 손절매 제한 주문

많은 거래 거래소가 손절매 시장 주문을 지원하지 않는다는 점을 기억하십시오. 바이낸스, 그래서 당신은 강제로 사용 손절매 한도 당신의 위치를 ​​보호하라는 명령입니다. 손절매 지정가 주문에는 '중지 가격'과 '지정 가격'이 있으며, 전자는 후자의 가격에 대한 지정가 매도를 실행합니다.

Binance와 같은 많은 거래소는 손실 제한 주문을 지원하지 않습니다.

이것이 백테스트 알고리즘에 무엇을 의미합니까? 보수적/비관적 관점을 가지려면 어딘가에 파는 가격 정류장의 제한 가격과 최저 틱 사이. 비율이 낮을수록 결과는 더 보수적입니다. 이러한 손절매 지정가 주문의 상당 부분은 지정가로 실행되지만 다른 주문은 지정가 이하로 실행됩니다. 이 점을 고려해야 한다.

매도 주문으로 이익을 얻는 회계 처리

귀하의 거래 장비가 청산 수준에 도달하면 이익으로 포지션을 마감하는 이익 실현 모델을 지원하는 경우(반드시 그래야 함) 이러한 주문은 공격적으로 관리되어야 합니다.

이 시나리오에서는 시장가 주문으로 인해 이익이 발생하므로 특정 가격에 지정가 매도 주문을 하는 것이 더 좋습니다.

포지션에서 이익을 얻으려는 강력한 접근 방식은 주문서의 상단을 확보하고(위 참조) SELL 제한 가격을 이 가격 중 하나로 설정하는 것입니다. 현재 시장가 주문보다 높은 가격(이익)으로 체결될 가능성이 높습니다.

이것이 백테스트 알고리즘에 무엇을 의미합니까? 보수적/비관적 관점을 가지려면 가정해야 합니다. 이익 실현 출구 수준과 최고 틱 사이의 가격. 실제 판매 가격은 주문서 스프레드에 따라 다름 하지만 당연히 백테스트 시뮬레이터에는 '주문장'이 없으므로 사용 가능한 데이터에서 추정해야 합니다.

실제 결과와 비교하지 않으면 백테스트 알고리즘을 개선할 방법이 없습니다. 반복적으로.

백테스트 결과를 실제 거래 결과와 반복적으로 비교하지 않는 한 백테스트에 확신을 가질 수 없습니다.

이를 달성하는 방법에 대한 구체적인 예는 다음과 같습니다.

  • 예를 들어 일정 기간 동안 라이브 거래 장비를 실행하십시오. 24 시간
  • 결과를 기록하세요: 각 거래, 각 청산, 각 손절매
  • 이 기간이 지나면 같은 기간에 백테스트 코드를 실행하세요.
  • 백테스트 결과와 실제 결과를 비교해 보세요!

각 거래를 자세히 비교하세요. 백테스트 코드에서 실제 실시간 거래를 나타내지 않는 어떤 가정을 했나요?

차이점은 무엇입니까?

  • 당신의 백테스트는 낙관적인가요? 그렇다면 어디에서? 어떻게? 왜?
  • 백테스트가 지나치게 비관적인가요?

백테스트에서 약간 비관적인 결과가 지속적으로 나타나기를 원합니다. 보수적인.

이 작업을 몇 번 수행한 후 거래 장비를 끄고 백테스트 코드와 거래 장비를 모두 발전시킨 다음 반복하다.

귀하의 실시간 거래 장비는 상대적으로 작은 주문 규모로 실행될 수 있으므로 테스트로 실행하는 데 많은 비용이 들지 않습니다.

물론 어느 기간 동안 시장에는 예상치 못한 행동이 있을 수 있습니다. 여기서 중요한 점은 백테스트가 실제 결과를 정확하게 추정하지 못하는 영역을 식별하는 것입니다.

이 작업을 수행하면서 발견한 몇 가지 예는 다음과 같습니다.

  • 백테스트에서는 LIMIT SELL 가격에 대해 지나치게 낙관적이었고 실제 거래에서는 수익이 감소하는 갭다운 상황이 자주 발생했습니다.
  • 백테스트에서는 매수 실행 가격에 대해 지나치게 낙관적이었습니다. 실제 거래에서는 틱 공개 가격이 실행되는 경우가 거의 없었습니다.
  • 백테스트에서는 틱 내의 낮은 가치에 대한 STOP-LOSS 매도 주문을 포착하지 못했습니다. 실제 거래에서는 포지션이 일찍 종료되었습니다.

이것이 암호화폐 거래 장비에서 이익을 얻을 수 있는 유일한 방법입니다. 시간이 지남에 따라 백테스팅을 발전시키고 실제 결과를 반복하여 개선하세요.

바이낸스의 거래 장비 자동 지정가 주문 조정

알고리즘 거래 모델을 백테스트하는 것은 어려운 작업입니다! 이는 놀라운 일이 아닙니다. 여기에는 '쉬운 길'이 없습니다.

Source: https://medium.com/@gk_/3-keys-to-algo-crypto-backtesting-99f006cfd390?source=rss——-8—————–cryptocurrency

타임 스탬프 :

더보기 중급