Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных

Создано: 2019-12-13 17:13:07, Обновлено: 2024-12-15 16:04:23
comments   3
hits   1999

Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных

Предисловие

Люди часто говорят, что торговля — это искусство, а искусство рождается из вдохновения. Поэтому сегодня я хочу поделиться с вами тем, как использовать функцию воспроизведения количественных данных Inventor, чтобы найти собственное торговое вдохновение.

Торговое вдохновение и чувство рынка

То, что мы обычно называем вдохновением, относится к творческому состоянию, которое люди мгновенно испытывают в процессе мышления. У трейдеров левое полушарие мозга завершает формулирование ряда правил, таких как написание стратегии, распределение капитала и установка параметров. Вдохновение в торговле и чувство рынка исходят из правого полушария мозга.

Многие слышали термин «рыночное чувство», это неописуемое чувство, как будто происходящее сейчас кажется им знакомым. В торговле эта интуиция, подобная шестому чувству, хотя и не основана на логических рассуждениях и анализе, побуждает трейдеров принимать решения о покупке или продаже на основе предчувствия будущих рыночных тенденций.

Как черпать вдохновение

Для посторонних рыночное чутье — это таинственный талант, который позволяет побеждать без всяких ходов. С его помощью можно закрепиться на рынке. На самом деле, рыночное чувство — это сводка субъективного торгового опыта мозга. Это смутное предсказательное чувство, приобретенное за годы наблюдения за рынком.

Хотя, строго говоря, вдохновение не полностью тождественно рыночному чутью, я считаю, что после тысяч раз опыта работы на рынке каждый человек будет иметь более глубокое понимание рынка и станет экспертом в разработке стратегий. Поэтому, если вы хотите развить этот талант и разработать больше торговых стратегий, нет другого пути, кроме как практиковаться до тех пор, пока не представится такая возможность. Только посредством большого количества транзакций вы сможете усовершенствовать свою торговую систему.

Однако фьючерсы на внутренние товары и акции имеют только несколько часов торгового времени в день. Если вы только улучшите свой опыт наблюдения за рынком посредством реальной торговли, сформируете собственную модель прибыли и правила торговли, и подсознательно натренируете свои условные рефлексы, это будет трудно добиться успеха. Я не могу этого сделать. Помимо более длительных временных затрат, большинству трейдеров также приходится нести расходы, связанные с потерей капитала. Для решения этой проблемы изобретатели количественно разработали функцию воспроизведения данных.

Как использовать воспроизведение данных

Функция воспроизведения данных может быть обучена без ограничений по часам торговли на бирже и поддерживает множество товарных фьючерсов и разновидностей цифровой валюты. Рыночные условия могут быть воспроизведены вручную или автоматически, а также начальное и конечное время исторических рыночных условий и Скорость воспроизведения можно свободно устанавливать. По сравнению с другим программным обеспечением, которое обычно использует методы воспроизведения данных K-line, Inventor Quantitative использует методы воспроизведения данных на уровне тиков, что представляет собой среду бэктестинга, которая действительно близка к реальной торговле, воспроизводя данные о ценах и объемах, что позволяет трейдерам погрузиться в опыт.

Откройте официальный сайт Inventor Quantitative (fmz.com), зарегистрируйтесь и войдите в систему, затем нажмите «Исследование данных» в центре управления, чтобы отобразить страницу функции воспроизведения данных. Есть четыре поля опций и кнопка выбора. Сначала нажмите кнопку выбора, чтобы отобразить только те варианты, которые поддерживают воспроизведение в реальном времени. Затем выберите вариант для воспроизведения в верхнем левом углу, а затем выберите начало и конец время данных в следующих двух полях опций. Выберите период времени данных как воспроизведение в реальном времени и, наконец, нажмите кнопку Go справа, чтобы запустить функцию воспроизведения данных.

Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных

Под меткой данных находятся три раздела. Слева находится история транзакций, в которой в хронологическом порядке отображаются все выполненные заказы. В середине находятся рыночные данные с 20 уровнями глубины как для покупки, так и для продажи. Справа находится область управления воспроизведением данных, где можно выбрать ручной и автоматический методы воспроизведения данных, так же просто, как при использовании медиаплеера.

Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных

Указатель позиции можно перетаскивать вперед и назад, чтобы быстро выбрать время начала воспроизведения данных.

Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных

Внизу вы также можете управлять скоростью воспроизведения данных, перемещая курсор вправо или влево. Единица времени — миллисекунды. Вы можете ускорить или замедлить воспроизведение данных.

Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных

Логика построения стратегии

Хотя существует множество факторов, влияющих на колебания цен, в том числе: глобальная экономическая среда, национальная макроэкономическая политика, соответствующая промышленная политика, соотношение спроса и предложения, международные события, процентные ставки и обменные курсы, инфляция и дефляция, психология рынка, неизвестные факторы и т. д. , конечная рыночная ситуация. Цена выше является результатом конкуренции между быками и медведями. Если покупателей больше, чем продавцов, цена вырастет; и наоборот, если продавцов больше, чем покупателей, цена упадет. Затем нам остается только проанализировать цену, чтобы разработать торговую стратегию.

Благодаря количественному воспроизведению торговой пары btc_usdt на бирже Binance, проведенному изобретателем за последний месяц, мы обнаружили, что когда рынок резко рос или падал, объем ордеров по длинной и короткой сторонам книги ордеров данных Tick был явно асимметричным. Когда рынок резко растет, объем длинных ордеров значительно превышает объем коротких ордеров; когда рынок резко падает, объем коротких ордеров значительно меньше объема длинных ордеров. Так можем ли мы предсказать рост и падение цен за короткий период времени на основе количества заказов в книге заказов?

Ответ — да.

Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных Стратегия линейного потока заказов, разработанная на основе функции воспроизведения данных

Мы можем собирать глубокие тиковые данные, рассчитывать объем длинных и коротких ордеров и сравнивать их. Если объединенный объем длинных и коротких ордеров сильно отличается, это может быть потенциальной возможностью покупки или продажи. Например, когда количество длинных ордеров в N раз превышает количество коротких ордеров, мы можем предположить, что большинство людей на рынке настроены оптимистично, и вероятность роста цен в краткосрочной перспективе увеличится; когда количество коротких ордеров равно N раз больше, чем длинных ордеров. В настоящее время мы можем предположить, что большинство людей на рынке настроены по-медвежьи, и вероятность снижения цены в краткосрочной перспективе в будущем увеличится.

Написание торговой стратегии

Следуя вышеизложенной логике стратегии, начните реализовывать ее с помощью кода. Откройте последовательно: веб-сайт fmz.com > Вход > Центр управления > Библиотека политик > Новая политика > Щелкните раскрывающееся меню в правом верхнем углу и выберите язык Python, чтобы начать писать политики. Эта стратегия — всего лишь отправная точка для обучения, поэтому я постарался сделать ее максимально краткой. Обратите внимание на комментарии в коде ниже.

Шаг 1: Напишите структуру политики

# 策略主函数
def onTick():
    pass


# 程序入口
def main():
    while True:  # 进入无限循环模式
        onTick()  # 执行策略主函数
        Sleep(1000)  # 休眠1秒

Когда мы пишем стратегии, мы должны писать от большего к меньшему, как при строительстве дома: сначала возводим каркас, а затем стены. В этой структуре мы используем две функции: основную функцию и функцию onTick. Функция main является точкой входа программы, что означает, что программа будет выполняться отсюда, а затем войдет в режим бесконечного цикла, многократно выполняя функцию onTick. Затем нам просто нужно записать содержимое стратегии в функцию onTick.

Шаг 2: Напишите глобальные переменные

vol_ratio_arr = []  # 多空挂单比率数组
mp = 0  # 虚拟持仓

Причина, по которой vol_ratio_arr определена как глобальная переменная, заключается в том, что моей стратегии необходимо собирать соотношение длинных и коротких ордеров за период данных Tick. Если мы поместим переменную vol_ratio_arr в функцию onTick, очевидно, неразумно запускать ее с loop. Нам нужно В шаблоне значение переменной изменяется только при выполнении определенного условия. Наиболее разумный подход — поместить переменную за пределы цикла.

Управление позициями очень необходимо, поскольку оно связано с логикой покупки и продажи. Обычно в спотовой торговле мы рассчитываем валютные пары, удерживаемые при получении счета. Для упрощения кода здесь напрямую определена глобальная виртуальная переменная позиции для управления логикой покупки и продажи.

Шаг 3: Рассчитайте текущее соотношение длинных и коротких позиций

depth = exchange.GetDepth()  # 获取深度数据
asks = depth['Asks']  # 获取卖价数组
bids = depth['Bids']  # 获取买价数组
asks_vol = 0  # 所有卖价挂单
bids_vol = 0  # 所有买价挂单
for index, ask in enumerate(asks):  # 遍历卖价数组
    # 线性计算所有卖价挂单
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # 遍历买价数组
    # 线性计算所有买价挂单
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # 计算多空比率

Как мы все знаем, цифровые валюты обычно имеют 20 уровней глубины данных, поэтому мы можем сложить длинные и короткие заказы, чтобы вычислить соотношение длинных и коротких. Когда это значение больше 1, это означает, что больше людей настроены оптимистично, чем медвежий. , что указывает на то, что цена вырастет в краткосрочной перспективе в будущем; когда это значение меньше 1, это означает, что число людей, настроенных по-медвежьи, больше числа людей, настроенных по-бычьи, что указывает на то, что цена упадет в в краткосрочной перспективе в будущем.

Но нужно различать одну вещь. Чем ближе отложенный ордер к рыночной цене, тем сильнее бычье или медвежье настроение. Например, ордер на покупку, размещенный на первом уровне, определенно указывает на более сильное бычье настроение, чем ордер на покупку, размещенный на 20 уровне. Поэтому при накоплении отложенных ордеров нам необходимо присвоить 20 ордерам разные веса линейно, что будет более разумно.

Шаг 4: Линейно рассчитайте соотношение длинных и коротких позиций за определенный период времени.

global vol_ratio_arr, mp  # 引入全局变量
vol_ratio_arr.insert(0, bidask_ratio)  # 把多空比率放到全局变量数组里面
if len(vol_ratio_arr) > 20:  # 如果数组超过指定长度
    vol_ratio_arr.pop()  # 删除最旧的元素
all_ratio = 0  # 临时变量,所有多空挂单比率
all_num = 0  # 临时变量,所有线性乘数
for index, vol_ratio in enumerate(vol_ratio_arr):  # 变量全局变量数组
    num = 20 - index  # 线性乘数
    all_num = all_num + num  # 线性乘数累加
    all_ratio = all_ratio + vol_ratio * num  # 所有多空挂单比率累加
ratio = all_ratio / all_num  # 线性多空挂单比率

Соотношение длинных и коротких позиций можно получить, разделив накопленные длинные ордера на накопленные короткие ордера, но это данные только одного тика. Возможно, не стоит принимать решение о покупке и продаже на основе данных только одного тика , потому что на постоянно меняющемся рынке тик может изменить рыночный тренд. Данные тика не убедительны. Поэтому нам необходимо собрать данные о тиках за фиксированный период, а затем использовать линейный расчет, чтобы получить справедливое значение.

Шаг 5: Оформите заказ

last_ask_price = asks[0]['Price']  # 最新卖一价,用于买入的价格
last_bid_price = bids[0]['Price']  # 最新买一价,用于卖出的价格
if mp == 0 and ratio > buy_threshold:  # 如果当前无持币,并且比率大于指定值
    exchange.Buy(last_ask_price, 0.01)  # 买入
    mp = 1  # 设置虚拟持仓的值
if mp == 1 and ratio < sell_threshold:  # 如果当前持币,并且比率小于指定值
    exchange.Sell(last_bid_price, 0.01)  # 卖出
    mp = 0  # 重置虚拟持仓的值

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

Заключение

Выше представлен анализ кода линейной стратегии потока ордеров, разработанной на основе функции воспроизведения данных. Если вы новичок в торговле, функция воспроизведения данных может помочь вам изучить торговлю с нулевыми затратами и сократить время на понимание торговли. Обычно она Обучение торговле в реальных или симулированных условиях занимает несколько лет. Первые результаты видны. Того же эффекта можно достичь за несколько недель, используя функцию воспроизведения данных, что позволяет вам научиться торговле с минимальными потерями, не теряя времени. Для опытных трейдеров динамический обзор может помочь проанализировать прошлые проблемы, проверить и улучшить торговые стратегии, повысить уверенность трейдеров в стратегиях и помочь генерировать вдохновение для новых стратегий.