Penghantaran Ice Mountain (Membeli) - Jason

Penulis:Jason_MJ, Tarikh: 2021-04-12 10:00:35
Tag:PythonGunung ais

1. Peruntukan:Di sini, saya akan berkongsi dengan anda semua tentang cara-cara yang boleh digunakan untuk menulis. Artikel ini merujuk kepada strategi Daeng:https://www.fmz.com/strategy/188435Secara amnya, strategi yang digunakan tidak jauh berbeza dengan strategi yang digunakan oleh guru besar, penulisan agak kasar.

2.前因Apabila membeli dan menjual mata wang digital secara besar-besaran, mungkin kerana jumlah urus niaga yang lebih besar, harga pasaran mata wang yang ingin anda beli / jual akan dipengaruhi.TarikanSaya tidak tahu apa yang akan berlaku.CangkirSaya tidak tahu. 1 tarik: menaikkan harga, menaikkan harga mata wang 2 Pemasaran: Jual mata wang secara langsung tanpa mengira harga, menyebabkan harga turun 3 Mata wang dagangan Saham: Mata wang yang digunakan untuk dagangan, contohnya pasangan dagangan BTC/USDT.BTC adalah mata wang dagangan4 Mata wang yang ditagih: Mata wang yang ditagih oleh pengguna, contohnya pasangan dagangan BTC/USDT.USDT adalah mata wang harga

Perintah gunung ais:Operasi: Mengikat pesanan besar secara automatik kepadaPerintah BerbilangPerintah kecil dibuat secara automatik mengikut harga beli/jual terkini dan strategi harga yang ditetapkan oleh pelanggan.Perintah semula secara automatik apabila pesanan sebelumnya telah ditukar sepenuhnya atau harga terkini jelas menyimpang dari pesanan semasaKesan: Mengurangkan kesan pembelian besar/pesanan jual pada harga pasaran, apabila membeli besar, anda boleh membeli lebih banyak daripada yang anda mahukan.Mencegah kos pembelian anda meningkat kerana bayaran besar menyebabkan kenaikan hargaApabila dijual secara besar-besaran, boleh.Mencegah keuntungan jualan anda berkurangan kerana jumlah pesanan yang besar menyebabkan harga yang rendah

Perbandingan parameter data:

  1. Harga penghantaran = harga 1 pembelian terbaru X ((1- kedalaman penghantaran)
  2. Kedalaman penghantaran pasaran sebenar = (harga transaksi akhir - harga penghantaran terakhir) / harga penghantaran terakhir
  3. Jumlah pembelian tunggal rawak = purata jumlah pembelian tunggal X ((100 - bilangan titik terapung purata tunggal) % + (bilangan titik terapung purata tunggal X2) % X purata bilangan pembelian tunggal X purata bilangan rawak 0 ~ 1
  4. Jumlah yang tersedia = Mata wang yang digunakan untuk mengambil harga akaun, jumlah pembelian secara rawak, jumlah pembelian baki minimum
  5. Jumlah pembelian = jumlah yang tersedia / harga tempahan
  6. Jumlah baki pembelian = Jumlah pembelian - ((mata wang akaun awal - mata wang akaun)

Peraturan:

  1. Penarikan semula automatik apabila harga transaksi terkini melebihi kedalaman X2 dari tempahan tersebut (menunjukkan penyimpangan terlalu besar)
  2. Hentikan tugas apabila jumlah urus niaga strategi sama dengan jumlah tugas keseluruhan
  3. Harga transaksi terbaru melebihi had maksimum harga pembelian berhenti menugaskan
  4. Perintah untuk memulihkan harga pembelian di bawah had maksimum harga transaksi terkini

Parameter utama:

  1. Jumlah pembelian
  2. Jumlah pembelian tunggal
  3. Menugaskan kedalaman
  4. Harga tertinggi
  5. Jangkaan perbincangan harga
  6. Jumlah pembelian tunggal
  7. Jumlah dagangan minimum

Berfikir:

  1. Dapatkan semua pesanan yang belum dibayar dan batalkan pesanan
  2. Mendapatkan baki akaun inisialisasi untuk menentukan sama ada jumlah pembelian lebih besar daripada jumlah keseluruhan
  3. Mengira harga tempahan
  4. Mengira jumlah pembelian tunggal
  5. Mengira jumlah yang tersedia
  6. Mengira jumlah pembelian
  7. Melakukan pembelian
  8. Masa rehat
  9. Menentukan sama ada pesanan terakhir anda berjaya
  10. Keluaran log berjaya
  11. Kegagalan untuk menilai sama ada penyimpangan terlalu besar dan terlalu besar perlu dibatalkan

Cadangan

  1. Disyorkan menggunakan ETH_USDT untuk mengulangi

Taktik tidak sempurna, orang yang ingin lewat menunjukkan satu atau dua.


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


Berkaitan

Lebih lanjut