Encomendado por el iceberg (comprado) - Jason

El autor:¿ Qué haces?, Fecha: 2021-04-12 10:00:35
Las etiquetas:PythonEl iceberg

1. Propuesta:El primer libro de estrategias para aprender a escribir fue encargado por Ice Mountain: En este artículo se hace referencia principalmente a la estrategia de Daeng:https://www.fmz.com/strategy/188435En general, la estrategia no es muy diferente a la de la escuela, pero la escritura es un poco más grosera.

2.前因En el caso de la compra y venta masiva de monedas digitales, el precio de mercado de las monedas que se desean comprar / vender puede verse afectado por el mayor monto de la transacción.El tiradorEn la actualidad, la mayor parte de las ventas se realizan en línea.El plato¿Qué es esto? 1 tirador: eleva el precio, sube el precio de la moneda 2 Discos: Vender monedas directamente sin importar el precio, lo que hace que caigan. 3 Monedas de intercambio: las monedas que se utilizan para el intercambio, como el par de transacciones BTC/USDT.BTC es una moneda de intercambio.4 Balance de la moneda de facturación: la moneda de facturación del usuario, por ejemplo, el par de transacciones BTC/USDT.El USDT es una moneda de facturación

La montaña de hielo fue encargada:Operación: se trata de desglosar automáticamente el encargo de un gran pedido enEncargos múltiplesEn la actualidad, el servicio de compra y venta de compras en línea ofrece servicios de compra y venta de compras en línea, así como servicios de compra y venta en línea.Reemplazo automático de la última orden cuando se ha negociado en su totalidad o cuando el precio más reciente se desvía significativamente de la orden actual.Efectos: Reducir el impacto de la compra/venta masiva en el precio del mercado, lo que permite comprar en grandes cantidades.Prevenir el aumento de los costos de sus compras debido a la subida de los precios de los grandes pagosEn el caso de las ventas masivas, se puede comprar.Para evitar que los precios bajos causados por la gran cantidad de pedidos reduzcan sus ganancias de venta.

Los parámetros de datos comparados:

  1. Precio de la comisión = precio de compra más reciente 1 X ((1- profundidad de la comisión)
  2. Profundidad de la comisión de mercado real = (precio final de la transacción - precio de la última comisión) / precio de la última comisión
  3. Número de compras al azar = número de compras al azar media X ((100-número de puntos flotantes al azar) % + (número de puntos flotantes al azar X2) % X Número de compras al azar media X Número al azar 0~1
  4. Cantidad disponible = moneda de facturación de la cuenta, cantidad de compras al azar en una sola compra, mínimo de la cantidad total restante de compras
  5. Cantidad de compras = cantidad disponible/precio del encargo
  6. Total de las compras restantes = Total de las compras - (moneda de la cuenta inicial - moneda de la cuenta)

Las reglas:

  1. Se retira automáticamente cuando el precio de la transacción más reciente excede la profundidad de la comisión X2 (indica que la desviación es demasiado grande)
  2. Detener el encargo cuando el total de transacciones de la estrategia es igual al número total de encargos
  3. El precio de la transacción más reciente está por encima del límite máximo.
  4. En el último precio de transacción por debajo del límite máximo de compra de precios de reinstalación de la orden

Los principales parámetros:

  1. La cantidad de compra
  2. Número de compras
  3. Profundidad de la Encomenda
  4. El precio más alto
  5. Intervalos de consulta de precios
  6. Número de compras de una sola vez
  7. El volumen mínimo de transacciones

¿Qué es lo que está pasando?

  1. Obtener todos los pedidos pendientes y cancelarlos
  2. Obtener el saldo de la cuenta inicial para determinar si es mayor que la cantidad total comprada
  3. Calcular el precio de la comisión
  4. Calcula el número de compras únicas
  5. Calculación de la cantidad disponible
  6. Cálculo de las compras
  7. Ejecutar las compras
  8. Tiempo de descanso
  9. Determinar si el último pedido fue un éxito
  10. Logos exportados con éxito
  11. El fracaso en determinar si la desviación es demasiado grande y si es demasiado grande debe ser revocada

Sugerencias

  1. Se recomienda utilizar el ETH_USDT para la prueba de retraso

La estrategia no es perfecta, los ladrones que quieren pasar apuntan uno o dos.


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"])))        


Relacionados

Más.