O recurso está a ser carregado... Carregamento...

O iceberg foi encomendado (e comprado) por Jason

Autora:Jason_MJ, Data: 2021-04-12 10:00:35
Tags:PythonMontanha de gelo

1. Pré-requisitos:A primeira vez que aprendi a escrever estratégias, fui contratado por Ice Mountain: O artigo refere-se principalmente à estratégia de Daeng:https://www.fmz.com/strategy/188435Em geral, a estratégia não é muito diferente da da Big Bang, mas a escrita é um pouco mais grosseira.

2.前因Quando se compra e vende moedas digitais em grande quantidade, o preço de mercado das moedas que se deseja comprar / vender pode ser afetado pelo grande volume de transações.Tire o discoO que é que você está a fazer?Discos de barroNão, não é. 1o Disco: puxa o preço, eleva o preço da moeda 2 - A venda direta de moedas, independentemente do preço, faz com que o preço caia 3 Moedas de negociação: Moedas usadas para negociação, como o par de negociação BTC/USDT,BTC é uma moeda de troca.4 Balance de moeda de preço: moeda de preço do usuário, por exemplo, em um par de transações BTC/USDT.O USDT é uma moeda de preço

O iceberg foi encarregado de:Operação: consiste em subdividir automaticamente a encomenda de uma grande encomendaComissõesA partir de agora, o cliente pode fazer pedidos automáticos com base no preço de compra/venda mais recente e na estratégia de preços definida pelo cliente.Reencaminhamento automático de uma encomenda quando a encomenda anterior é totalmente negociada ou quando o preço mais recente se desvia significativamente da actual.Efeito: reduzir o impacto do pedido de compra/venda em grande quantidade no preço do mercado, permitindo a compra em grande quantidade.Prevenção de aumentar o seu próprio custo de compra por causa do aumento do preço de um grande pagamentoA maioria das pessoas não sabe o que fazer.Prevenção da redução do lucro da sua venda por causa de um grande volume de encomendas causando preços baixos

Contraste de parâmetros de dados:1. Preço da encomenda = 1 preço da última compra X ((1- profundidade da encomenda) 2. Profundidade de encomenda de mercado real = (preço final de transação - preço da última encomenda) / preço da última encomenda 3. Número de compras individuais aleatórias = Número de compras individuais média X ((100-número de pontos flutuantes individuais) % + (número de pontos flutuantes individuais X2) % X Número de compras individuais média X Número aleatório de 0 a 1 4. A quantidade disponível = a moeda de contabilização, a quantidade de compras aleatórias, o mínimo de quantidade total de compras restantes 5. Quantidade de compras = quantidade disponível/preço da encomenda 6. Total de compras restantes = Total de compras - ((Curso de contabilização inicial - Curso de contabilização)

Regras:1. Retirada automática quando o preço da transação mais recente exceder a profundidade da encomenda X2 (indica que o desvio é muito grande) 2. Parar o encomendamento quando o total de transações da estratégia for igual ao total de encomendas 3. O preço da transação mais recente é superior ao limite máximo. 4. Restituir o contrato a preços inferiores ao limite máximo de compra no preço mais recente de transação

Os principais parâmetros:1. O valor da compra 2. Quantidade de compras individuais 3. Profundidade de Encomenda 4. O preço mais alto 5. Intervalo de consulta de preços 6. Número de compras únicas 7. Volume mínimo de transações

O que é isso?1. Obter todos os pedidos pendentes e cancelar os pedidos 2. Obter o saldo da conta de inicialização para determinar se é maior do que o valor total da compra 3. Cálculo do preço do contrato 4. Calcular o número de compras únicas 5. Calcular a quantidade disponível 6. Calcular o número de compras 7. Execução de compras 8. Horário de descanso 9. Julgar se a última encomenda foi bem sucedida 10. Exportar logs com sucesso 11. Fracassou em determinar se o desvio é grande demais e se é grande demais para ser cancelado

Sugestões1. Recomenda-se o retestamento com o ETH_USDT

A estratégia não é perfeita e os ladrões que querem passar apontam para um ou dois.


import random


def main():
    # 获取账户所有未成交订单
    Log("取消所有未成交订单")
    orders = _C(exchange.GetOrders)
    if len(orders) > 0:
        for i in range(len(orders)):
            exchange.CancelOrder(orders[i]["Id"])
            Sleep(priceInterval*1000)

    # 对比账户余额
    Log("获取用户初始化账户")
    initAccount = _C(exchange.GetAccount)
    if initAccount["Balance"] < buyAmount:
        Log("账户余额不足")
        return
    
    #比较单笔购买数量均值*市场买一价是否大于账户余额
    ticker = _C(exchange.GetTicker)
    if (ticker['Last'] * buyNum) > initAccount['Balance']:
        Log("单次购买均值价格大于账户余额,请调整参数")
        return

    lastBuyPrice = 0

    while (True):
        Sleep(priceInterval*1000)
        #获取账户信息
        account = _C(exchange.GetAccount)
        #获取当下行情
        ticker = _C(exchange.GetTicker)
        # 上次购买价格不为空,查看订单是否完成,没有完成则取消
        if lastBuyPrice > 0:
            orders1 = exchange.GetOrders()
            if len(orders1) > 0:
                for j in range(len(orders1)):
                    #计算实际市场委托深度
                    if ticker["Last"] > lastBuyPrice and ((ticker["Last"] - lastBuyPrice)/lastBuyPrice) > (2* (depthStatus/100)):
                        Log("委托价格偏离过多,最新成交价:",ticker["Last"],"委托价",lastBuyPrice)
                        exchange.CancelOrder(orders1[j]["Id"])
                        lastBuyPrice = 0
                continue
            else:
                Log("买单完成, 累计花费:", _N(initAccount["Balance"] - account["Balance"]), "平均买入价:", _N((initAccount["Balance"] - account["Balance"]) / (account["Stocks"] - initAccount["Stocks"])))
                lastBuyPrice = 0
                continue     
        else:
            Log("剩余余额:",account["Balance"])
            #委托价格 = 最新买一价*(1-委托深度/100)
            entrustPrice = _N(ticker["Buy"]*(1-depthStatus/100))
            Log("委托价格:",entrustPrice)
            #判断委托价格是否大于最高价格限定
            if entrustPrice > highPrice:
                continue
            #随机购买数量 = 单次购买数量均值 * ((100-单次均值浮点数)/100)+(单次均值浮点数*2 /100* 单次购买数量均值 *随机数0~1)  
            randomBuyNum = (buyNum*((100-buyOncePoint)/100))+(buyOncePoint*2/100 *buyNum*random.random())
            #可用数量金额 
            useMoney = min(account["Balance"],randomBuyNum,buyAmount - (initAccount["Balance"] - account["Balance"]))
            #购买数量
            orderBuyNum = _N(useMoney/entrustPrice)
            Log("交易数量:",orderBuyNum)
            #判断是否小于最小交易量
            if orderBuyNum < minBuyNum:
                break
            #因为要扣手续费,所以大概为账户99.7%
            if (entrustPrice*orderBuyNum)>(account["Balance"]*0.997):
                Log("金额为",(entrustPrice*orderBuyNum))
                Log("账户余额为",(account["Balance"]))
                continue
            #更新上次购买价格
            lastBuyPrice = entrustPrice
            #下单
            exchange.Buy(entrustPrice,orderBuyNum)
            
    account = _C(exchange.GetAccount)  
    Log("冰山委托买单完成,共计花费:",_N(initAccount["Balance"]-account["Balance"]),"平均单价为:",_N((initAccount["Balance"]-account["Balance"])/(account["Stocks"]-initAccount["Stocks"])))        


Relacionado

Mais informações