"Айсберг" (покупается) - Джейсон

Автор:Джейсон_МДЖ, Дата: 2021-04-12 10:00:35
Тэги:ПитонАйсберг

1. Предупреждение:Первый курс обучения стратегии написания поручен Айсиману: В статье основное внимание уделяется стратегии Дая:https://www.fmz.com/strategy/188435В целом, стратегия не сильно отличается от стратегии, используемой в большом магазине, а письменность более грубая.

2.前因При проведении крупной покупки и продажи цифровых валют, возможно, из-за большей суммы сделки влияет на рыночную цену валюты, которую вы хотите купить/продать.ВытягиватьВ этом случае вы можете купить их в большом количестве.ДискиЯ не знаю. Первый рычаг: повышение цены, повышение курса монеты. Второй способ - продать монету напрямую, независимо от цены, что приведет к снижению цены 3 Торговые валюты Сток: валюты, используемые для торговли, например, BTC/USDT.BTC является валютой для торговли.4 Валютный баланс: Валюта, которую пользователь оценивает, например, в BTC/USDT.USDT является валютой с ценой

"Это было очень важно для меня.Операция: это автоматическое разделение больших заказов наМногочисленные порученияВ соответствии с текущей ценой покупки/продажи и ценовой политикой, установленной клиентом, автоматически выполняются небольшие заказы.Автоматическое возобновление заказа, если предыдущий заказ был полностью продан или последней ценой значительно отклонился от текущегоЭффект: уменьшение влияния крупных покупок/продаж на рыночную цену, когда делаются крупные покупки,Предотвращение увеличения собственных расходов на покупку из-за повышения цены за большие платежиЕсли вы продаёте их в больших количествах, вы можете купить их.Предотвращение уменьшения прибыли от продажи из-за низких цен, вызванных большим количеством заказов.

Сравнение параметров:

  1. Цена заказа = последняя цена за покупку 1 X ((1- глубина заказа)
  2. Действительная глубина заказа на рынке = (конечная цена сделки - последняя цена заказа) / последняя цена заказа
  3. Количество случайных разовых покупок = среднее количество случайных покупок X ((100 - среднее количество случайных плавающих точек) % + (количество случайных средних плавающих точек X2) % X среднее количество случайных покупок X 0−1
  4. Сумма доступная = Валюта счета, количество покупок в случайном порядке, минимальное количество оставшейся суммы.
  5. Количество покупок = доступная сумма / цена заказа
  6. Общая сумма оставшейся покупки = Общая сумма покупки - ((валюта первоначального счета - валюта счета))

Правила:

  1. Автоматическое отзыв, если цена последней сделки превышает глубину X2 от данного поручения (отклонение слишком большое)
  2. Прекратить поручение, когда общий объем транзакций стратегии равен общему количеству поручений
  3. Последние сделки с ценой выше максимального ограничения.
  4. Возобновить заказ на покупку цены, находящейся ниже максимального ограничения по последней сделке

Основные параметры:

  1. Сумма покупки
  2. Количество покупок
  3. Обязанность глубины
  4. Самая высокая цена
  5. Продолжительность ценовых опросов
  6. Среднее количество разовых покупок
  7. Минимальный объем

Я подумал:

  1. Получить все оставшиеся заказы и отменить их
  2. Получить баланс на внедренном счете, чтобы определить, больше ли сумма покупки
  3. Расчет цены заказчика
  4. Расчет количества разовых покупок
  5. Расчет суммы
  6. Расчет количества покупок
  7. Исполнение покупки
  8. Определенное время перерыва
  9. Оценить, был ли последний заказ успешным
  10. Успешный экспорт журналов
  11. Неудача в определении того, слишком ли большое отклонение, или слишком большое отклонение

Рекомендации

  1. Рекомендуется использовать ETH_USDT

Неудачная стратегия, и те, кто хочет пройти мимо, указывают на две точки.


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


Связанные

Больше