Type/to search
8
Follow
1364
Followers
발명가의 정량적 시뮬레이션 레벨 백테스팅 메커니즘 설명
Tutorials
Created 2017-02-07 13:04:57  Updated 2023-09-07 17:49:15
 34
 15370

발명가의 정량적 시뮬레이션 레벨 백테스팅 메커니즘 설명


  • 1, 구조를 재검토

    발명자의 양적 피드백 중 전략 프로그램은 완전한 제어 프로세스이며, 이 프로그램은 일정 주파수에 따라 멈추지 않는 설문조사를 한다. 각 상황, 거래 API가 반환하는 데이터는 또한 호출 시점에 따라 실제 실행 시기를 모방하는 상황이다. onTick 계층에 속하며, 다른 피드백 시스템의 onBar 계층은 아니다. Ticker 데이터를 기반으로 한 전략의 피드백을 더 잘 지원한다.

  • 2., 아날로그 레벨 회수와 하드 디스크 레벨 회수의 차이

    • 시뮬레이션 레벨 재측정

      시뮬레이션 레벨 회귀는 회귀 시스템의 밑바닥 K선 데이터를 따라, 주어진 밑바닥 K선 Bar의 최고값, 최저값, 개시값, 닫기값의 수학적 구성의 프레임워크 내에서 특정 알고리즘에 따라, 틱러 데이터 삽입 값을 이 Bar의 시간 연속으로 시뮬레이션한다.

    • 리드 디스크 레벨 재검토

      실 디스크 레벨 회귀는 Bar의 시간 순서에 있는 실제 틱러 레벨 데이터이다. 틱러 레벨 데이터에 기반한 전략의 경우 실 디스크 레벨 회귀를 사용하는 것이 더 가깝다.
      디스크 레벨 회귀, 틱어는 실제 기록된 데이터이며, 시뮬레이션 생성되지 않는다.

  • 3. 아날로그 레벨 리포스 메커니즘 - 하위 K 라인

    리드 디스크 레벨 회귀에는 기본 K 라인 옵션이 없습니다.
    시뮬레이션 레벨 회귀에서는, K선 데이터 기반의 시뮬레이션으로 생성된 티커。 이 K선 데이터는 기본 K선。 실제 사용 시 기본 K선 주기가 전략 실행 시 K선을 얻기 위해 API를 호출하는 주기보다 작아야 한다。 그렇지 않으면, 기본 K선 주기가 크기 때문에 생성된 티커 수가 부족하여, API를 호출하여 지정된 주기의 K선을 얻는 경우, 데이터가 부정확할 수 있다。 큰 주기의 K선 회귀를 사용할 때, 기본 대층 K선 주기를 적절히 조정할 수 있다。

  • 4 K선 밑바닥에서 티커 데이터를 생성하는 방법

    기본 K선에서 모의티커를 생성하는 메커니즘은 MT4와 동일하다.

    img
    img
    img
    img

  • 5, 틱러 데이터를 생성하는 알고리즘 코드

    기본 K선 데이터를 모의하는 tick 데이터의 구체적인 알고리즘:

function recordsToTicks(period, num_digits, records) { if (records.length == 0) { return [] } var ticks = [] var steps = [0, 2, 4, 6, 10, 12, 16, 18, 23, 25, 27, 29] var pown = Math.pow(10, num_digits) function pushTick(t, price, vol) { ticks.push([Math.floor(t), Math.floor(price * pown) / pown, vol]) } for (var i = 0; i < records.length; i++) { var T = records[i][0] var O = records[i][1] var H = records[i][2] var L = records[i][3] var C = records[i][4] var V = records[i][5] if (V > 1) { V = V - 1 } if ((O == H) && (L == C) && (H == L)) { pushTick(T, O, V) } else if (((O == H) && (L == C)) || ((O == L) && (H == C))) { pushTick(T, O, V) } else if ((O == C) && ((O == L) || (O == H))) { pushTick(T, O, V / 2) pushTick(T + (period / 2), (O == L ? H : L), V / 2) } else if ((C == H) || (C == L)) { pushTick(T, O, V / 2) pushTick(T + (period * 0.382), (C == L ? H : L), V / 2) } else if ((O == H) || (O == L)) { pushTick(T, O, V / 2) pushTick(T + (period * 0.618), (O == L ? H : L), V / 2) } else { var dots = [] var amount = V / 11 pushTick(T, O, amount) if (C > O) { dots = [ O - (O - L) * 0.75, O - (O - L) * 0.5, L, L + (H - L) / 3.0, L + (H - L) * (4 / 15.0), H - (H - L) / 3.0, H - (H - L) * (6 / 15.0), H, H - (H - C) * 0.75, H - (H - C) * 0.5, ] } else { dots = [ O + (H - O) * 0.75, O + (H - O) * 0.5, H, H - (H - L) / 3.0, H - (H - L) * (4 / 15.0), H - (H - L) * (2 / 3.0), H - (H - L) * (9 / 15.0), L, L + (C - L) * 0.75, L + (C - L) * 0.5, ] } for (var j = 0; j < dots.length; j++) { pushTick(T + period * (steps[j + 1] / 30.0), dots[j], amount) } } pushTick(T + (period * 0.98), C, 1) } return ticks }

따라서, 시퀀스 상의 가격 변동은 시뮬레이션 레벨 재검토를 사용할 때 발생합니다.

Related Recommendations
Comment
All comments (7)

    带上下影线的K线为什么模拟成12个tick呢?仅仅是为了增加tick数量吗?

    3 years ago

    可以自定义增加模拟点位吗,目前的模拟级别生成的tick点位与实际差异很大

    4 years ago

    底层K线周期使用一分钟,数据粒度就很小了。可以用实盘级别回测,或者使用自定义数据源,提供自己收集的数据也可以。

    4 years ago

    合约回测能模拟爆仓吗?

    4 years ago

    本身回测系统没有爆仓机制, 不过自己在策略中可以增加爆仓检测。持仓亏损的数值大于账户可用资产就是爆仓了。

    4 years ago

    模拟回测的周期里面,1小时之后就直接是1天了,为什么没有2小时,4小时,6小时,12小时,这些常用的周期?

    9 years ago

    回测系统 设定了 一些 比较常用的周期,如果 需要任意周期的K线 可以看下 “策略广场” 有一些 可以转换 K线周期的模版 。

    9 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)