Recentemente, houve muitas notícias sobre o mercado de moeda digital e a troca. Por um tempo, todos os amigos de moeda estavam em um estado de pânico, preocupados com a segurança de seus ativos blockchain. Há também muitos pequenos anúncios de 10% e 20% de desconto para moedas usadas inativas em vários grupos do mercado de moeda. Há muitos tipos de estratégias de money printer
, que não é fácil de encontrar.
Desculpe o meu mau inglês.
No entanto, ainda existem alguns instáveis. Por exemplo, através da cobertura de contratos, podemos fazer lucros enquanto fazemos perdas o máximo possível.
Estratégia DEMO
/*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 // Step length of adding position price
function main() {
var pos1 = []
var pos2 = []
var ct = "quarter" // For example, quarterly contract
exchanges[0].SetContractType(ct)
exchanges[1].SetContractType(ct)
var diff = 0
while (true) {
var r1 = exchanges[0].Go("GetDepth") // Exchange A
var r2 = exchanges[1].Go("GetDepth") // Exchange 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)
}
}
Estratégia lógica:
A estratégia começa a inicializar as variáveis de posição pos1 e pos2 como matrizes vazias. A estratégia entra no loop principal. No início de cada loop, os dados de profundidade (dados do livro de pedidos) dos contratos das duas bolsas são obtidos para calcular a diferença de preço. Se a diferença de preço continuar a se expandir e além da
O princípio é muito simples, ou seja, quando a diferença de preço é grande, então desabasteça. Ao esperar a perda da perda esperada da posição de câmbio, feche a posição. Se a diferença de preço continuar a se expandir, continue adicionando posições para cobrir até a perda esperada da perda de posição de câmbio. Os parâmetros importantes são: o valor da perda para fechar a posição, o comprimento da etapa de adição da diferença de preço da posição e o valor da cobertura.
A estratégia é bastante rudimentar, apenas para verificar a ideia, o bot real não está disponível.
Desta forma, uma troca perderá dinheiro, e a parte de perda se tornará a parte de lucro de outra troca (diferença de preço, pode haver perda de cobertura, ou seja, a perda é maior que o lucro).$.OverShort
, $.OpenShort
, estas são as funções de interface do modelo. Para executar a demonstração acima, você precisa fazer referência a esta biblioteca de classes.
O protótipo de estratégia acima é apenas a exploração mais simples, e pode haver mais detalhes a serem considerados na operação real, por exemplo, a quantidade de posições pode ser projetada para incremental.