آئس مینڈک (خریداری) - جیسن

مصنف:جیسن_ایم جے، تاریخ: 2021-04-12 10:00:35
ٹیگز:پائیتھونآئس برگ

1۔ پیش گوئی:اس کے علاوہ ، اس کے بارے میں مزید معلومات حاصل کرنے کے لئے یہاں کلک کریں: اس مضمون میں اس کی حکمت عملی کا حوالہ دیا گیا ہے:https://www.fmz.com/strategy/188435عام طور پر ، اس کی حکمت عملی ڈاگ کی طرح ہی ہے ، لیکن اس کی تحریر بھی کچھ گہری ہے۔ یہ بنیادی طور پر تعارف سیکھنے کے لئے استعمال ہوتا ہے۔ زیادہ ہدایات۔

2.前因جب بڑی مقدار میں ڈیجیٹل کرنسی کی خریداری کی جاتی ہے تو ، اس کی وجہ یہ ہوسکتی ہے کہ تجارت کی بڑی رقم اس کرنسی کی مارکیٹ کی قیمت کو متاثر کرے جس کی آپ خریدنا / فروخت کرنا چاہتے ہیں۔پلٹائیںآپ کو ایک بڑی تعداد میں فروخت کر سکتے ہیں.چٹنی◄ ایک کھینچنا: قیمتوں میں اضافہ، کرنسی کی قیمتوں میں اضافہ 2 ڈیل: کرنسیوں کی قیمتوں میں کمی لانے کے لئے ، قیمتوں سے قطع نظر ، براہ راست کرنسیوں کی فروخت 3 تجارت کی کرنسی اسٹاک: تجارت کے لئے استعمال ہونے والی کرنسی ، مثال کے طور پر بی ٹی سی / یو ایس ڈی ٹی ٹریڈنگ جوڑی ،بی ٹی سی تجارت کی کرنسی ہے4 قیمتوں کا تعین کرنسی بیلنس: صارف کی قیمتوں کا تعین کرنسی، مثال کے طور پر بی ٹی سی / یو ایس ڈی ٹی ٹریڈنگ جوڑی،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"])))        


متعلقہ

مزید