
В последнее время в мире криптовалют появилось много новостей, в том числе и новости о биржах. Некоторое время все энтузиасты криптовалют пребывали в панике, беспокоясь о безопасности своих блокчейн-активов. В различных криптовалютных группах можно найти множество небольших объявлений, предлагающих скидки в размере 10% или 20% на неиспользуемые подержанные монеты. Многие люди ищут различные стратегии, чтобы «одновременно получать постоянную потерю денег и постоянную прибыль». Многие друзья-монетчики также шутили: «Если есть стабильный способ заработать деньги, зачем нам стабильный способ потерять деньги!»
Действительно, вещи, которые стабильно приносят деньги и стабильно теряют деньги, — этоmoney printer, и его нелегко найти.
Простите мой плохой английский.
Однако нестабильность все еще существует, например, посредством хеджирования контрактов можно одновременно получать убытки и прибыль.
ДЕМО-стратегия
/*backtest
start: 2020-09-30 00:00:00
end: 2020-10-19 00:00:00
period: 1d
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_HuobiDM","currency":"BTC_USD"}]
*/
var step = 20 // 加仓价格步长
function main() {
var pos1 = []
var pos2 = []
var ct = "quarter" // 例如用季度合约
exchanges[0].SetContractType(ct)
exchanges[1].SetContractType(ct)
var diff = 0
while (true) {
var r1 = exchanges[0].Go("GetDepth") // A交易所
var r2 = exchanges[1].Go("GetDepth") // B交易所
var depth1 = r1.wait()
var depth2 = r2.wait()
if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff) {
if(pos1.length == 0 && pos2.length == 0) {
var info1 = $.OpenShort(exchanges[0], ct, 10)
var info2 = $.OpenLong(exchanges[1], ct, 10)
pos1 = _C(exchanges[0].GetPosition)
pos2 = _C(exchanges[1].GetPosition)
diff = depth1.Bids[0].Price - depth2.Asks[0].Price
} else if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff + step) {
var info1 = $.OpenShort(exchanges[0], ct, 10)
var info2 = $.OpenLong(exchanges[1], ct, 10)
pos1 = _C(exchanges[0].GetPosition)
pos2 = _C(exchanges[1].GetPosition)
diff = depth1.Bids[0].Price - depth2.Asks[0].Price
}
}
if(pos1.length != 0 && pos1[0].Profit < -0.001) {
var info1 = $.CoverShort(exchanges[0], ct, pos1[0].Amount)
var info2 = $.CoverLong(exchanges[1], ct, pos2[0].Amount)
pos1 = _C(exchanges[0].GetPosition)
pos2 = _C(exchanges[1].GetPosition)
diff = 0
}
LogStatus(_D(), diff)
Sleep(500)
}
}


Логика стратегии: Стратегия начинается с инициализации переменных позиции pos1 и pos2 как пустых массивов. Стратегия входит в основной цикл, и в начале каждого цикла она получает данные о глубине (данные книги ордеров) контрактов двух бирж и рассчитывает разницу цен. Если разница в цене продолжает увеличиваться сверх «последней разницы в цене плюс один шаг», продолжайте хеджировать и наращивать позиции. При удержании позиции, если убыток первой биржевой позиции превысит определенное значение (например: -0,001), позиция будет закрыта. Этот процесс повторяется многократно.
Принцип на самом деле очень прост: если разница в ценах велика, хеджирование нецелесообразно. Подождите, пока биржа, на которой вы ожидаете потерять деньги, не будет удерживать убыток, а затем закройте позицию. Если спред продолжает расширяться, продолжайте увеличивать позицию для хеджирования, пока биржа, на которой вы ожидаете потерять деньги, не будет удерживать убыток. Наиболее важными параметрами являются: размер убытка, необходимый для закрытия позиции, размер шага разницы цен для добавления позиций и сумма хеджирования.
Стратегия относительно проста и используется только для проверки идеи. Она не применима в реальной торговле. В реальной торговле по-прежнему необходимо учитывать множество вопросов, например, основан ли торгуемый контракт на валюте или U, одинаковы ли множители различных контрактов на биржах A и B и т. д.
Таким образом, если одна биржа теряет деньги, то убыток примерно станет прибылью другой биржи (из-за разницы в ценах могут возникнуть убытки от хеджирования, то есть убыток больше прибыли). Стратегия использует библиотеку фьючерсной торговли.$.CoverShort,$.OpenShortЭто интерфейсные функции шаблона. Для бэктеста и запуска вышеуказанной ДЕМО-версии вам необходимо сослаться на эту библиотеку классов.
Вышеуказанный прототип стратегии — это всего лишь простейшее исследование. В реальной работе может потребоваться рассмотреть больше деталей. Например, можно спроектировать размер увеличения позиции как инкрементный. Это всего лишь отправная точка. Подобные стратегии должны быть более оптимизированы. Эксперты могут давать предложения.