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-интерфейсом для каждой ситуации, являются данными в соответствии с моментом вызова, имитирующими фактическую работу.

  • Различие между аналоговым и дисковым отслеживанием

    • Аналоговый уровень отсчета

      Аналоговый уровень отслеживания - это отслеживание данных нижней K-линии системы отслеживания, в соответствии с определенным алгоритмом в рамках, состоящем из величин наивысшей цены, наименьшей цены, открывающей цены, закрывающей цены данной нижней K-линии Bar, для моделирования вставки тикерных данных в временную последовательность этого Bar.

    • Отзывы на уровне диска

      Фиксированный уровень отсчета - это реальные данные на уровне тикера в временной последовательности Bar. Для стратегий, основанных на данных на уровне тикера, использование фиксированного уровня отсчета ближе к истине.
      На уровне реального диска, тикеры - это реальные данные, а не моделируемые.

  • 3., Аналоговый уровень отслеживания механизма - нижний K-линии

    На уровне твердого диска нет возможности создания нишевых K-линий (поскольку тикерные данные являются реальными, они не используются для моделирования генерирования нишевых K-линий).
    В аналоговом уровне обратной связи, на основе K-линейных данных моделирования генерируемого тикера. Данные K-линии является базовой K-линии. В реальном использовании аналогового уровня обратной связи, базовой K-линии цикл должен быть меньше, чем призыв API получить K-линии цикла при выполнении стратегии. В противном случае, из-за большого количества базовых K-линии циклов, генерируемого недостаточное количество тикеров, призыв API получить указанный цикл K-линии, данные будут искажены. При использовании больших циклов K-линии обратной связи, можно соответствующим образом изменить базовой большой K-линии циклов.

  • 4., Как нижний K-накопитель генерирует тикерные данные

    Механизм создания аналоговых тикеров на базовой K-линии такой же, как и на MT4.

    img
    img
    img
    img

  • 5., алгоритмический код, генерирующий тикерные данные

    Конкретный алгоритм моделирования данных tick на основе данных K-линий:

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)