
Я родился в 1998 году и в настоящее время являюсь студентом старших курсов по информатике в бакалавриате 985. Я продолжу обучение в аспирантуре в той же школе.
Впервые я соприкоснулся с миром криптовалют 1 сентября 2017 года. Да, я помню эту дату очень хорошо, потому что три дня спустя произошел инцидент «94», который потряс мир криптовалют. Центральный банк и пять других министерств совместно выпустили документ для предотвращения рисков ICO цена криптовалюты была снижена вдвое.
1 сентября я увидел видео, представляющее Bitcoin в публичном аккаунте WeChat (я думаю, это было видео Ван Цзыру). Мне было очень любопытно узнать об этом, поэтому я скачал Huobi и пополнил его на 100 юаней. Я увидел цену Bitcoin , что было более 30 000 RMB, что напугало меня, поэтому я купил немного LTC. В то время, казалось, что это было около 120 RMB за LTC. Я провел всю ночь, наблюдая за колебаниями нескольких центов и одного юаня на моем счете, и рост цены LTC. Посмотрите, как люди общаются в нескольких группах криптовалюты QQ. После просмотра всей ночи мои друзья в группе все говорили, что цена вырастет, но я чувствовал, что это недостаточно захватывающе, поэтому я пополнил счет на несколько тысяч юаней. В то время Huobi все еще использовал пополнение банковской карты. После долгое время деньги не поступали на мой счет, поэтому я запаниковал. Я попросил помощи у друзей в группе и позвонил в службу поддержки клиентов. Через некоторое время деньги наконец поступили на мой счет, и тогда я купил все LTC снова.
4 сентября, как только центральный банк выпустил документ, цена валюты резко упала. Я был так напуган, что быстро продал свои убытки и ушел с рынка. Затем я наблюдал, как цена валюты медленно падала вдвое. В то время , внутренние биржи, такие как Huobi, не могут быть зарегистрированы. Внутренние и иностранные биржи Разница в цене огромная, что обогатило группу людей, занимающихся перемещением кирпичей.
Позже я забрал деньги и вернулся в школу, и не спешил покупать на дне (новые инвесторы умеют только гоняться за растущими ценами и продавать по падающим), но я все еще обращал внимание на тенденции в криптовалютном круге и время от времени проверил, о чем говорили люди в нескольких группах QQ. Это был декабрь, самый сумасшедший месяц бычьего рынка. TRON на Binance вырос в сотни раз, а другие валюты также удвоились. Любой рост ниже 50% не считался колебанием. Я соблазнился и перезарядился. Несколько тысяч долларов, и затем всевозможные странные операции по погоне за взлетами и падениями, наблюдение за ростом различных валют, но без какой-либо прибыли.
В январе 2018 года бурно развивающийся бычий рынок подошел к концу. Я зарегистрировал OKCoin и начал играть с контрактами. Должен сказать, это было действительно захватывающе. Кредитное плечо 20x, удвоение, ликвидация и т. д. Я уставился на линию K и не спал всю ночь.
Как и почти все игроки по контракту, я оказался в положении банкрота. Но должен сказать, что этот опыт дал мне много финансовых знаний. Раньше я даже не мог узнать K-line.
После многих бессонных ночей, проведенных за наблюдением за рынком, будучи студентом-компьютерщиком, я начал задаваться вопросом, есть ли способ позволить программе торговать за меня, чтобы я мог спать спокойно.
На самом деле я нашел fmz (тогда он назывался botvs), но тогда я был слишком новичком и за долгое время не смог разобраться, как пользоваться этой платформой, поэтому сдался.
Позже я начал писать роботов, подключаясь к API OK (github: https://github.com/ccyanxyz/okex), и написал несколько стратегий, таких как двойные скользящие средние и сетки. Хотя я не заработал много денег, Я также прикоснулся к количественному анализу, узнал о различных технических индикаторах и научился пользоваться библиотекой Талиба. Позже, из-за большого количества школьных заданий, я перестал это делать, робот остановился и вернулся в режим ручного просмотра и управления, но частота была очень низкой, и я делал только одну-две операции время от времени.
Походив по кругу, я наконец вернулся к fmz, но поскольку у меня уже был опыт написания собственных стратегий, на этот раз я смог очень быстро приступить к fmz. Я обнаружил, что fmz подключен почти ко всем основным биржам и унифицирует операции транзакций, счетов и т. д. Он удобен и прост в использовании. Вы можете написать код и запустить его везде. Для того, кто потратил много усилия по ручной упаковке обмена. Для людей, использующих API, это как найти спасителя.
Я нашел репозиторий публичной стратегии fmz на GitHub (https://github.com/fmzquant/strategies). Это было похоже на поиск сокровища. Я провел ночь или две, просматривая все стратегии, копировал их и тестировал на бэктесте. Я прочитал логику стратегии и пытался ее улучшить, но должен сказать, что я еще слишком зеленый. Прочитав все стратегии, я все еще не написал «машинку для печатания денег».
Позже я успокоился и хорошенько обдумал это. Текущий криптовалютный круг — это уже не тот криптовалютный круг 2017 года. Не будет никаких мифических историй о 2000 юаней — 20 миллионов юаней. Для бедного студента вроде меня это уже слишком сложно разбогатеть, спекулируя криптовалютой. Это была фантазия, поэтому я перестал следить за ценой валюты и гоняться за ее ростом и падением, а также отказался от нереалистичной идеи попытаться написать «машинку для печатания денег» стратегия, и начал размещать рекламу в зоне краудсорсинга на FMZ. Принимайте заказы и помогайте людям писать стратегии, и зарабатывайте честно с трудом заработанные деньги.
До сих пор я написал много стратегий для других. Процесс на самом деле довольно извилистый. Люди часто приходят ко мне с какими-то незрелыми идеями или стратегиями, которые вообще не могут принести денег. Многие люди также не могут четко описать свои потребности и в конце концов делают После Проверяя стратегию снова и снова, я обнаружил, что она не приносит прибыли, и мне пришлось спорить с другими, поэтому я изменил свою рекламу на приведенную ниже, установил правила и стандарты приема заказов и меньше беспокоился.
Изначально частота моих заказов становилась все ниже и ниже, потому что у меня было много школьных дел, и я многим отказал. Но в феврале fcoin сбежал и забрал большую часть моих активов (но у меня их было не так уж много) деньги). Поэтому недавно мне пришлось начать принимать заказы от всех и зарабатывать деньги.
Моя библиотека стратегий:
Сегодня, когда я просматривал fmz, я нашел что-то немного безмолвное. Некая “компания”, которая принимала заказы, даже сплагиатила мою рекламу приема заказов. Ниже приведена его реклама:
Поэтому я изменил свою «знакомость» на «умение», а затем снизил начальную цену (я почуял намек на жестокую конкуренцию).
Почему я не сказал, что я «владею» FMZ? Не знаю, слышали ли вы шутку «Никто не может быть специалистом в C++», хахаха, поэтому я привык писать «знакомый» в мое резюме и другие сведения о связанных навыках.
Недавно я изучал некоторые стратегии арбитража, включая спотовое хеджирование, фьючерсно-спотовый арбитраж, кросс-периодный арбитраж, треугольный арбитраж и т. д. За эти два дня я увидел арбитражную идею, которую никогда раньше не видел (может быть, я невежественен), поэтому Я хотел бы поделиться этим здесь.
Предположим, что на валютном рынке имеется несколько торговых пар со следующими ценами:
USDollar/BritishPound 0.5
BritishPound/FrenchFranc 10.0
FrenchFranc/USDollar 0.21
В этом случае, игнорируя комиссию за транзакцию, если у меня изначально есть 1 USD, я могу сначала конвертировать его в британский фунт, затем во французский франк, а затем в USD. В процессе 1 USD становится 1x0.5x10.0x0.21= 1,05 долл. США, прибыль 0,05 долл. США.
В приведенном выше примере есть возможность арбитража, а в следующем — нет:
USDollar/BritishPound 0.5
USDollar/FrenchFranc 4.9
BritishPound/FrenchFranc 10.0
BritishPound/USDollar 1.99
FrenchFranc/BritishPound 0.09
FrenchFranc/USDollar 0.19
Как же определить, существуют ли возможности для арбитража на таком огромном рынке?
Эту проблему можно абстрагировать в задачу поиска кратчайшего пути в ориентированном графе. Каждая валюта используется как вершина, а обменная цена используется как вес ребра для формирования ориентированного графа. Затем, начиная с вершины (например, USD), найдите круговой путь, на котором можно совершать арбитражные сделки.
Приведенный выше пример взят из задачи OJ (http://poj.org/problem?id=2240), а решение можно найти здесь: http://hehejun.blogspot.com/2018/10/poj2240- арбитраж. html-файл.
Поэтому я недавно задумался, смогу ли я придумать стратегию для захвата арбитражных возможностей и проведения арбитража. Я поискал на GitHub и обнаружил, что это уже реализовано: https://github.com/wardbradt/peregrine. Этот проект решает эту арбитражную проблему Проблема. Она абстрагируется в задачу поиска кратчайшего пути направленного графа с ребрами отрицательного веса. Решение задачи OJ, упомянутой выше, отличается. Кратчайший путь направленного графа с ребрами отрицательного веса использует алгоритм Беллмана-Форда. Те, кто заинтересованы могут изучить его. Исследование.
Я также сделал простую реализацию на fmz, ссылаясь на идеи решения проблемы OJ. Она еще не закончена и корректность не может быть гарантирована. Я размещаю ее здесь, чтобы стимулировать обсуждение:
var coins = {
EMPTY: 0,
};
var price = {};
function get_coins() {
for(var i = 0; i < exchanges.length; ++i) {
var base = _C(exchanges[i].GetCurrency);
var quote = _C(exchanges[i].GetQuoteCurrency);
var len = Object.keys(coins).length;
if(!coins.hasOwnProperty(quote)) {
coins[quote] = len;
len += 1;
}
if(!coins.hasOwnProperty(base)) {
coins[base] = len;
len += 1;
}
}
}
function get_graph() {
var graph = [];
for(var i = 0; i < exchanges.length; ++i) {
var ticker = _C(exchanges[i].GetTicker);
var base = _C(exchanges[i].GetCurrency);
var quote = _C(exchanges[i].GetQuoteCurrency);
graph.push({
from: coins[base],
to: coins[quote],
weight: ticker.Buy
});
price[base + quote] = ticker.Buy;
graph.push({
from: coins[quote],
to: coins[base],
weight: 1 / ticker.Sell
});
price[quote + base] = 1 / ticker.Sell;
}
return graph;
}
function bfm(graph, initAmount, feeRate) {
var dist = [];
var pre = [];
var i;
var j;
var fee = 0;
for(i = 0; i < Object.keys(coins).length; ++i) {
dist.push(0);
pre.push(-1);
}
dist[1] = initAmount;
for(i = 0; i < Object.keys(coins).length - 1; ++i) {
for(j = 0; j < graph.length; ++j) {
var from = graph[j].from;
var to = graph[j].to;
var rate = graph[j].weight;
if(dist[from] * rate > dist[to]) {
dist[to] = dist[from] * rate;
pre[to] = from;
}
}
}
if(dist[1] <= initAmount) {
return false;
}
var path = [];
var top = pre[1];
var coin_keys = Object.keys(coins);
path.push({
from: coin_keys[top],
to: coin_keys[1],
rate: price[coin_keys[top] + coin_keys[1]]
});
while(top != 1) {
var temp = top;
top = pre[top];
path.push({
from: coin_keys[top],
to: coin_keys[temp],
rate: price[coin_keys[top] + coin_keys[temp]],
});
}
path.reverse();
fee = path.length * feeRate * initAmount;
if(dist[1] - initAmount <= fee || path.length == 0) {
return false;
}
return path;
}
function onTick() {
var graph = get_graph();
var account = _C(exchanges[0].GetAccount);
var balance = account.Balance;
var path = bfm(graph, balance, 0);
if(!path) {
return;
}
Log(path);
// buy & sell follow the path
...
}
function main() {
get_coins();
while(1) {
onTick();
}
}
Подводя итог, fmz — хорошая платформа, простая в использовании и надежная, которая спокойно зарабатывает состояние. Надеюсь, fmz будет становиться все лучше и лучше. Что касается меня, то я продолжу учиться на магистра после окончания университета (также в блокчейне) поле), а затем продолжить работу над fmz. Заработать немного карманных денег.
(Написано днем 7 марта 2020 года. Я только что закончил писать стратегию для кого-то и увидел, что мой баланс FMZ недостаточен, поэтому я пришел сюда, чтобы схитрить с роялти, хахаха)
WeChat: C790266922