
В предыдущих статьях мы изучили множество базовых концепций криптовалюты, программной и количественной торговли. Наконец, мы можем перейти к делу и поговорить о самой стратегии. В этой статье мы научимся реализовывать простую стратегию. Что касается [стратегии сетки], то о ней должен был слышать каждый, кто занимается трейдингом. Неважно, если вы о ней не слышали.ОбменыОни все запустили свои собственные программные и количественные торговые функции. Наиболее распространенная и простая в использовании стратегия —Стратегия сетки. Однако функции и детали стратегии сетки, предоставляемые каждой биржей, отличаются. Поскольку вы планируете войти в круг количественной криптовалюты. Почему бы нам самим не реализовать стратегию сетки?
В это время некоторые студенты могут сказать: «Я не умею писать код!» «Смотрите, какая большая голова у кода!»
Это, конечно, правда. Действительно, студентам, не специализирующимся на программном обеспечении и не имеющим опыта программирования, довольно сложно самостоятельно разработать полноценную торговую стратегию. Потому что вам придется выполнить ряд подготовительных работ, начиная с подключения к интерфейсу биржи (возможно, ваша программа торговой логики состоит всего из 100 строк, но нужно выполнить много другой работы по кодированию, и это сложнее, чем написание торговой логики). )
На данный момент, если у вас есть под рукой инструмент, это будет совсем просто, по крайней мере, сложность снизится на 70%. Представьте, насколько было бы удобно и быстро, если бы вы написали только саму логику транзакции, а все остальные функции, такие как стыковка интерфейса обмена, проверка подписи, файлы конфигурации, построение операционной среды, написание интерфейса пользовательского интерфейса и написание взаимодействия, были бы уже готовы. .
Не верите? Давайте попробуем!
Инструмент, который мы используем: Платформа количественной торговли Inventor (FMZ.COM). В основе разработки стратегии сетки лежит логика покупки и продажи сетки, поэтому это необходимо прояснить перед разработкой стратегии. Наша цель — разработать простую и понятную стратегию, поэтому чем меньше параметров и чем проще логика, тем лучше.
Вот основной процесс разработки стратегии:
Проще говоря, это то, что ваша стратегия будет делать, как это будет сделано, какие функции она будет иметь и т. д. Эту информацию можно записать в документ (например, в блокнот) до того, как вы фактически напишете стратегический код. Разрабатывать стратегии на FMZ очень просто. Платформа подготовила для вас решения этих потребностей, и мне не нужно записывать эти потребности в блокнот (что не очень удобно). Я записываю требования стратегии непосредственно в стратегических заметках.

Только не забудьте сохранить стратегию после ее написания. Затем мы напишем требования к стратегии (требования к стратегии не фиксированы и могут быть записаны в процессе разработки).
Стратегия разработана как стратегия спотовой торговли, а торговая пара —XXX_USDT,Например:BTC_USDT。
Сетка спроектирована так, чтобы быть равноудаленной, что означает, что расстояние между двумя соседними точками сетки представляет собой фиксированный разброс.
Сетка спроектирована как бесконечная сетка, которую можно расширять до бесконечности.
Метод размещения ордера использует рыночный ордер.
Если идеи неясны, мы можем начать с рисования картинок для анализа.

Вы можете использовать начальную цену в качестве базовой точки для построения сеток как в верхнем, так и в нижнем направлениях. Так называемая сетка представляет собой слой линий покупки и линий продажи. Из диаграммы видно, что каждая линия имеет два варианта: 1. Цены растут. 2. Цены падают. Пересечение цены снизу вверх указывает на то, что цена идет выше, и вам нужно продать, а затем подождать, пока цена упадет, и снова купить, чтобы получить прибыль. Проникновение цены вниз указывает на то, что цена идет вниз и вам нужно купить, а затем подождать, пока цена вырастет, и продать с прибылью. Таким образом, каждая линия сетки имеет два метода торговли: покупка и продажа. И каждая линия сетки имеет неотъемлемое свойство — цену, отмеченную этой линией. Например, изображение A/B/C/D на рисунке. При разработке стратегии нам в первую очередь необходимо понять, чего мы хотим добиться.Что, и тогда это будет удобно сделать.
Напишите функцию для построения структуры данных сетки:
function createNet(begin, diff) { // begin,diff是参数,begin是初始价格,diff是网格间距(等差网格的间距是价格)
var oneSideNums = 10 // 网格向上、向下一边生成10条线,上图是一边生成2条(AB一边,CD一边),生成10条的自行脑补画面
var up = [] // 用来储存向上的“网格线”数据结构
var down = [] // 用来储存向下的“网格线”数据结构
for (var i = 0 ; i < oneSideNums ; i++) { // 根据oneSideNums的大小确定次数,循环构造“网格线”数据结构
var upObj = { // 构造一条向上的“网格线”数据结构
buy : false, // 买入标记,初始标记为false ,意思为没有买入
sell : false, // 卖出标记....
price : begin + diff / 2 + i * diff, // 这条“网格线”表示的价格位,可以观察根据循环进行,价格位是依次升高的
}
up.push(upObj) // 构造好的“网格线”数据结构放入up数组
var j = (oneSideNums - 1) - i // 循环时 j 的变动是:9 ~ 0
var downObj = {
buy : false,
sell : false,
price : begin - diff / 2 - j * diff,
}
if (downObj.price <= 0) { // 价格不能小于等于0
continue
}
down.push(downObj) // 构造好的“网格线”数据结构放入down
}
return down.concat(up) // 把up加在down之后,形成一个网格线价格从小到大的网格数组结构
}
Вы можете запустить эту функцию отдельно, чтобы увидеть эффект. [Инструмент отладки] или [система бэктестинга] на FMZ очень удобны для отладки таких небольших кодов.

Полученные данные можно наблюдать.
[
{"buy":false,"sell":false,"price":5},
{"buy":false,"sell":false,"price":15},
{"buy":false,"sell":false,"price":25},
{"buy":false,"sell":false,"price":35},
{"buy":false,"sell":false,"price":45},
{"buy":false,"sell":false,"price":55},
{"buy":false,"sell":false,"price":65},
{"buy":false,"sell":false,"price":75},
{"buy":false,"sell":false,"price":85},
{"buy":false,"sell":false,"price":95},
{"buy":false,"sell":false,"price":105}, // 100是起始价格,从105开始向上第一条线,间距10
{"buy":false,"sell":false,"price":115}, // ...
{"buy":false,"sell":false,"price":125},
{"buy":false,"sell":false,"price":135},
{"buy":false,"sell":false,"price":145},
{"buy":false,"sell":false,"price":155},
{"buy":false,"sell":false,"price":165},
{"buy":false,"sell":false,"price":175},
{"buy":false,"sell":false,"price":185},
{"buy":false,"sell":false,"price":195}
]
Проанализировав структуру данных сетки, нам необходимо рассмотреть конкретную логику купли-продажи стратегии сетки. На самом деле, логика покупки и продажи тоже очень проста. Мы нарисовали ее на рисунке выше. Покупка означает пересечение ниже определенной линии, а продажа означает пересечение выше определенной линии. Так как же выразить ношение верха и низа? Это также очень просто. Нам нужно только сравнить позиции цен в два момента времени, чтобы вынести суждение.
Давайте воспользуемся предыдущей картинкой.

t1 — это момент, t2 — это момент после t1, чтобы оценить пересечение линии C, нам нужно оценить толькоP1 < CиP2 > C。
Аналогично, чтобы оценить пересечение линии B, нам нужно оценить толькоP1 > BиP3 < B。
В это время нам нужно только совершить обход (обход обычно называютПосмотрите на них одного за другим.) Для каждой линии в сетке просто определите, пересекает ли она ее сверху или снизу. Разве это не просто?
Если мы поймаем пересечение цен вверх или вниз, сможем ли мы размещать ордера, когда эти действия будут инициированы? Очевидно, это определенно невозможно. Если цена постоянно растет и падает на одной линии, то не будет ли это означать, что вы сжигаете транзакционные сборы, постоянно торгуя по одной и той же цене? Таким образом, для запуска восходящего и нисходящего пересечения все еще существует ряд условий оценки, которые требуют использования тегов покупки/продажи в структуре данных линий сетки, которую мы только что построили (например: {“buy”:false,“sell “:false,“цена”:5}).
Спасибо за прочтение. Мы продолжим объяснять и изучать в следующем выпуске.