В предыдущих статьях мы узнали основные концепции многих криптовалют, программирования и количественной торговли. Наконец, мы можем перейти к теме и поговорить о самой стратегии. В этой статье мы научимся вместе реализовывать простую стратегию.
Для
В это время кто-то, возможно, сказал:
Я не умею писать код!
Это правда. для кого-то, кто не специализируется в компьютерном программном обеспечении или не занимался программированием, действительно довольно сложно разработать самостоятельно полную торговую стратегию. потому что вам нужно сделать серию предварительных работ с самого начала стыковки интерфейса биржи (возможно, ваша программа логики торговли составляет всего 100 строк, но другие работы по кодированию довольно много, и это сложнее, чем написание логики торговли.)
На данный момент, если у вас есть удобный инструмент, это довольно просто, по крайней мере, сложность уменьшается на 70%. Вы можете представить, как удобно и быстро это, если вы только написать саму логику торговли, и все остальные обменный интерфейс соединение, проверка подписи, конфигурационные файлы, конструкция операционной среды, UI интерфейс письмо, интерактивная письменность и так далее все готовы.
Не веришь? Давай попробуем!
Инструмент, который мы используем: FMZ Quant Trading Platform (FMZ.COMОсновой разработки стратегии сети является логика покупки и продажи сети, поэтому перед разработкой стратегии необходимо уточнить эту логику.
Ниже приведены основные процессы разработки стратегии:
Проще говоря, это то, что, как и какие функции ваша стратегия будет выполнять. Эта информация может быть написана в документе (ноутбук или что-то еще) до того, как вы напишете код стратегии. Разработка стратегий на FMZ очень проста, платформа подготовила решения для этих требований для вас, и мне не нужно писать эти требования в блокнот (что не очень удобно для управления). Я пишу требования стратегии в примечаниях стратегии непосредственно.
Просто помните сохранить стратегию после завершения, и тогда мы запишем требования к стратегии (требования к стратегии не являются статичными, и также можно записывать во время разработки).
XXX_USDT
, например:BTC_USDT
.Для неясных идей мы можем рисовать и анализировать в начале.
Схема может быть построена как в верхнем, так и в нижнем направлениях от начальной цены в качестве базовой точки.
Напишите функцию, которая строит структуру данных сетки:
function createNet(begin, diff) { // begin, diff are parameters, begin is the initial price, diff is the grid spacing (the spacing of the equal difference grid is the price)
var oneSideNums = 10 // The grid generates 10 bars on the upward and downward sides. The above chart is a side of the generation of 2 bars (AB side, CD side) and the generation of 10 bars, you can imagine them by yourself.
var up = [] // Used to store the upward "grid line" data structure
var down = [] // Used to store the downward "grid line" data structure
for (var i = 0 ; i < oneSideNums ; i++) { // Determine the number of times according to the size of oneSideNums, and construct the "grid line" data structure cyclically
var upObj = { // Construct an upward "gridline" data structure
buy : false, // Buy marker, initial marker is false, meaning no buy
sell : false, // Sell marker ...
price : begin + diff / 2 + i * diff, // The price level represented by this "grid line" can be observed according to the cycle, and the price level is rising in turn.
}
up.push(upObj) // The constructed "gridline" data structure is placed into the up array
var j = (oneSideNums - 1) - i // The change in j during the loop is: 9 ~ 0
var downObj = {
buy : false,
sell : false,
price : begin - diff / 2 - j * diff,
}
if (downObj.price <= 0) { // The price cannot be less than or equal to 0
continue
}
down.push(downObj) // The constructed "gridline" data structure is placed in down array
}
return down.concat(up) // Add up after down to form a grid array structure with grid line prices from small to large
}
Вы можете запустить эту функцию отдельно, чтобы увидеть эффект. [Debugging Tools] или [Backtesting System] на 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 is the starting price, starting from 105 and going up the first line, with an interval of 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
- Да.
В это время нам нужно только пересечь (пересечение обычно называютПосмотрите на них один за другим.) каждую линию в массиве сетки, и решить, пересекать ли ее выше или ниже.
Поймав пересечение цены выше и ниже, можно ли разместить заказ, когда эти действия запускаются?
Очевидно, что это невозможно. Если цена пересекается вверх и вниз неоднократно на одной линии, не будет ли это тратить плату за повторяющийся тренд на одном и том же ценовом уровне? Следовательно, все еще существует ряд условий суждения для запуска пересечения цены вверх и вниз, что требует использования маркеров покупки / продажи в структуре данных сетки, которую мы только что построили (например: {
Спасибо за чтение, мы продолжим объяснять и учиться в следующем выпуске.