
Nasci em 1998 e atualmente sou aluno sênior de ciência da computação em uma escola de graduação 985. Continuarei meus estudos de pós-graduação na mesma escola.
Meu primeiro contato com o mundo das criptomoedas foi em 1º de setembro de 2017. Sim, lembro-me muito bem dessa data porque três dias depois ocorreu o incidente “94” que abalou o mundo das criptomoedas. O banco central e outros cinco ministérios emitiram em conjunto um documento para evitar riscos de ICO, e o preço das criptomoedas foi reduzido pela metade.
Em 1º de setembro, vi um vídeo apresentando o Bitcoin em uma conta pública do WeChat (acho que era o vídeo de Wang Ziru). Fiquei muito curioso sobre essa coisa, então baixei o Huobi e recarreguei 100 yuans nele. Vi o preço do Bitcoin , que era mais de 30.000 RMB, o que me assustou, então comprei alguns LTC. Naquela época, parecia ser em torno de 120 RMB por LTC. Passei a noite inteira observando a flutuação dos poucos centavos e um yuan na minha conta, e o aumento no preço do LTC. Observe as pessoas conversando em vários grupos QQ de criptomoedas. Depois de assistir a noite toda, meus amigos do grupo disseram que o preço aumentaria, mas eu senti que não era emocionante o suficiente, então recarreguei vários milhares de yuans. Naquela época, Huobi ainda usava recarga de cartão bancário. Depois de um muito tempo, o dinheiro não chegou na minha conta, então entrei em pânico. Pedi ajuda aos meus amigos do grupo e liguei para o atendimento ao cliente. Depois de um tempo, o dinheiro finalmente chegou na minha conta, e então comprei todos os LTC de novo.
Em 4 de setembro, assim que o banco central emitiu um documento, o preço da moeda despencou. Fiquei tão assustado que vendi rapidamente minhas perdas e saí do mercado. Então, observei o preço da moeda cair lentamente pela metade. Naquela época , bolsas domésticas como Huobi não puderam ser registradas. Bolsas domésticas e estrangeiras A diferença de preço é enorme, o que enriqueceu um grupo de pessoas que movimentam tijolos.
Mais tarde, retirei o dinheiro e voltei para a escola, e não me apressei para comprar no fundo (novos investidores só sabem como perseguir preços em alta e vender preços em queda), mas ainda prestei atenção às tendências no círculo de criptomoedas e ocasionalmente verifiquei o que as pessoas estavam falando em vários grupos do QQ. Era dezembro, o mês mais louco do mercado de alta. TRON na Binance aumentou centenas de vezes, e outras moedas também dobraram. Qualquer coisa abaixo de 50% não era considerada uma flutuação. Fiquei tentado, e então recarreguei. Alguns milhares de dólares , e então todos os tipos de operações estranhas de perseguição de altos e baixos, observando várias moedas dispararem, mas sem ganhar dinheiro.
Em janeiro de 2018, o mercado de alta em expansão chegou ao fim. Registrei o OKCoin e comecei a jogar com contratos. Devo dizer que foi realmente emocionante. Alavancagem de 20x, duplicação, liquidação e assim por diante. Olhei para a linha K e fiquei acordado a noite toda. .
Como quase todos os jogadores contratados, acabei em uma situação de falência. Mas devo dizer que essa experiência me ensinou muito conhecimento financeiro. Eu nem conseguia reconhecer a linha K antes.
Depois de muitas noites sem dormir observando o mercado, como estudante de ciência da computação, comecei a me perguntar se havia alguma maneira de deixar um programa negociar por mim para que eu pudesse dormir em paz.
Na verdade, eu encontrei o fmz (chamado botvs naquela época), mas eu era muito novato na época e não consegui descobrir como usar essa plataforma depois de muito tempo, então desisti.
Mais tarde, comecei a escrever robôs conectando-me à API OK (github: https://github.com/ccyanxyz/okex), e escrevi algumas estratégias como médias móveis duplas e grades. Embora eu não tenha ganhado muito dinheiro, Também foi quando entrei na análise quantitativa, aprendi sobre vários indicadores técnicos e aprendi a usar a biblioteca do Talibã. Mais tarde, devido a muitos assuntos escolares, parei de fazer isso, o robô parou e voltou ao modo de visualização e operação manual, mas a frequência era muito baixa e eu só fazia uma ou duas operações de vez em quando.
Depois de andar em círculos, finalmente voltei ao fmz, mas como já tinha experiência em escrever minhas próprias estratégias, consegui começar a usar o fmz muito rapidamente dessa vez. Descobri que o fmz se conectou a quase todas as principais bolsas e unificou as operações de transações, contas, etc. É conveniente e fácil de usar. Você pode escrever um código e executá-lo em qualquer lugar. Para alguém que passou muito tempo esforço para empacotar manualmente a troca. Para pessoas que usam API, é como encontrar um salvador.
Encontrei o repositório público de estratégias fmz no GitHub (https://github.com/fmzquant/strategies). Foi como encontrar um tesouro. Passei uma ou duas noites analisando todas as estratégias, copiei-as e fiz backtesting. Eu li a lógica da estratégia e tentei melhorá-la, mas devo dizer que ainda sou muito verde. Depois de ler todas as estratégias, ainda não escrevi uma “máquina de impressão de dinheiro”.
Mais tarde, me acalmei e pensei sobre isso cuidadosamente. O atual círculo de criptomoedas não é mais o círculo de criptomoedas de 2017. Não haverá histórias míticas de 2000 yuans a 20 milhões de yuans. Para um aluno pobre como eu, já é muito difícil para fazer fortuna especulando em criptomoeda. Era uma fantasia, então desisti de observar o preço da moeda e perseguir a alta e a queda, e também desisti da ideia irreal de tentar escrever uma “máquina de impressão de dinheiro” estratégia, e começou a postar anúncios na área de crowdsourcing no FMZ. Receba pedidos e ajude as pessoas a escrever estratégias, e ganhe algum dinheiro arduamente ganho honestamente.
Até agora, escrevi muitas estratégias para outros. O processo é realmente bastante tortuoso. As pessoas geralmente vêm até mim com algumas ideias imaturas ou estratégias que não podem fazer dinheiro de jeito nenhum. Muitas pessoas também não conseguem descrever suas necessidades claramente e, finalmente, fazem Depois testando a estratégia várias vezes, descobri que ela não dava dinheiro e tive que discutir com outros, então mudei meu anúncio para o abaixo, defini as regras e padrões para aceitar pedidos e me preocupei menos.
Originalmente, minha frequência de pedidos estava ficando cada vez menor, porque eu tinha muitas coisas da escola para fazer e rejeitei muitas pessoas. Mas em fevereiro, o fcoin fugiu e levou embora a maioria dos meus ativos (mas eu não tinha muito dinheiro). Então, recentemente, tive que começar a aceitar pedidos de todos e ganhar dinheiro.
Minha biblioteca de estratégias:
Hoje, quando eu estava navegando no fmz, encontrei algo um pouco sem palavras. Uma certa “empresa” que aceitava pedidos até plagiou meu anúncio de recebimento de pedidos. O seguinte é o anúncio dele:
Então, mudei minha “familiaridade” para “proficiência” e reduzi o preço inicial (senti um sinal de competição acirrada).
Por que não disse que sou “proficiente” em FMZ? Não sei se você já ouviu a piada, “Ninguém pode ser proficiente em C++”, hahahaha, então estou acostumado a escrever “familiar” em meu currículo e outras introduções de habilidades relacionadas.
Estudei recentemente algumas estratégias de arbitragem, incluindo hedge spot, arbitragem spot-futuros, arbitragem entre períodos, arbitragem triangular, etc. Esses dois dias, vi uma ideia de arbitragem que nunca tinha visto antes (talvez eu seja ignorante), então Gostaria de compartilhar aqui.
Suponha que existam vários pares de negociação no mercado de câmbio com os seguintes preços:
USDollar/BritishPound 0.5
BritishPound/FrenchFranc 10.0
FrenchFranc/USDollar 0.21
Neste caso, ignorando a taxa de transação, se eu tiver originalmente 1 USD, posso primeiro convertê-lo em Libra Esterlina, depois em Franco Francês e depois em USD. No processo, 1 USD se torna 1x0,5x10,0x0,21= 1,05 USD, lucro 0,05 USD.
O exemplo acima tem uma oportunidade de arbitragem, mas o seguinte não:
USDollar/BritishPound 0.5
USDollar/FrenchFranc 4.9
BritishPound/FrenchFranc 10.0
BritishPound/USDollar 1.99
FrenchFranc/BritishPound 0.09
FrenchFranc/USDollar 0.19
Então, em um mercado tão grande, como determinamos se há oportunidades de arbitragem?
Este problema pode ser abstraído em um problema de caminho mais curto de gráfico direcionado. Cada moeda é usada como um vértice, e o preço de câmbio é usado como o peso da aresta para formar um gráfico direcionado. Então, começando de um vértice (como USD), Find um caminho circular que pode ser arbitrado.
O exemplo acima vem de um problema de OJ (http://poj.org/problem?id=2240), e a solução pode ser encontrada aqui: http://hehejun.blogspot.com/2018/10/poj2240- arbitrage. html.
Então, recentemente, me perguntei se eu poderia criar uma estratégia para capturar oportunidades de arbitragem e conduzir arbitragem. Pesquisei no GitHub e descobri que ela já foi implementada: https://github.com/wardbradt/peregrine. Este projeto resolve essa arbitragem problema. Ele é abstraído no problema do caminho mais curto de um grafo direcionado com arestas de peso negativo. A solução para o problema OJ mencionado acima é diferente. O caminho mais curto de um grafo direcionado com arestas de peso negativo usa o algoritmo Bellman-Ford. Aqueles que estão interessados podem estudá-lo. Pesquisar.
Também fiz uma implementação simples no fmz, referindo-me às ideias de solução do problema do OJ. Ainda não está finalizada e a correção não pode ser garantida. Posto aqui para estimular a discussão:
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();
}
}
Para resumir, fmz é uma boa plataforma, fácil de usar e confiável, fazendo fortuna silenciosamente. Espero que fmz melhore cada vez mais. Quanto a mim, continuarei estudando para um mestrado após a graduação (também no blockchain campo), e então continuar a trabalhar na fmz. Ganhe algum dinheiro de bolso.
(Escrito na tarde de 7 de março de 2020. Acabei de escrever uma estratégia para alguém e vi que meu saldo no FMZ estava insuficiente, então vim aqui para roubar alguns royalties hahahaha)
WeChat: C790266922