Địa chỉ: http://t.co/vcvc3vc3vc0

Tác giả:Jason_MJ, Ngày: 2021-04-12 10:00:35
Tags:PythonBăng đá

Đề xuất:Những người mới bắt đầu học cách viết chiến lược đã được Ice Mountain ủy thác: Bài viết này đề cập đến chiến lược của Dung:https://www.fmz.com/strategy/188435Về cơ bản, chiến lược này không giống như chiến lược của Đại học, và chữ viết cũng khá thô sơ.

2.前因Khi mua và bán tiền kỹ thuật số lớn, có thể ảnh hưởng đến giá thị trường của đồng tiền mà bạn muốn mua / bán vì số tiền giao dịch lớn hơn.Kéo raBạn có thể mua hàng với số lượng lớnBàn đĩa‖ 1 kéo: kéo giá lên, tăng giá đồng 2 Chuỗi giá: bán đồng tiền ngay lập tức bất kể giá cả, làm cho giá đồng giảm 3 Tiền tệ giao dịch: Tiền tệ được sử dụng để giao dịch, ví dụ như cặp giao dịch BTC/USDT,BTC là một đồng tiền giao dịch4 Đồng tiền tính giá Balance: Đồng tiền được người dùng tính giá, ví dụ như cặp giao dịch BTC/USDT, đồng tiền được người dùng tính giá, đồng tiền được người dùng tính giá, đồng tiền được người dùng tính giá.USDT là đồng tiền giá trị

Những người bị ảnh hưởng là những người bị ảnh hưởng.Hoạt động: là tự động phân chia đơn đặt hàng lớn thànhNhiều nhiệm vụTrong khi đó, các công ty khác cũng có thể tham gia vào các hoạt động này.Tự động tái ủy nhiệm khi lệnh trước được giao dịch hoàn toàn hoặc giá mới nhất đi ngược lại với lệnh hiện tạiHiệu quả: Giảm tác động của đơn mua/bán lớn đến giá thị trường, khi mua lớn, bạn có thể mua nhiều hơn.Tránh tăng chi phí mua hàng của mình do mua hàng lớn làm tăng giáTrong khi đó, các nhà đầu tư khác cũng có thể mua hàng.Ngăn ngừa giảm lợi nhuận bán hàng của mình do số lượng lớn đơn hàng bán hàng gây ra giá giảm

Các yếu tố dữ liệu được so sánh:

  1. Giá giao dịch = giá mua mới nhất 1 X ((1- độ sâu giao dịch)
  2. Độ sâu ủy thác thị trường thực tế = (giá trị giao dịch cuối cùng - giá ủy thác cuối cùng) / giá ủy thác cuối cùng
  3. Số lượng mua đơn ngẫu nhiên = số lượng mua đơn trung bình X ((100 - số điểm nổi trung bình) % + (số điểm nổi trung bình X2) % X số lượng mua đơn trung bình X số lượng ngẫu nhiên 0 ~ 1
  4. Số tiền có sẵn = Tiền tệ tính toán tài khoản, số lượng mua một lần ngẫu nhiên, số lượng mua tổng số tiền còn lại tối thiểu
  5. Số lượng mua = số tiền có sẵn / giá ủy thác
  6. Tổng số mua còn lại = Tổng số mua - ((Tiền định giá tài khoản ban đầu - Tiền định giá tài khoản)

Quy tắc:

  1. Tự động rút khi giá giao dịch mới nhất vượt quá độ sâu X2 của ủy quyền (định nghĩa là sự lệch quá lớn)
  2. Dừng giao dịch khi tổng giao dịch của chiến lược bằng với tổng số giao dịch
  3. Giá giao dịch mới nhất cao hơn giới hạn tối đa giá mua dừng giao dịch
  4. Lệnh khôi phục giá mua ở mức giao dịch mới nhất thấp hơn giới hạn tối đa

Các thông số chính:

  1. Số tiền mua
  2. Số lượng mua đơn
  3. Trách nhiệm sâu sắc
  4. Giá cao nhất
  5. Khoảng thời gian hỏi giá
  6. Số lượng mua đơn trung bình
  7. Số lượng giao dịch nhỏ nhất

Tôi nghĩ:

  1. Nhận tất cả các đơn đặt hàng chưa hoàn thành và hủy đơn đặt hàng
  2. Nhận số dư tài khoản khởi tạo để xác định số tiền mua lớn hơn tổng số tiền
  3. Tính toán giá ủy thác
  4. Tính toán số lượng mua hàng một lần
  5. Tính toán số tiền có sẵn
  6. Tính toán số lượng mua hàng
  7. Thực hiện mua
  8. Thời gian nghỉ
  9. Xác định thành công của đơn đặt hàng trước
  10. Xuất log thành công
  11. Thất bại trong việc xác định xem sự sai lệch là quá lớn hay không, quá lớn cần phải bị thu hồi

Lời khuyên

  1. Đề nghị sử dụng ETH_USDT

Những người muốn đi ngang qua chỉ một hoặc hai


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


Có liên quan

Thêm nữa