Type/to search
8
Follow
1362
Followers
Moeda digital identifica nova estratégia de captura de moedas (ensino)
Discussions
Created 2022-04-20 15:59:01  Updated 2023-09-20 10:29:48
 0
 3337

img

Moeda digital identifica nova estratégia de captura de moedas (ensino)

Nos últimos dois dias, um usuário do grupo do Telegram me enviou uma mensagem privada esperando um exemplo de design para uma estratégia de IPO. Às vezes, quando uma exchange lista novas moedas, você quer pegar algumas delas. Este artigo cria uma estratégia simples para novas moedas.

Requisitos estratégicos

Por exemplo, atualmente em uma determinada bolsa, um certo par de negociação: XXX_USDT, ainda não foi listado na bolsa. Mas estará online em breve. É necessário um programa para monitorar o mercado XXX_USDT desta bolsa. Quando o limite superior deste par de negociação for atingido, ele poderá ser negociado. Em seguida, emita 10 ordens de compra limitadas, especifique a quantidade e faça ordens para pegar moedas. Comprá-lo conclui a tarefa. Se você não puder comprá-lo, basta mantê-lo em espera até que todas as ordens sejam executadas e você compre as moedas.

O requisito é muito simples, mas para aqueles que não têm nenhuma base de programação no círculo de criptomoedas, eles podem não saber por onde começar. A seguir, trabalharemos para concretizar esse requisito.

Código de estratégia

Definição de parâmetros de estratégia:

Aqui definimos vários parâmetros para controlar operações como a colocação de pedidos.
img

Implementação de código:

pine
function pendingOrders(ordersNum, price, amount, deltaPrice, deltaAmount) { var routineOrders = [] var ordersIDs = [] for (var i = 0 ; i < ordersNum ; i++) { var routine = exchange.Go("Buy", price + i * deltaPrice, amount + i * deltaAmount) routineOrders.push(routine) Sleep(ApiReqInterval) } for (var i = 0 ; i < routineOrders.length ; i++) { var orderId = routineOrders[i].wait() if (orderId) { ordersIDs.push(orderId) Log("成功挂单", orderId) } } return ordersIDs } function main() { if (symbol == "null" || pendingPrice == -1 || pendingAmount == -1 || pendingPrice == -1 || deltaPrice == -1 || deltaAmount == -1) { throw "参数设置错误" } exchange.SetCurrency(symbol) // 屏蔽错误信息 SetErrorFilter("GetDepth") while (true) { var msg = "" var depth = exchange.GetDepth() if (!depth || (depth.Bids.length == 0 && depth.Asks.length == 0)) { // 没有深度 msg = "没有深度数据,等待!" Sleep(500) } else { // 获取到深度 Log("并发下单!") var ordersIDs = pendingOrders(ordersNum, pendingPrice, pendingAmount, deltaPrice, deltaAmount) while (true) { var orders = _C(exchange.GetOrders) if (orders.length == 0) { Log("当前挂单个数0,停止运行") return } var tbl = { type: "table", title: "当前挂单", cols: ["id", "价格", "数量"], rows: [] } _.each(orders, function(order) { tbl.rows.push([order.Id, order.Price, order.Amount]) }) LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`") Sleep(500) } } LogStatus(_D(), msg) } }

A estratégia detecta a API de câmbio e a interface do livro de ordens. Uma vez que os dados do livro de ordens estão disponíveis, a estratégia usa a função exchange.Go para colocar ordens. Após fazer um pedido, o status do pedido pendente atual será verificado em um loop. A estratégia não foi realmente testada. Aqui está apenas uma referência de design de código. Aqueles que estiverem interessados ​​podem modificar e adicionar funções para uso.

Estratégia completa: https://www.fmz.com/strategy/358383

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)