資源の読み込みに... 荷物...

氷山委託 (購入) - ジェイソン

作者: リン・ハーンジェイソン・M・J開催日:2021年4月12日 (火) 10:00:35
タグ:パイソン氷山

1. 前提:氷山は,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き, この記事では,大の戦略を引用しています.https://www.fmz.com/strategy/188435基本的には大の戦略とほとんど変わらないが,書き方は少し粗略である.

2.前因大量取引を行う場合,取引金額が大きいため,購入/販売したい通貨の市場価格に影響を与える可能性があります.引いた売り上げも増やしましたプレート│ │ 引き上げ:価格を引き上げ,コインの価格を上げ 2 チェンジ:価格に関係なく,コインを直接売り,コインの価格を下げる 3 取引通貨 ストック:取引に使用される通貨,BTC/USDT取引対を例として,BTCは取引通貨です4 料金通貨 バランス: BTC/USDT取引対の例として,ユーザーの料金通貨.USDTは価格通貨です

アイスマンの委託:オペレーション: オーダーを自動的に分割する複数の委託顧客が設定した価格戦略と最新の買/売価格に基づいて,自動小注文をします.前回の委託が完全に取引された場合,または最新の価格が現在の委託から大きく偏った場合,自動的に再委託します.効果: 大量購入/販売の注文が市場価格に影響を及ぼす影響を減らす.大額決済により価格上昇を防ぐために,自分の購入コストを増加させる売れたら,売れる.売り上げが大きくなり,価格が下がるため,売り上げの利益が減少するのを防ぐこと

データのパラメータ対照:1.委託価格=最新購入価格1X ((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で再測することをお勧めします.

策略が不十分で,通り過ぎたいと願う大が2つ指差している.


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


関連コンテンツ

もっと見る