Ice Mountain (diperintahkan untuk dibeli) - Jason

Penulis:Jason_MJ, Tanggal: 2021-04-12 10:00:35
Tag:PythonGunung es

1. Prasyarat:"Saya tidak tahu apa yang akan terjadi jika saya tidak bisa menulis", katanya. Artikel ini terutama merujuk pada strategi Daeng:https://www.fmz.com/strategy/188435Secara umum, strategi yang digunakan tidak jauh berbeda dengan strategi yang digunakan oleh para guru, namun tulisan yang digunakan agak kasar.

2.前因Saat melakukan pembelian dan penjualan digital currency dalam jumlah besar, mungkin karena jumlah transaksi yang lebih besar dapat mempengaruhi harga pasar mata uang yang ingin Anda beli / jual.MenarikAnda bisa membeli barang dengan jumlah yang besar.PiringSaya tidak tahu. 1 tarik: menaikkan harga, menaikkan harga mata uang 2 Pengecer: menjual mata uang secara langsung, terlepas dari harga, membuat harga mata uang turun 3 Mata uang yang diperdagangkan Saham: Mata uang yang digunakan untuk diperdagangkan, contohnya pasangan perdagangan BTC/USDT.BTC adalah mata uang perdagangan4 Nilai Mata Uang Balance: Mata Uang yang ditagih pengguna, contohnya pasangan transaksi BTC/USDT.USDT adalah mata uang harga

"Semoga kita bisa kembali ke masa lalu", katanya.Operasi: Menggambarkan pembagian pesanan besar secara otomatis menjadiBanyak TugasUntuk melakukan pembelian, Anda harus melakukan pembelian secara otomatis sesuai dengan harga jual beli terbaru dan kebijakan harga yang ditetapkan oleh pelanggan.Otomatis diulang jika pesanan sebelumnya diperdagangkan sepenuhnya atau harga terbarunya sangat berbeda dari pesanan saat iniEfek: Mengurangi pengaruh pembelian besar/pesanan jual pada harga pasar, dan dapat dilakukan pembelian besarMencegah peningkatan biaya pembelian karena harga yang meningkat karena pembayaran besarJika Anda menjual dalam jumlah besar, Anda bisa mendapatkannya.Mencegah penurunan keuntungan penjualan Anda karena permintaan besar yang menyebabkan harga turun

Perbandingan parameter data:

  1. Harga komisi = harga pembelian terakhir 1 X ((1- kedalaman komisi)
  2. Depth of actual market order = (Harga transaksi akhir - Harga order terakhir) /Harga order terakhir
  3. Jumlah pembelian secara acak = rata-rata jumlah pembelian secara acak X ((100 - rata-rata titik terapung tunggal) % + (jumlah titik terapung tunggal rata-rata X2) % X rata-rata jumlah pembelian secara acak X angka acak 0 - 1
  4. Jumlah yang tersedia = mata uang yang digunakan untuk menghitung harga, jumlah pembelian yang dilakukan secara acak, jumlah pembelian yang tersisa minimal
  5. Jumlah pembelian = jumlah yang tersedia / harga yang diberikan
  6. Total jumlah pembelian yang tersisa = Total jumlah pembelian - (mata uang akun awal - mata uang akun)

Peraturan:

  1. Otomatis ditarik jika harga transaksi terbaru melebihi kedalaman X2 dari komisi (menunjukkan bahwa deviasinya terlalu besar)
  2. Menyimpan tugas ketika total transaksi strategi sama dengan jumlah total tugas
  3. Harga transaksi terbaru lebih tinggi dari batas tertinggi harga pembelian berhenti diperintahkan
  4. Menerima kembali pesanan harga pembelian di bawah batas tertinggi pada harga transaksi terbaru

Parameter utama:

  1. Jumlah pembelian
  2. Jumlah pembelian
  3. Menugaskan kedalaman
  4. Harga tertinggi
  5. Interval ronde harga
  6. Jumlah pembelian tunggal dengan nilai rata-rata
  7. Jumlah transaksi minimal

Pikiran:

  1. Dapatkan semua pesanan yang belum selesai dan batalkan pesanan
  2. Mendapatkan saldo akun initialization untuk menilai apakah jumlah pembelian lebih besar dari total
  3. Perhitungan harga
  4. Menghitung jumlah pembelian tunggal
  5. Menghitung jumlah yang tersedia
  6. Menghitung jumlah pembelian
  7. Melakukan pembelian
  8. Waktu istirahat
  9. Memutuskan apakah pesanan terakhir Anda berhasil
  10. Sukses Mengekspor Log
  11. Kegagalan untuk menilai apakah penyimpangan terlalu besar dan terlalu besar harus dibatalkan

Saran

  1. Rekomendasi untuk menggunakan ETH_USDT

Taktiknya tidak sempurna, dan orang-orang yang ingin lewat menunjuk 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 banyak